Clover Coverage Report
Coverage timestamp: Sa Aug 2 2008 13:56:27 CEST
31   247   16   2,58
4   151   0,52   12
12     1,33  
1    
 
  QedeqNotNullTraverserTest       Line # 47 31 16 93,6% 0.9361702
 
  (2)
 
1    /* $Id: QedeqNotNullTraverserTest.java,v 1.1 2008/07/26 07:59:15 m31 Exp $
2    *
3    * This file is part of the project "Hilbert II" - http://www.qedeq.org
4    *
5    * Copyright 2000-2008, Michael Meyling <mime@qedeq.org>.
6    *
7    * "Hilbert II" is free software; you can redistribute
8    * it and/or modify it under the terms of the GNU General Public
9    * License as published by the Free Software Foundation; either
10    * version 2 of the License, or (at your option) any later version.
11    *
12    * This program is distributed in the hope that it will be useful,
13    * but WITHOUT ANY WARRANTY; without even the implied warranty of
14    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15    * GNU General Public License for more details.
16    */
17   
18    package org.qedeq.kernel.bo.control;
19   
20    import java.io.ByteArrayOutputStream;
21    import java.io.IOException;
22    import java.util.Stack;
23   
24    import org.qedeq.base.io.TextOutput;
25    import org.qedeq.base.test.QedeqTestCase;
26    import org.qedeq.base.trace.Trace;
27    import org.qedeq.kernel.base.list.Atom;
28    import org.qedeq.kernel.base.list.Element;
29    import org.qedeq.kernel.base.list.ElementList;
30    import org.qedeq.kernel.bo.service.DefaultModuleAddress;
31    import org.qedeq.kernel.common.ModuleAddress;
32    import org.qedeq.kernel.dto.list.DefaultAtom;
33    import org.qedeq.kernel.dto.list.DefaultElementList;
34    import org.qedeq.kernel.visitor.AbstractModuleVisitor;
35    import org.qedeq.kernel.visitor.QedeqNotNullTraverser;
36    import org.qedeq.kernel.visitor.QedeqVisitor;
37   
38    /**
39    * Test visitor concept for {@link org.qedeq.kernel.bo.visitor.ListVisitor}.
40    * This class doesn't test much existing code directly, but checks that the
41    * {@link org.qedeq.kernel.bo.visitor.QedeqNotNullTraverser} works correctly for
42    * the list part.
43    *
44    * @version $Revision: 1.1 $
45    * @author Michael Meyling
46    */
 
