import org.junit.Test; import java.util.Arrays; import java.util.List; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; public class GenerateBinaryTreesTest { private List<BinaryTree<Integer>> expected; private int numNodes; @Test public void generateAllBinaryTrees1() throws Exception { expected = Arrays.asList( new BinaryTree<>(0) ); numNodes = 1; test(expected, numNodes); } @Test public void generateAllBinaryTrees2() throws Exception { expected = Arrays.asList( new BinaryTree<>(0,null,new BinaryTree<>(0)), new BinaryTree<>(0,new BinaryTree<>(0),null) ); numNodes = 2; test(expected, numNodes); } @Test public void generateAllBinaryTrees3() throws Exception { expected = Arrays.asList( new BinaryTree<>(0,null,new BinaryTree<>(0,new BinaryTree<>(0),null)), new BinaryTree<>(0,null,new BinaryTree<>(0,null, new BinaryTree<>(0))), new BinaryTree<>(0,new BinaryTree<>(0,new BinaryTree<>(0),null), null), new BinaryTree<>(0,new BinaryTree<>(0,null, new BinaryTree<>(0)), null), new BinaryTree<>(0,new BinaryTree<>(0),new BinaryTree<>(0)) ); numNodes = 3; test(expected, numNodes); } private void test(List<BinaryTree<Integer>> expected, int numNodes) { List<BinaryTree<Integer>> result = GenerateBinaryTrees.generateAllBinaryTrees(numNodes); assertEquals(expected.size(), result.size()); expected.forEach( i -> { assertTrue(result.remove(i)); }); } }