12 {
13 String[] keys={"a","b","c","d","e","f"};
14 int n=keys.length;
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 BinarySearchTree<String,String> tree=new BinarySearchTree<String,String>();
35
36 for (int[] p : new Permutations(n)) {
37 for (int[] q : new Permutations(n)) {
38 for (int i : p) {
39 String k=tree.find(keys[i]);
40 assertEquals(k,null);
41 tree.insert(keys[i],keys[i]);
42 k=tree.find(keys[i]);
43 assertTrue(k!=null);
44 assertTrue(k.compareTo(keys[i])==0);
45 tree.checkConsistency();
46 }
47
48 assertTrue(tree.getMinimum().getValue().compareTo(keys[0])==0);
49 assertTrue(tree.getMaximum().getValue().compareTo(keys[n-1])==0);
50
51 {
52 int i=0;
53 for (BinarySearchTree<String,String>.Cursor c : tree) {
54 assertTrue(c.getKey().compareTo(keys[i])==0);
55 assertTrue(c.getValue().compareTo(keys[i])==0);
56 ++i;
57 }
58 i=0;
59 for (BinarySearchTree<String,String>.Cursor c : tree.range(null,null)) {
60 assertTrue(c.getKey().compareTo(keys[i])==0);
61 assertTrue(c.getValue().compareTo(keys[i])==0);
62 ++i;
63 }
64 i=1;
65 for (BinarySearchTree<String,String>.Cursor c :
66 tree.range(keys[1],keys[4])) {
67 assertTrue(c.getKey().compareTo(keys[i])==0);
68 assertTrue(c.getValue().compareTo(keys[i])==0);
69 ++i;
70 }
71 assertSame(i,4);
72 }
73
74 for (int i : q) {
75 String k=tree.find(keys[i]);
76 assertTrue(k!=null);
77 assertTrue(k.compareTo(keys[i])==0);
78 tree.remove(keys[i]);
79 k=tree.find(keys[i]);
80 assertEquals(k,null);
81 tree.checkConsistency();
82 }
83 }
84 assertTrue(tree.isEmpty());
85 }
86 }