source: trunk/autoquest-plugin-html-test/src/test/java/de/ugoe/cs/autoquest/plugin/html/HTMLLogParserTest.java @ 1496

Last change on this file since 1496 was 1496, checked in by pharms, 10 years ago
  • adapted parsing of HTML files to have more power in specifying replacements
  • Property svn:mime-type set to text/plain
File size: 9.2 KB
Line 
1//   Copyright 2012 Georg-August-Universität Göttingen, Germany
2//
3//   Licensed under the Apache License, Version 2.0 (the "License");
4//   you may not use this file except in compliance with the License.
5//   You may obtain a copy of the License at
6//
7//       http://www.apache.org/licenses/LICENSE-2.0
8//
9//   Unless required by applicable law or agreed to in writing, software
10//   distributed under the License is distributed on an "AS IS" BASIS,
11//   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12//   See the License for the specific language governing permissions and
13//   limitations under the License.
14
15package de.ugoe.cs.autoquest.plugin.html;
16
17import static org.junit.Assert.*;
18
19import java.io.File;
20import java.io.FileOutputStream;
21import java.io.PrintWriter;
22import java.util.Collection;
23import java.util.Iterator;
24import java.util.List;
25import java.util.logging.Level;
26
27import org.junit.After;
28import org.junit.Before;
29import org.junit.Test;
30
31import de.ugoe.cs.autoquest.eventcore.Event;
32import de.ugoe.cs.autoquest.eventcore.guimodel.GUIModel;
33import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElement;
34import de.ugoe.cs.autoquest.plugin.html.guimodel.HTMLGUIElement;
35import de.ugoe.cs.util.console.TextConsole;
36
37/**
38 * Test for the new HTMLLogParser
39 * @author Fabian Glaser
40 *
41 */
42public class HTMLLogParserTest {
43
44    /** */
45    private static final String PARSE_PARAM_FILE = "tmpParseParamFile";
46   
47    /**
48     *
49     */
50    @Before
51    public void setUp() {
52        new TextConsole(Level.FINEST);
53    }
54
55    /**
56     *
57     */
58    @After
59    public void tearDown() {
60        new File(PARSE_PARAM_FILE).delete();
61    }
62
63    /**
64     * Tests the parseFile method with a given trace file.
65     * @throws Exception
66     */
67    @Test
68    public void testParseFile_1() throws Exception {
69        HTMLLogParser parser = new HTMLLogParser(null);
70        parser.parseFile
71        (new File(ClassLoader.getSystemResource("htmlmonitor_testtrace_1.xml").getFile()));
72        Collection<List<Event>> events = parser.getSequences();
73
74        assertNotNull(events);
75        assertEquals(1, events.size());
76
77        Iterator<List<Event>> iterator = events.iterator();
78        assertNotNull(iterator);
79        assertEquals(1, iterator.next().size());
80        assertFalse(iterator.hasNext());
81
82        System.err.println("{");
83        for (List<Event> session : events) {
84            System.err.println("  {");
85            for (Event event : session) {
86                System.err.print("    ");
87                System.err.print(event);
88                System.err.println(",");
89            }
90            System.err.println("  }");
91        }
92        System.err.println("}");
93        System.err.println("\n\n");
94
95        GUIModel guiModel = parser.getGuiModel();
96        assertNotNull(guiModel);
97
98        for (IGUIElement root : guiModel.getRootElements()) {
99            dumpGUIElement(root, guiModel, "");
100        }
101    }
102
103    /**
104     * Tests the parseFile method with a given trace file.
105     * @throws Exception
106     */
107    @Test
108    public void testParseFile_2() throws Exception {
109        HTMLLogParser parser = new HTMLLogParser(null);
110        parser.parseFile
111        (new File(ClassLoader.getSystemResource("htmlmonitor_testtrace_2.xml").getFile()));
112        Collection<List<Event>> events = parser.getSequences();
113
114        assertNotNull(events);
115        assertEquals(1, events.size());
116
117        Iterator<List<Event>> iterator = events.iterator();
118        assertNotNull(iterator);
119        assertEquals(2, iterator.next().size());
120        assertFalse(iterator.hasNext());
121
122        System.err.println("{");
123        for (List<Event> session : events) {
124            System.err.println("  {");
125            for (Event event : session) {
126                System.err.print("    ");
127                System.err.print(event);
128                System.err.println(",");
129            }
130            System.err.println("  }");
131        }
132        System.err.println("}");
133        System.err.println("\n\n");
134
135        GUIModel guiModel = parser.getGuiModel();
136        assertNotNull(guiModel);
137
138        for (IGUIElement root : guiModel.getRootElements()) {
139            dumpGUIElement(root, guiModel, "");
140        }
141    }
142
143    /**
144     * Tests the parseFile method with a given trace file.
145     * @throws Exception
146     */
147    @Test
148    public void testParseFile_3() throws Exception {
149        PrintWriter out = new PrintWriter(new FileOutputStream(new File(PARSE_PARAM_FILE)));
150        out.println("td[2]=CLEAR_INDEX");
151        out.println("th=CLEAR_INDEX");
152        out.close();
153
154        HTMLLogParser parser = new HTMLLogParser(PARSE_PARAM_FILE);
155
156        parser.parseFile
157        (new File(ClassLoader.getSystemResource("htmlmonitor_testtrace_3.xml").getFile()));
158        Collection<List<Event>> events = parser.getSequences();
159
160        assertNotNull(events);
161        assertEquals(1, events.size());
162
163        Iterator<List<Event>> iterator = events.iterator();
164        assertNotNull(iterator);
165        assertEquals(2, iterator.next().size());
166        assertFalse(iterator.hasNext());
167
168        System.err.println("{");
169        for (List<Event> session : events) {
170            System.err.println("  {");
171            for (Event event : session) {
172                System.err.print("    ");
173                System.err.print(event);
174                System.err.println(",");
175            }
176            System.err.println("  }");
177        }
178        System.err.println("}");
179        System.err.println("\n\n");
180
181        GUIModel guiModel = parser.getGuiModel();
182        assertNotNull(guiModel);
183
184        for (IGUIElement root : guiModel.getRootElements()) {
185            dumpGUIElement(root, guiModel, "");
186        }
187    }
188
189    /**
190     * Tests the parseFile method with a given trace file.
191     * @throws Exception
192     */
193    @Test
194    public void testParseFile_4() throws Exception {
195        PrintWriter out = new PrintWriter(new FileOutputStream(new File(PARSE_PARAM_FILE)));
196        out.println("html/body[1]/h1=");
197        out.close();
198
199        HTMLLogParser parser = new HTMLLogParser(PARSE_PARAM_FILE);
200
201        parser.parseFile
202        (new File(ClassLoader.getSystemResource("htmlmonitor_testtrace_4.xml").getFile()));
203        Collection<List<Event>> events = parser.getSequences();
204
205        assertNotNull(events);
206        assertEquals(1, events.size());
207
208        Iterator<List<Event>> iterator = events.iterator();
209        assertNotNull(iterator);
210        assertEquals(2, iterator.next().size());
211        assertFalse(iterator.hasNext());
212
213        System.err.println("{");
214        for (List<Event> session : events) {
215            System.err.println("  {");
216            for (Event event : session) {
217                System.err.print("    ");
218                System.err.print(event);
219                System.err.println(",");
220            }
221            System.err.println("  }");
222        }
223        System.err.println("}");
224        System.err.println("\n\n");
225
226        GUIModel guiModel = parser.getGuiModel();
227        assertNotNull(guiModel);
228
229        for (IGUIElement root : guiModel.getRootElements()) {
230            dumpGUIElement(root, guiModel, "");
231        }
232    }
233
234    /**
235     * Tests the parseFile method with a given trace file.
236     * @throws Exception
237     */
238    @Test
239    public void testParseFile_5() throws Exception {
240        PrintWriter out = new PrintWriter(new FileOutputStream(new File(PARSE_PARAM_FILE)));
241        out.println("html/body[1]/h1(htmlId\\=id_h1)=");
242        out.close();
243       
244        HTMLLogParser parser = new HTMLLogParser(PARSE_PARAM_FILE);
245
246        parser.parseFile
247        (new File(ClassLoader.getSystemResource("htmlmonitor_testtrace_4.xml").getFile()));
248        Collection<List<Event>> events = parser.getSequences();
249
250        assertNotNull(events);
251        assertEquals(1, events.size());
252
253        Iterator<List<Event>> iterator = events.iterator();
254        assertNotNull(iterator);
255        assertEquals(2, iterator.next().size());
256        assertFalse(iterator.hasNext());
257
258        System.err.println("{");
259        for (List<Event> session : events) {
260            System.err.println("  {");
261            for (Event event : session) {
262                System.err.print("    ");
263                System.err.print(event);
264                System.err.println(",");
265            }
266            System.err.println("  }");
267        }
268        System.err.println("}");
269        System.err.println("\n\n");
270
271        GUIModel guiModel = parser.getGuiModel();
272        assertNotNull(guiModel);
273
274        for (IGUIElement root : guiModel.getRootElements()) {
275            dumpGUIElement(root, guiModel, "");
276        }
277    }
278
279    /**
280     * Helper method to print out GUIElements
281     * @param guiElement
282     * @param guiModel
283     * @param indent
284     */
285    private void dumpGUIElement(IGUIElement guiElement, GUIModel guiModel, String indent) {
286        assertTrue(guiElement instanceof HTMLGUIElement);
287
288        System.err.print(indent);
289        System.err.print(guiElement);
290
291        List<IGUIElement> children = guiModel.getChildren(guiElement);
292
293        if ((children != null) && (children.size() > 0)) {
294            System.err.println(" {");
295
296            for (IGUIElement child : children) {
297                dumpGUIElement(child, guiModel, indent + "  ");
298            }
299
300            System.err.print(indent);
301            System.err.print("}");
302        }
303
304        System.err.println();
305    }
306
307}
Note: See TracBrowser for help on using the repository browser.