47    public class QedeqNotNullTraverserTest extends QedeqTestCase {
48   
49    /** This class. */
50    private static final Class CLASS = QedeqNotNullTraverserTest.class;
51   
52    private final ByteArrayOutputStream out = new ByteArrayOutputStream();
53   
54    private final TextOutput text = new TextOutput("local", out);
55   
56    private final Stack stack = new Stack();
57   
58    private static ModuleAddress address;
59   
 
60  1 toggle static {
61  1 try {
62  1 address = new DefaultModuleAddress("http://memory.org/sample.xml");
63    } catch (IOException e) {
64  0 e.printStackTrace();
65    }
66    }
67   
68    private final QedeqVisitor visitor = new AbstractModuleVisitor() {
69   
 
70  19 toggle public void visitEnter(Atom atom) {
71  19 handleComma();
72  19 text.print("\"");
73  19 text.print(atom.getString());
74    }
75   
 
76  19 toggle public void visitLeave(Atom atom) {
77  19 text.print("\"");
78    }
79   
 
80  21 toggle public void visitEnter(ElementList list) {
81  21 handleComma();
82  21 text.print(list.getOperator() + "(");
83  21 stack.push(Boolean.FALSE);
84    }
85   
 
86  21 toggle public void visitLeave(ElementList list) {
87  21 text.print(")");
88  21 stack.pop();
89    }
90   
 
91  40 toggle private void handleComma() {
92  40 if (!stack.isEmpty() && ((Boolean) stack.peek()).booleanValue()) {
93  17 text.print(", ");
94    } else {
95  23 if (!stack.isEmpty()) {
96  21 stack.pop();
97  21 stack.push(Boolean.TRUE);
98    }
99    }
100    }
101   
102    };
103   
104    private final QedeqNotNullTraverser trans = new QedeqNotNullTraverser(address,
105    visitor);
106   
107   
108    /**
109    * Constructor.
110    */
 
111  0 toggle public QedeqNotNullTraverserTest() {
112  0 super();
113    }
114   
115    /**
116    * Constructor.
117    *
118    * @param name Test case name.
119    */
 
120  2 toggle public QedeqNotNullTraverserTest(String name) {
121  2 super(name);
122    }
123   
124    /**
125    * Test visitor concept.
126    */
 
127  1 toggle public void testVisit() throws Exception {
128  1 Element el = new DefaultElementList("myOperator", new Element[] {
129    new DefaultAtom("Hello"),
130    new DefaultAtom("Again"),
131    new DefaultElementList("again", new Element[] {
132    new DefaultAtom("one"),
133    new DefaultAtom("two"),
134    new DefaultAtom("three")
135    })
136    });
137   
138  1 trans.accept(el);
139  1 Trace.trace(CLASS, this, "testVisit", out.toString("ISO-8859-1"));
140  1 assertEquals("myOperator(\"Hello\", \"Again\", again(\"one\", \"two\", \"three\"))",
141    out.toString("ISO-8859-1"));
142    }
143   
144    /**
145    * Test generation.
146    */
 
147  1 toggle public void testGeneration() throws Exception {
148  1 Element el = new DefaultElementList("EQUI", new Element[] {
149    new DefaultElementList("PREDCON", new Element[] {
150    new DefaultAtom("equal"),
151    new DefaultElementList("VAR", new Element[] {
152    new DefaultAtom("y"),
153    }),
154    new DefaultElementList("CLASS", new Element[] {
155    new DefaultElementList("VAR", new Element[] {
156    new DefaultAtom("x"),
157    }),
158    new DefaultElementList("PREDVAR", new Element[] {
159    new DefaultAtom("\\phi"),
160    new DefaultElementList("VAR", new Element[] {
161    new DefaultAtom("x"),
162    })
163    })
164    })
165    }),
166    new DefaultElementList("FORALL", new Element[] {
167    new DefaultElementList("VAR", new Element[] {
168    new DefaultAtom("z"),
169    }),
170    new DefaultElementList("EQUI", new Element[] {
171    new DefaultElementList("PREDCON", new Element[] {
172    new DefaultAtom("in"),
173    new DefaultElementList("VAR", new Element[] {
174    new DefaultAtom("z"),
175    }),
176    new DefaultElementList("VAR", new Element[] {
177    new DefaultAtom("y"),
178    })
179    }),
180    new DefaultElementList("PREDCON", new Element[] {
181    new DefaultAtom("in"),
182    new DefaultElementList("VAR", new Element[] {
183    new DefaultAtom("z"),
184    }),
185    new DefaultElementList("CLASS", new Element[] {
186    new DefaultElementList("VAR", new Element[] {
187    new DefaultAtom("x"),
188    }),
189    new DefaultElementList("PREDVAR", new Element[] {
190    new DefaultAtom("\\phi"),
191    new DefaultElementList("VAR", new Element[] {
192    new DefaultAtom("x"),
193    })
194    })
195    })
196    })
197    })
198    })
199    });
200  1 trans.accept(el);
201  1 Trace.trace(CLASS, this, "testGeneration", out.toString("ISO-8859-1"));
202  1 assertEquals("EQUI(PREDCON(\"equal\", VAR(\"y\"), CLASS(VAR(\"x\"), PREDVAR(\"\\phi\","
203    + " VAR(\"x\")))), FORALL(VAR(\"z\"), EQUI(PREDCON(\"in\", VAR(\"z\"), VAR(\"y\")),"
204    + " PREDCON(\"in\", VAR(\"z\"), CLASS(VAR(\"x\"), PREDVAR(\"\\phi\", VAR(\"x\")))))))",
205    out.toString("ISO-8859-1"));
206  1 Trace.trace(CLASS, this, "testGeneration", el.toString());
207    }
208   
 
209  2 toggle protected void setUp() throws Exception {
210  2 super.setUp();
211  2 out.reset();
212    }
213   
 
214  2 toggle protected void tearDown() throws Exception {
215  2 super.tearDown();
216    }
217   
218    /*
219    public void accept(final Element element) throws ModuleDataException {
220    if (element.isList()) {
221    accept(element.getList());
222    } else if (element.isAtom()) {
223    accept(element.getAtom());
224    } else {
225    throw new IllegalArgumentException("unexpected element type: "
226    + element.toString());
227    }
228    }
229   
230    public void accept(final Atom atom) throws ModuleDataException {
231    visitEnter(atom);
232    visitLeave(atom);
233    }
234   
235    public void accept(final ElementList list) throws ModuleDataException {
236    visitEnter(list);
237    for (int i = 0; i < list.size(); i++) {
238    if (i > 0) {
239    text.print(", ");
240    }
241    accept(list.getElement(i));
242    }
243    visitLeave(list);
244    }
245    */
246   
247    }