import org.junit.Test; import static org.junit.Assert.*; public class ComputeLCATest { private BinaryTreeParent<Integer> expected; private BinaryTreeParent<Integer> node0; private BinaryTreeParent<Integer> node1; @Test public void LCA1() throws Exception { expected = new BinaryTreeParent<>(0); expected.setLeft(new BinaryTreeParent<>(1)); node0 = (BinaryTreeParent<Integer>) expected.left; expected.setRight(new BinaryTreeParent<>(2)); node1 = (BinaryTreeParent<Integer>) expected.right; test(expected, node0, node1); } @Test public void LCA2() throws Exception { expected = new BinaryTreeParent<>(0); expected.setRight(new BinaryTreeParent<>(1)); node0 = expected; ((BinaryTreeParent<Integer>)expected.right).setRight(new BinaryTreeParent<>(2)); node1 = (BinaryTreeParent<Integer>) expected.right.right; test(expected, node0, node1); } @Test public void LCA3() throws Exception { expected = null; node0 = new BinaryTreeParent<>(0); node1 = new BinaryTreeParent<>(1); test(expected, node0, node1); } private void test(BinaryTreeParent<Integer> expected, BinaryTreeParent<Integer> node0, BinaryTreeParent<Integer> node1) { assertEquals(expected, ComputeLCA.LCA(node0, node1)); } }