package org.sef4j.callstack.stattree.printers;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.io.StringWriter;
import org.apache.commons.io.IOUtils;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.sef4j.callstack.stattree.CallTreeNodeTstBuilder;
import org.sef4j.core.helpers.proptree.model.PropTreeNode;
public class PathJsonCallTreePrinterTest {
protected StringWriter buffer;
protected PrintWriter out;
protected PathJsonCallTreePrinter sut;
@Before
public void setup() {
buffer = new StringWriter();
out = new PrintWriter(buffer);
PathJsonCallTreePrinter.Builder builder = new PathJsonCallTreePrinter.Builder();
builder.withPropPerTypePrinter(CallTreeNodeTstBuilder.defaultPerTypePrinters(false, "{", "}")); // upcast to abstract builder!.. cannot chain method
this.sut = builder.build(out);
}
@Test
public void testRecursivePrintNodes() throws IOException {
// Prepare
PropTreeNode root = CallTreeNodeTstBuilder.buildTree(null, null);
// Perform
sut.recursivePrintNodes(root, -1);
// Post-check
out.flush();
String res = buffer.toString();
System.out.println(res);
String resourceName = "PathJsonCallTreePrintTest-testRecursivePrintNodes.txt";
// FileUtils.write(new File("src/test/resources/org/sef4j/callstack/stattree/printers/" + resourceName), res);
InputStream expectedStream = getClass().getResourceAsStream(resourceName);
String expectedRes = IOUtils.toString(expectedStream);
Assert.assertEquals(expectedRes, res);
}
}