1. Project Clover database Tue Dec 20 2016 21:24:09 CET
  2. Package org.xwiki.rendering.wikimodel.util

File SectionBuilderTest.java

 

Code metrics

0
96
17
2
237
166
17
0.18
5.65
8.5
1

Classes

Class Line # Actions
SectionBuilderTest 28 86 0% 7 0
1.0100%
SectionBuilderTest.PrintListener 30 10 0% 10 0
1.0100%
 

Contributing tests

This file is covered by 4 tests. .

Source view

1    /*
2    * See the NOTICE file distributed with this work for additional
3    * information regarding copyright ownership.
4    *
5    * This is free software; you can redistribute it and/or modify it
6    * under the terms of the GNU Lesser General Public License as
7    * published by the Free Software Foundation; either version 2.1 of
8    * the License, or (at your option) any later version.
9    *
10    * This software is distributed in the hope that it will be useful,
11    * but WITHOUT ANY WARRANTY; without even the implied warranty of
12    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13    * Lesser General Public License for more details.
14    *
15    * You should have received a copy of the GNU Lesser General Public
16    * License along with this software; if not, write to the Free
17    * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
18    * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
19    */
20    package org.xwiki.rendering.wikimodel.util;
21   
22    import junit.framework.TestCase;
23   
24    /**
25    * @version $Id: 92a0b6dac4eb2cb9c732598f9876abfa0ad4f41b $
26    * @since 4.0M1
27    */
 
