1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.myfaces.tobago.internal.context;
21
22 import org.apache.myfaces.tobago.internal.mock.faces.AbstractTobagoTestBase;
23 import org.apache.myfaces.tobago.internal.webapp.XmlResponseWriter;
24 import org.junit.Assert;
25 import org.junit.Test;
26
27 import javax.faces.context.FacesContext;
28 import javax.swing.tree.DefaultMutableTreeNode;
29 import javax.swing.tree.TreeNode;
30 import java.io.IOException;
31 import java.io.StringWriter;
32
33 public class ResponseWriterDividerUnitTest extends AbstractTobagoTestBase {
34
35 @Test
36 public void test() throws IOException {
37
38 StringWriter stringWriter = new StringWriter();
39 getFacesContext().setResponseWriter(new XmlResponseWriter(stringWriter, "text/xml", "ISO-8859-1"));
40
41 DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");
42 DefaultMutableTreeNode colors = new DefaultMutableTreeNode("Colors");
43 DefaultMutableTreeNode numbers = new DefaultMutableTreeNode("Numbers");
44 DefaultMutableTreeNode integers = new DefaultMutableTreeNode("Integers");
45 DefaultMutableTreeNode doubles = new DefaultMutableTreeNode("Doubles");
46 root.add(colors);
47 root.add(numbers);
48 numbers.add(integers);
49 numbers.add(doubles);
50 integers.add(new DefaultMutableTreeNode("1"));
51 integers.add(new DefaultMutableTreeNode("2"));
52 doubles.add(new DefaultMutableTreeNode("2.7182"));
53 doubles.add(new DefaultMutableTreeNode("3.1415"));
54
55 render(getFacesContext(), root);
56
57 ResponseWriterDivider divider = ResponseWriterDivider.getInstance(getFacesContext(), "unit test");
58 divider.writeOutAndCleanUp(getFacesContext());
59
60 String expected
61 = "(Root)\n"
62 + "Colors\n"
63 + "Numbers\n"
64 + "(/Root)\n"
65 + "(Numbers)\n"
66 + "Integers\n"
67 + "Doubles\n"
68 + "(/Numbers)\n"
69 + "(Integers)\n"
70 + "1\n"
71 + "2\n"
72 + "(/Integers)\n"
73 + "(Doubles)\n"
74 + "2.7182\n"
75 + "3.1415\n"
76 + "(/Doubles)\n";
77
78 Assert.assertEquals(expected, stringWriter.toString());
79 }
80
81 private void render(FacesContext facesContext, DefaultMutableTreeNode node) throws IOException {
82 ResponseWriterDivider divider = ResponseWriterDivider.getInstance(facesContext, "unit test");
83
84 String label = (String) node.getUserObject();
85
86
87 if (!node.isRoot()) {
88 facesContext.getResponseWriter().write(label + "\n");
89 }
90
91
92 if (node.getChildCount() > 0) {
93 divider.activateBranch(facesContext);
94 facesContext.getResponseWriter().write("(" + label + ")\n");
95 for (int i = 0; i < node.getChildCount(); i++) {
96 TreeNode sub = node.getChildAt(i);
97 render(facesContext, (DefaultMutableTreeNode) sub);
98 }
99 facesContext.getResponseWriter().write("(/" + label + ")\n");
100 divider.passivateBranch(facesContext);
101 }
102 }
103 }