Skip to content

Commit cc5dc27

Browse files
committed
ref: add tests
1 parent a3bce0e commit cc5dc27

File tree

1 file changed

+39
-12
lines changed

1 file changed

+39
-12
lines changed

src/test/java/com/thealgorithms/datastructures/trees/SplayTreeTest.java

+39-12
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import static org.junit.jupiter.api.Assertions.assertEquals;
44
import static org.junit.jupiter.api.Assertions.assertFalse;
5+
import static org.junit.jupiter.api.Assertions.assertThrows;
56
import static org.junit.jupiter.api.Assertions.assertTrue;
67

78
import java.util.Arrays;
@@ -16,19 +17,16 @@ public class SplayTreeTest {
1617
@MethodSource("traversalOrders")
1718
public void testTraversal(SplayTree.TraverseOrder traverseOrder) {
1819
SplayTree tree = createComplexTree();
19-
20-
// Perform traversal based on the provided order and verify the result
2120
List<Integer> expected = getExpectedTraversalResult(traverseOrder);
2221
List<Integer> result = tree.traverse(traverseOrder);
22+
2323
assertEquals(expected, result);
2424
}
2525

2626
@ParameterizedTest
2727
@MethodSource("valuesToTest")
2828
public void testSearch(int value) {
2929
SplayTree tree = createComplexTree();
30-
31-
// Search for the value in the tree
3230
assertTrue(tree.search(value));
3331
}
3432

@@ -37,23 +35,53 @@ public void testSearch(int value) {
3735
public void testDelete(int value) {
3836
SplayTree tree = createComplexTree();
3937

40-
// Delete the value from the tree
41-
assertTrue(tree.search(value)); // Ensure value is present before deletion
38+
assertTrue(tree.search(value));
39+
tree.delete(value);
40+
assertFalse(tree.search(value));
41+
}
42+
43+
@ParameterizedTest
44+
@MethodSource("nonExistentValues")
45+
public void testSearchNonExistent(int value) {
46+
SplayTree tree = createComplexTree();
47+
assertFalse(tree.search(value));
48+
}
49+
50+
@ParameterizedTest
51+
@MethodSource("nonExistentValues")
52+
public void testDeleteNonExistent(int value) {
53+
SplayTree tree = createComplexTree();
54+
4255
tree.delete(value);
43-
assertFalse(tree.search(value)); // Ensure value is not present after deletion
56+
assertFalse(tree.search(value));
57+
}
58+
59+
@ParameterizedTest
60+
@MethodSource("valuesToTest")
61+
public void testDeleteThrowsExceptionForEmptyTree(int value) {
62+
SplayTree tree = new SplayTree();
63+
assertThrows(IllegalArgumentException.class, () -> tree.delete(value));
64+
}
65+
66+
@ParameterizedTest
67+
@MethodSource("valuesToTest")
68+
public void testInsertThrowsExceptionForDuplicateKeys(int value) {
69+
SplayTree tree = createComplexTree();
70+
assertThrows(IllegalArgumentException.class, () -> tree.insert(value));
4471
}
4572

46-
// Method to provide different traversal orders as parameters
4773
private static Stream<SplayTree.TraverseOrder> traversalOrders() {
4874
return Stream.of(SplayTree.TraverseOrder.IN_ORDER, SplayTree.TraverseOrder.PRE_ORDER, SplayTree.TraverseOrder.POST_ORDER);
4975
}
5076

51-
// Method to provide values for search and delete tests as parameters
5277
private static Stream<Integer> valuesToTest() {
53-
return Stream.of(1, 5, 10); // Values present in the complex tree
78+
return Stream.of(1, 5, 10);
79+
}
80+
81+
private static Stream<Integer> nonExistentValues() {
82+
return Stream.of(0, 11, 15);
5483
}
5584

56-
// Method to get the expected traversal result based on the provided order
5785
private List<Integer> getExpectedTraversalResult(SplayTree.TraverseOrder traverseOrder) {
5886
List<Integer> expected = new LinkedList<>();
5987
switch (traverseOrder) {
@@ -72,7 +100,6 @@ private List<Integer> getExpectedTraversalResult(SplayTree.TraverseOrder travers
72100
return expected;
73101
}
74102

75-
// Method to create a complex SplayTree instance for testing
76103
private SplayTree createComplexTree() {
77104
SplayTree tree = new SplayTree();
78105
tree.insert(5);

0 commit comments

Comments
 (0)