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

BinarySearchTreeTest.java 4.8KB

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