lots of exercises in java... from https://github.com/exercism/java

BinarySearchTreeTest.java 5.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. import java.util.Arrays;
  2. import java.util.Collections;
  3. import java.util.List;
  4. import static org.junit.Assert.assertEquals;
  5. import static org.junit.Assert.assertNotNull;
  6. import org.junit.Ignore;
  7. import org.junit.Test;
  8. public class BinarySearchTreeTest {
  9. @Test
  10. public void dataIsRetained() {
  11. BinarySearchTree<Integer> binarySearchTree = new BinarySearchTree<>();
  12. final int expected = 4;
  13. binarySearchTree.insert(expected);
  14. final BinarySearchTree.Node<Integer> root = binarySearchTree.getRoot();
  15. assertNotNull(root);
  16. final int actual = root.getData();
  17. assertEquals(expected, actual);
  18. }
  19. @Ignore("Remove to run test")
  20. @Test
  21. public void insertsLess() {
  22. BinarySearchTree<Character> binarySearchTree = new BinarySearchTree<>();
  23. final char expectedRoot = '4';
  24. final char expectedLeft = '2';
  25. binarySearchTree.insert(expectedRoot);
  26. binarySearchTree.insert(expectedLeft);
  27. final BinarySearchTree.Node<Character> root = binarySearchTree.getRoot();
  28. assertNotNull(root);
  29. final BinarySearchTree.Node<Character> left = root.getLeft();
  30. assertNotNull(left);
  31. final char actualRoot = root.getData();
  32. final char actualLeft = left.getData();
  33. assertEquals(expectedLeft, actualLeft);
  34. assertEquals(expectedRoot, actualRoot);
  35. }
  36. @Ignore("Remove to run test")
  37. @Test
  38. public void insertsSame() {
  39. BinarySearchTree<String> binarySearchTree = new BinarySearchTree<>();
  40. final String expectedRoot = "4";
  41. final String expectedLeft = "4";
  42. binarySearchTree.insert(expectedRoot);
  43. binarySearchTree.insert(expectedLeft);
  44. final BinarySearchTree.Node<String> root = binarySearchTree.getRoot();
  45. assertNotNull(root);
  46. final BinarySearchTree.Node<String> left = root.getLeft();
  47. assertNotNull(left);
  48. final String actualRoot = root.getData();
  49. final String actualLeft = left.getData();
  50. assertEquals(expectedLeft, actualLeft);
  51. assertEquals(expectedRoot, actualRoot);
  52. }
  53. @Ignore("Remove to run test")
  54. @Test
  55. public void insertsRight() {
  56. BinarySearchTree<Integer> binarySearchTree = new BinarySearchTree<>();
  57. final int expectedRoot = 4;
  58. final int expectedRight = 5;
  59. binarySearchTree.insert(expectedRoot);
  60. binarySearchTree.insert(expectedRight);
  61. final BinarySearchTree.Node<Integer> root = binarySearchTree.getRoot();
  62. assertNotNull(root);
  63. final BinarySearchTree.Node<Integer> right = root.getRight();
  64. assertNotNull(right);
  65. final int actualRoot = root.getData();
  66. final int actualRight = right.getData();
  67. assertEquals(expectedRight, actualRight);
  68. assertEquals(expectedRoot, actualRoot);
  69. }
  70. @Ignore("Remove to run test")
  71. @Test
  72. public void createsComplexTree() {
  73. BinarySearchTree<Character> binarySearchTree = new BinarySearchTree<>();
  74. List<Character> expected = Collections.unmodifiableList(
  75. Arrays.asList('4', '2', '6', '1', '3', '5', '7')
  76. );
  77. List<Character> treeData = Collections.unmodifiableList(
  78. Arrays.asList('4', '2', '6', '1', '3', '5', '7')
  79. );
  80. treeData.forEach(binarySearchTree::insert);
  81. List<Character> actual = binarySearchTree.getAsLevelOrderList();
  82. assertEquals(expected, actual);
  83. }
  84. @Ignore("Remove to run test")
  85. @Test
  86. public void sortsSingleElement() {
  87. BinarySearchTree<String> binarySearchTree = new BinarySearchTree<>();
  88. List<String> expected = Collections.unmodifiableList(
  89. Collections.singletonList("2")
  90. );
  91. binarySearchTree.insert("2");
  92. List<String> actual = binarySearchTree.getAsSortedList();
  93. assertEquals(expected, actual);
  94. }
  95. @Ignore("Remove to run test")
  96. @Test
  97. public void sortsCollectionOfTwoIfSecondInsertedIsSmallerThanFirst() {
  98. BinarySearchTree<Integer> binarySearchTree = new BinarySearchTree<>();
  99. List<Integer> expected = Collections.unmodifiableList(
  100. Arrays.asList(1, 2)
  101. );
  102. binarySearchTree.insert(2);
  103. binarySearchTree.insert(1);
  104. List<Integer> actual = binarySearchTree.getAsSortedList();
  105. assertEquals(expected, actual);
  106. }
  107. @Ignore("Remove to run test")
  108. @Test
  109. public void sortsCollectionOfTwoIfSecondNumberisSameAsFirst() {
  110. BinarySearchTree<Character> binarySearchTree = new BinarySearchTree<>();
  111. List<Character> expected = Collections.unmodifiableList(
  112. Arrays.asList('2', '2')
  113. );
  114. binarySearchTree.insert('2');
  115. binarySearchTree.insert('2');
  116. List<Character> actual = binarySearchTree.getAsSortedList();
  117. assertEquals(expected, actual);
  118. }
  119. @Ignore("Remove to run test")
  120. @Test
  121. public void sortsCollectionOfTwoIfSecondInsertedIsBiggerThanFirst() {
  122. BinarySearchTree<Character> binarySearchTree = new BinarySearchTree<>();
  123. List<Character> expected = Collections.unmodifiableList(
  124. Arrays.asList('2', '3')
  125. );
  126. binarySearchTree.insert('2');
  127. binarySearchTree.insert('3');
  128. List<Character> actual = binarySearchTree.getAsSortedList();
  129. assertEquals(expected, actual);
  130. }
  131. @Ignore("Remove to run test")
  132. @Test
  133. public void iteratesOverComplexTree() {
  134. BinarySearchTree<String> binarySearchTree = new BinarySearchTree<>();
  135. List<String> expected = Collections.unmodifiableList(
  136. Arrays.asList("1", "2", "3", "5", "6", "7")
  137. );
  138. List<String> treeData = Collections.unmodifiableList(
  139. Arrays.asList("2", "1", "3", "6", "7", "5")
  140. );
  141. treeData.forEach(binarySearchTree::insert);
  142. List<String> actual = binarySearchTree.getAsSortedList();
  143. assertEquals(expected, actual);
  144. }
  145. }