Files
java-tutorials/data-structures/src/test/java/com/baeldung/printbinarytree/PrintingBinaryTreeModelUnitTest.java
T

179 lines
6.1 KiB
Java
Raw Normal View History

2019-12-07 02:08:35 +01:00
package com.baeldung.printbinarytree;
2019-11-20 00:33:12 +01:00
2019-11-20 16:01:30 +01:00
import static org.junit.jupiter.api.Assertions.assertEquals;
import java.io.ByteArrayOutputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import org.junit.After;
2019-11-20 00:33:12 +01:00
import org.junit.Before;
import org.junit.Test;
2019-12-07 02:08:35 +01:00
import com.baeldung.printbinarytree.BinaryTreeModel;
import com.baeldung.printbinarytree.BinaryTreePrinter;
2019-11-20 16:01:30 +01:00
public class PrintingBinaryTreeModelUnitTest {
2019-11-20 00:33:12 +01:00
private BinaryTreeModel balanced;
2019-11-20 16:01:30 +01:00
private BinaryTreeModel leftSkewed;
private BinaryTreeModel rightSkewed;
private OutputStream output;
2019-11-20 00:33:12 +01:00
@Before
public void setup() {
balanced = createBalancedTree();
2019-11-20 16:01:30 +01:00
leftSkewed = createLeftUnbalancedTree();
rightSkewed = createRightUnbalancedTree();
output = new ByteArrayOutputStream();
System.setOut(new PrintStream(output));
}
@After
public void tearDown() {
System.setOut(System.out);
2019-11-20 00:33:12 +01:00
}
2019-11-30 08:33:51 +01:00
2019-11-20 00:33:12 +01:00
private BinaryTreeModel createBalancedTree() {
2019-11-30 08:33:51 +01:00
2019-11-20 00:33:12 +01:00
BinaryTreeModel root = new BinaryTreeModel("root");
2019-11-30 08:33:51 +01:00
2019-11-20 00:33:12 +01:00
BinaryTreeModel node1 = new BinaryTreeModel("node1");
BinaryTreeModel node2 = new BinaryTreeModel("node2");
root.setLeft(node1);
root.setRight(node2);
2019-11-30 08:33:51 +01:00
2019-11-20 00:33:12 +01:00
BinaryTreeModel node3 = new BinaryTreeModel("node3");
BinaryTreeModel node4 = new BinaryTreeModel("node4");
node1.setLeft(node3);
node1.setRight(node4);
2019-11-30 08:33:51 +01:00
node2.setLeft(new BinaryTreeModel("node5"));
node2.setRight(new BinaryTreeModel("node6"));
2019-11-20 00:33:12 +01:00
BinaryTreeModel node7 = new BinaryTreeModel("node7");
node3.setLeft(node7);
2019-11-30 08:33:51 +01:00
node7.setLeft(new BinaryTreeModel("node8"));
node7.setRight(new BinaryTreeModel("node9"));
2019-11-20 00:33:12 +01:00
return root;
}
private BinaryTreeModel createLeftUnbalancedTree() {
2019-11-20 16:01:30 +01:00
BinaryTreeModel root = new BinaryTreeModel("root");
2019-11-20 00:33:12 +01:00
BinaryTreeModel node1 = new BinaryTreeModel("node1");
root.setLeft(node1);
2019-11-30 08:33:51 +01:00
root.setRight(new BinaryTreeModel("node2"));
2019-11-20 00:33:12 +01:00
BinaryTreeModel node3 = new BinaryTreeModel("node3");
node1.setLeft(node3);
BinaryTreeModel node4 = new BinaryTreeModel("node4");
node3.setLeft(node4);
BinaryTreeModel node5 = new BinaryTreeModel("node5");
node4.setLeft(node5);
BinaryTreeModel node6 = new BinaryTreeModel("node6");
node5.setLeft(node6);
BinaryTreeModel node7 = new BinaryTreeModel("node7");
node6.setLeft(node7);
2019-11-30 08:33:51 +01:00
node7.setLeft(new BinaryTreeModel("node8"));
2019-11-20 00:33:12 +01:00
return root;
}
private BinaryTreeModel createRightUnbalancedTree() {
2019-11-20 16:01:30 +01:00
BinaryTreeModel root = new BinaryTreeModel("root");
2019-11-20 00:33:12 +01:00
BinaryTreeModel node2 = new BinaryTreeModel("node2");
2019-11-30 08:33:51 +01:00
root.setLeft(new BinaryTreeModel("node1"));
2019-11-20 00:33:12 +01:00
root.setRight(node2);
BinaryTreeModel node3 = new BinaryTreeModel("node3");
node2.setRight(node3);
BinaryTreeModel node4 = new BinaryTreeModel("node4");
node3.setRight(node4);
BinaryTreeModel node5 = new BinaryTreeModel("node5");
node4.setRight(node5);
BinaryTreeModel node6 = new BinaryTreeModel("node6");
node5.setRight(node6);
BinaryTreeModel node7 = new BinaryTreeModel("node7");
node6.setRight(node7);
2019-11-30 08:33:51 +01:00
node7.setRight(new BinaryTreeModel("node8"));
2019-11-20 00:33:12 +01:00
return root;
}
@Test
public void givenBinaryTreeModelBalanced_whenPrintWithBinaryTreePrinter_thenProduceCorrectOutput() {
2019-11-20 16:01:30 +01:00
StringBuilder expected = new StringBuilder();
expected.append("root").append("\n");
expected.append("├──node1").append("\n");
expected.append("│ ├──node3").append("\n");
expected.append("│ │ └──node7").append("\n");
expected.append("│ │ ├──node8").append("\n");
expected.append("│ │ └──node9").append("\n");
expected.append("│ └──node4").append("\n");
expected.append("└──node2").append("\n");
expected.append(" ├──node5").append("\n");
expected.append(" └──node6");
2019-12-07 02:08:35 +01:00
new BinaryTreePrinter(balanced).print(System.out);
2019-11-20 16:01:30 +01:00
assertEquals(expected.toString(), output.toString());
2019-11-20 00:33:12 +01:00
}
@Test
public void givenBinaryTreeModelLeftUnbalanced_whenPrintWithBinaryTreePrinter_thenProduceCorrectOutput() {
2019-11-20 16:01:30 +01:00
StringBuilder expected = new StringBuilder();
expected.append("root").append("\n");
expected.append("├──node1").append("\n");
expected.append("│ └──node3").append("\n");
expected.append("│ └──node4").append("\n");
expected.append("│ └──node5").append("\n");
expected.append("│ └──node6").append("\n");
expected.append("│ └──node7").append("\n");
expected.append("│ └──node8").append("\n");
expected.append("└──node2");
2019-12-07 02:08:35 +01:00
new BinaryTreePrinter(leftSkewed).print(System.out);
2019-11-20 16:01:30 +01:00
assertEquals(expected.toString(), output.toString());
2019-11-20 00:33:12 +01:00
}
@Test
public void givenBinaryTreeModelRightUnbalanced_whenPrintWithBinaryTreePrinter_thenProduceCorrectOutput() {
2019-11-20 16:01:30 +01:00
StringBuilder expected = new StringBuilder();
expected.append("root").append("\n");
expected.append("├──node1").append("\n");
expected.append("└──node2").append("\n");
expected.append(" └──node3").append("\n");
expected.append(" └──node4").append("\n");
expected.append(" └──node5").append("\n");
expected.append(" └──node6").append("\n");
expected.append(" └──node7").append("\n");
expected.append(" └──node8");
2019-12-07 02:08:35 +01:00
new BinaryTreePrinter(rightSkewed).print(System.out);
2019-11-20 16:01:30 +01:00
assertEquals(expected.toString(), output.toString());
2019-11-20 00:33:12 +01:00
}
}