import org.junit.Test;
import static org.junit.Assert.*;
public class ComputeRightSiblingTreeTest {
private BinaryTreeLN<Character> expected;
private BinaryTreeLN<Character> tree;
@Test
public void constructRightSibling1() throws Exception {
expected = new BinaryTreeLN<>('A');
expected.left = new BinaryTreeLN<>('B');
expected.right = new BinaryTreeLN<>('C');
((BinaryTreeLN)expected.left).levelNext = (BinaryTreeLN)expected.right;
tree = new BinaryTreeLN<>('A');
tree.left = new BinaryTreeLN<>('B');
tree.right = new BinaryTreeLN<>('C');
test(expected, tree);
}
@Test
public void constructRightSibling2() throws Exception {
expected = new BinaryTreeLN<>('A');
expected.left = new BinaryTreeLN<>('B');
expected.right = new BinaryTreeLN<>('D');
expected.left.left = new BinaryTreeLN<>('C');
expected.right.left = new BinaryTreeLN<>('E');
expected.right.left.left = new BinaryTreeLN<>('F');
expected.right.right = new BinaryTreeLN<>('G');
expected.right.right.left = new BinaryTreeLN<>('H');
expected.right.right.right = new BinaryTreeLN<>('I');
((BinaryTreeLN)expected.left).levelNext = (BinaryTreeLN)expected.right;
((BinaryTreeLN) expected.left.left).levelNext = (BinaryTreeLN)expected.right.left;
((BinaryTreeLN)expected.right.left).levelNext = (BinaryTreeLN)expected.right.right;
((BinaryTreeLN)expected.right.left.left).levelNext = (BinaryTreeLN) expected.right.right.left;
((BinaryTreeLN)expected.right.right.left).levelNext = (BinaryTreeLN) expected.right.right.right;
tree = new BinaryTreeLN<>('A');
tree.left = new BinaryTreeLN<>('B');
tree.left.left = new BinaryTreeLN<>('C');
tree.right.left = new BinaryTreeLN<>('E');
tree.right.left.left = new BinaryTreeLN<>('F');
tree.right.right = new BinaryTreeLN<>('G');
tree.right.right.left = new BinaryTreeLN<>('H');
tree.right.right.right = new BinaryTreeLN<>('I');
test(expected, tree);
}
public void test(BinaryTreeLN<Character> expected, BinaryTreeLN<Character> tree) {
ComputeRightSiblingTree.constructRightSibling(tree);
assertEquals(expected, tree);
}
}