forked from levelp/java_04
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBinaryTreeTest.java
More file actions
98 lines (88 loc) · 3.05 KB
/
BinaryTreeTest.java
File metadata and controls
98 lines (88 loc) · 3.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
import org.junit.Test;
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
import static org.junit.Assert.*;
/**
* Тестирование дерева поиска
*/
public class BinaryTreeTest {
/**
* Тестирование добавления в дерево поиска элементов
*/
@Test
public void testTree() {
// Интерфейс = Класс с реализацией этого интерфейса
BinaryTree<Integer> tree = new BinaryTree<>();
assertNull(tree.root);
assertFalse(tree.find(3));
tree.add(3);
assertNotNull(tree.root);
assertEquals(3, tree.root.value.intValue());
assertTrue(tree.find(3));
assertFalse(tree.find(2));
// Добавить новое значение
tree.add(2);
assertNotNull(tree.root);
assertNotNull(tree.root.left);
assertEquals(2, tree.root.left.value.intValue());
assertTrue(tree.find(2));
assertTrue(tree.find(3));
// Добавляем узел с большим значением
tree.add(334);
assertTrue(tree.find(2));
assertTrue(tree.find(3));
assertTrue(tree.find(334));
assertFalse(tree.find(7789));
}
/**
* Большой случайный тест
*/
@Test
public void testBig() {
// Генератор случайных чисел
Random random = new Random();
// Проверочный set
Set<Integer> test = new HashSet<>();
SearchTree<Integer> tree = new BinaryTree<>();
assertEquals("Пока что дерево пустое", 0, tree.deep());
int valueHit = 0;
int valueNotFound = 0;
for (int i = 0; i < 1000; i++) {
int value = random.nextInt(10000);
test.add(value);
tree.add(value);
assertTrue(tree.find(value));
int value2 = random.nextInt(10000);
if (test.contains(value2)) {
assertTrue(tree.find(value2));
valueHit++;
} else {
assertFalse(tree.find(value2));
valueNotFound++;
}
}
System.out.println("value: hit " + valueHit + ", not found: " + valueNotFound);
}
@Test
public void testBinaryTreeNode() {
//-->
// Интерфейс = Класс с реализацией этого интерфейса
BinaryTreeNode<Integer> tree = new BinaryTreeNode<>();
assertFalse(tree.find(3));
tree.add(3);
assertTrue(tree.find(3));
assertFalse(tree.find(2));
// Добавить новое значение
tree.add(2);
assertTrue(tree.find(2));
assertTrue(tree.find(3));
// Добавляем узел с большим значением
tree.add(334);
assertTrue(tree.find(2));
assertTrue(tree.find(3));
assertTrue(tree.find(334));
assertFalse(tree.find(7789));
//<--
}
}