28    public class SectionBuilderTest extends TestCase
29    {
 
30    protected static class PrintListener implements ISectionListener<String>
31    {
32    final StringBuffer fBuf = new StringBuffer();
33   
 
34  6 toggle public void beginDocument(IPos<String> pos)
35    {
36  6 fBuf.append("<doc" + n(pos) + ">");
37    }
38   
 
39  15 toggle public void beginSection(IPos<String> pos)
40    {
41  15 fBuf.append("<s" + n(pos) + ">");
42    }
43   
 
44  15 toggle public void beginSectionContent(IPos<String> pos)
45    {
46  15 fBuf.append("<c" + n(pos) + ">");
47    }
48   
 
49  13 toggle public void beginSectionHeader(IPos<String> pos)
50    {
51  13 fBuf.append("<h" + n(pos) + ">");
52    }
53   
 
54  6 toggle public void endDocument(IPos<String> pos)
55    {
56  6 fBuf.append("</doc" + n(pos) + ">");
57    }
58   
 
59  15 toggle public void endSection(IPos<String> pos)
60    {
61  15 fBuf.append("</s" + n(pos) + ">");
62    }
63   
 
64  15 toggle public void endSectionContent(IPos<String> pos)
65    {
66  15 fBuf.append("</c" + n(pos) + ">");
67    }
68   
 
69  13 toggle public void endSectionHeader(IPos<String> pos)
70    {
71  13 fBuf.append("</h" + n(pos) + ">");
72    }
73   
 
74  98 toggle private String n(IPos<String> pos)
75    {
76  98 return "[" + pos.getData() + "]" + "-" + pos.getDocumentLevel()
77    + "-" + pos.getHeaderLevel();
78    }
79   
 
80  38 toggle @Override
81    public String toString()
82    {
83  38 return fBuf.toString();
84    }
85    }
86   
87    SectionBuilder<String> fBuilder;
88   
89    private PrintListener fListener;
90   
91    /**
92    * @param name
93    */
 
94  4 toggle public SectionBuilderTest(String name)
95    {
96  4 super(name);
97    }
98   
 
99  38 toggle private String check(String prev, String delta)
100    {
101  38 String test = fListener.toString();
102  38 assertEquals(prev + delta, test);
103  38 return test;
104    }
105   
 
106  4 toggle @Override
107    protected void setUp() throws Exception
108    {
109  4 fListener = new PrintListener();
110  4 fBuilder = new SectionBuilder<String>(fListener);
111    }
112   
 
113  1 toggle public void testDocumentLevels()
114    {
115  1 String prev = "";
116   
117  1 fBuilder.beginDocument("X");
118  1 prev = check(prev, "<doc[X]-1-0>");
119  1 fBuilder.beginDocument("Y");
120  1 prev = check(prev, "<doc[Y]-2-0>");
121  1 fBuilder.endDocument();
122  1 prev = check(prev, "</doc[Y]-2-0>");
123  1 fBuilder.endDocument();
124  1 prev = check(prev, "</doc[X]-1-0>");
125    }
126   
 
127  1 toggle public void testHeaderLevels()
128    {
129   
130  1 fBuilder.beginDocument("X");
131  1 String prev = "";
132  1 prev = check(prev, "<doc[X]-1-0>");
133   
134  1 fBuilder.beginHeader(1, "A");
135  1 prev = check(prev, "<s[A]-1-1><h[A]-1-1>");
136  1 fBuilder.endHeader();
137  1 prev = check(prev, "</h[A]-1-1><c[A]-1-1>");
138   
139  1 fBuilder.beginHeader(3, "B");
140  1 prev = check(prev, "<s[B]-1-2><c[B]-1-2><s[B]-1-3><h[B]-1-3>");
141  1 fBuilder.endHeader();
142  1 prev = check(prev, "</h[B]-1-3><c[B]-1-3>");
143   
144  1 fBuilder.beginHeader(3, "C");
145  1 prev = check(prev, "</c[B]-1-3></s[B]-1-3><s[C]-1-3><h[C]-1-3>");
146  1 fBuilder.endHeader();
147  1 prev = check(prev, "</h[C]-1-3><c[C]-1-3>");
148   
149  1 fBuilder.beginHeader(2, "D");
150  1 prev = check(prev,
151    "</c[C]-1-3></s[C]-1-3></c[B]-1-2></s[B]-1-2><s[D]-1-2><h[D]-1-2>");
152  1 fBuilder.endHeader();
153  1 prev = check(prev, "</h[D]-1-2><c[D]-1-2>");
154   
155  1 fBuilder.beginHeader(3, "E");
156  1 prev = check(prev, "<s[E]-1-3><h[E]-1-3>");
157  1 fBuilder.endHeader();
158  1 prev = check(prev, "</h[E]-1-3><c[E]-1-3>");
159   
160  1 fBuilder.endDocument();
161  1 prev = check(prev, "</c[E]-1-3></s[E]-1-3>" + "</c[D]-1-2></s[D]-1-2>"
162    + "</c[A]-1-1></s[A]-1-1>" + "</doc[X]-1-0>");
163    }
164   
 
165  1 toggle public void testWithoutLevels()
166    {
167  1 fBuilder.beginDocument("X");
168  1 String prev = "";
169  1 prev = check(prev, "<doc[X]-1-0>");
170   
171  1 fBuilder.beginHeader(1, "A");
172  1 prev = check(prev, "<s[A]-1-1><h[A]-1-1>");
173  1 fBuilder.endHeader();
174  1 prev = check(prev, "</h[A]-1-1><c[A]-1-1>");
175   
176  1 fBuilder.beginHeader(3, "B");
177  1 prev = check(prev, "<s[B]-1-2><c[B]-1-2><s[B]-1-3><h[B]-1-3>");
178  1 fBuilder.endHeader();
179  1 prev = check(prev, "</h[B]-1-3><c[B]-1-3>");
180   
181  1 fBuilder.beginHeader(3, "C");
182  1 prev = check(prev, "</c[B]-1-3></s[B]-1-3><s[C]-1-3><h[C]-1-3>");
183  1 fBuilder.endHeader();
184  1 prev = check(prev, "</h[C]-1-3><c[C]-1-3>");
185   
186  1 fBuilder.beginHeader(2, "D");
187  1 prev = check(prev,
188    "</c[C]-1-3></s[C]-1-3></c[B]-1-2></s[B]-1-2><s[D]-1-2><h[D]-1-2>");
189  1 fBuilder.endHeader();
190  1 prev = check(prev, "</h[D]-1-2><c[D]-1-2>");
191   
192  1 fBuilder.beginHeader(3, "E");
193  1 prev = check(prev, "<s[E]-1-3><h[E]-1-3>");
194  1 fBuilder.endHeader();
195  1 prev = check(prev, "</h[E]-1-3><c[E]-1-3>");
196   
197  1 fBuilder.endDocument();
198  1 prev = check(prev, "</c[E]-1-3></s[E]-1-3>" + "</c[D]-1-2></s[D]-1-2>"
199    + "</c[A]-1-1></s[A]-1-1>" + "</doc[X]-1-0>");
200    }
201   
 
202  1 toggle public void testInSubDocument()
203    {
204  1 String prev = "";
205  1 fBuilder.beginDocument("X");
206  1 prev = check(prev, "<doc[X]-1-0>");
207   
208  1 fBuilder.beginHeader(1, "A");
209  1 prev = check(prev, "<s[A]-1-1><h[A]-1-1>");
210  1 fBuilder.endHeader();
211  1 prev = check(prev, "</h[A]-1-1><c[A]-1-1>");
212   
213    // BEGIN DOCUMENT Y [
214   
215  1 fBuilder.beginDocument("Y");
216  1 prev = check(prev, "<doc[Y]-2-0>");
217   
218  1 fBuilder.beginHeader(1, "YA");
219  1 prev = check(prev, "<s[YA]-2-1><h[YA]-2-1>");
220  1 fBuilder.endHeader();
221  1 prev = check(prev, "</h[YA]-2-1><c[YA]-2-1>");
222   
223  1 fBuilder.endDocument();
224  1 prev = check(prev, "</c[YA]-2-1></s[YA]-2-1></doc[Y]-2-0>");
225   
226    // ] END DOCUMENT Y
227   
228  1 fBuilder.beginHeader(2, "B");
229  1 prev = check(prev, "<s[B]-1-2><h[B]-1-2>");
230  1 fBuilder.endHeader();
231  1 prev = check(prev, "</h[B]-1-2><c[B]-1-2>");
232   
233  1 fBuilder.endDocument();
234  1 prev = check(prev, "</c[B]-1-2></s[B]-1-2>" + "</c[A]-1-1></s[A]-1-1>"
235    + "</doc[X]-1-0>");
236    }
237    }