2
2
3
3
import static org .junit .jupiter .api .Assertions .assertEquals ;
4
4
import static org .junit .jupiter .api .Assertions .assertFalse ;
5
+ import static org .junit .jupiter .api .Assertions .assertThrows ;
5
6
import static org .junit .jupiter .api .Assertions .assertTrue ;
6
7
7
8
import java .util .Arrays ;
@@ -16,19 +17,16 @@ public class SplayTreeTest {
16
17
@ MethodSource ("traversalOrders" )
17
18
public void testTraversal (SplayTree .TraverseOrder traverseOrder ) {
18
19
SplayTree tree = createComplexTree ();
19
-
20
- // Perform traversal based on the provided order and verify the result
21
20
List <Integer > expected = getExpectedTraversalResult (traverseOrder );
22
21
List <Integer > result = tree .traverse (traverseOrder );
22
+
23
23
assertEquals (expected , result );
24
24
}
25
25
26
26
@ ParameterizedTest
27
27
@ MethodSource ("valuesToTest" )
28
28
public void testSearch (int value ) {
29
29
SplayTree tree = createComplexTree ();
30
-
31
- // Search for the value in the tree
32
30
assertTrue (tree .search (value ));
33
31
}
34
32
@@ -37,23 +35,53 @@ public void testSearch(int value) {
37
35
public void testDelete (int value ) {
38
36
SplayTree tree = createComplexTree ();
39
37
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
+
42
55
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 ));
44
71
}
45
72
46
- // Method to provide different traversal orders as parameters
47
73
private static Stream <SplayTree .TraverseOrder > traversalOrders () {
48
74
return Stream .of (SplayTree .TraverseOrder .IN_ORDER , SplayTree .TraverseOrder .PRE_ORDER , SplayTree .TraverseOrder .POST_ORDER );
49
75
}
50
76
51
- // Method to provide values for search and delete tests as parameters
52
77
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 );
54
83
}
55
84
56
- // Method to get the expected traversal result based on the provided order
57
85
private List <Integer > getExpectedTraversalResult (SplayTree .TraverseOrder traverseOrder ) {
58
86
List <Integer > expected = new LinkedList <>();
59
87
switch (traverseOrder ) {
@@ -72,7 +100,6 @@ private List<Integer> getExpectedTraversalResult(SplayTree.TraverseOrder travers
72
100
return expected ;
73
101
}
74
102
75
- // Method to create a complex SplayTree instance for testing
76
103
private SplayTree createComplexTree () {
77
104
SplayTree tree = new SplayTree ();
78
105
tree .insert (5 );
0 commit comments