import java.util.Arrays; import java.util.Collections; import java.util.List; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import org.junit.Ignore; import org.junit.Test; public class BSTTest { @Test public void dataIsRetained() { BST sut = new BST(); final int actual = 4; sut.insert(actual); final BST.Node root = sut.getRoot(); assertNotNull(root); final int expected = root.getData(); assertEquals(expected, actual); } @Test @Ignore public void insertsLess() { BST sut = new BST(); final int expectedRoot = 4; final int expectedLeft = 2; sut.insert(expectedRoot); sut.insert(expectedLeft); final BST.Node root = sut.getRoot(); assertNotNull(root); final BST.Node left = root.getLeft(); assertNotNull(left); final int actualRoot = root.getData(); final int actualLeft = left.getData(); assertEquals(expectedLeft, actualLeft); assertEquals(expectedRoot, actualRoot); } @Test @Ignore public void insertsSame() { BST sut = new BST(); final int expectedRoot = 4; final int expectedLeft = 4; sut.insert(expectedRoot); sut.insert(expectedLeft); final BST.Node root = sut.getRoot(); assertNotNull(root); final BST.Node left = root.getLeft(); assertNotNull(left); final int actualRoot = root.getData(); final int actualLeft = left.getData(); assertEquals(expectedLeft, actualLeft); assertEquals(expectedRoot, actualRoot); } @Test @Ignore public void insertsRight() { BST sut = new BST(); final int expectedRoot = 4; final int expectedRight = 5; sut.insert(expectedRoot); sut.insert(expectedRight); final BST.Node root = sut.getRoot(); assertNotNull(root); final BST.Node right = root.getRight(); assertNotNull(right); final int actualRoot = root.getData(); final int actualRight = right.getData(); assertEquals(expectedRight, actualRight); assertEquals(expectedRoot, actualRoot); } @Test @Ignore public void createsComplexTree() { BST sut = new BST<>(); List expected = Collections.unmodifiableList( Arrays.asList(4, 2, 6, 1, 3, 5, 7) ); List treeData = Collections.unmodifiableList( Arrays.asList(4, 2, 6, 1, 3, 7, 5) ); treeData.forEach(sut::insert); List actual = sut.getAsLevelOrderList(); assertEquals(expected, actual); } @Test @Ignore public void sortsSingleElement() { BST sut = new BST<>(); List expected = Collections.unmodifiableList( Arrays.asList(4) ); sut.insert(4); List actual = sut.getAsSortedList(); assertEquals(expected, actual); } @Test @Ignore public void sortsCollectionOfTwoIfSecondInsertedIsSmallerThanFirst() { BST sut = new BST<>(); List expected = Collections.unmodifiableList( Arrays.asList(2, 4) ); sut.insert(4); sut.insert(2); List actual = sut.getAsSortedList(); assertEquals(expected, actual); } @Test @Ignore public void sortsCollectionOfTwoIfSecondInsertedIsBiggerThanFirst() { BST sut = new BST<>(); List expected = Collections.unmodifiableList( Arrays.asList(4, 5) ); sut.insert(4); sut.insert(5); List actual = sut.getAsSortedList(); assertEquals(expected, actual); } @Test @Ignore public void iteratesOverComplexTree() { BST sut = new BST<>(); List expected = Collections.unmodifiableList( Arrays.asList(1, 2, 3, 4, 5, 6, 7) ); List treeData = Collections.unmodifiableList( Arrays.asList(4, 2, 1, 3, 6, 7, 5) ); treeData.forEach(sut::insert); List actual = sut.getAsSortedList(); assertEquals(expected, actual); } }