// Copyright 2012 Georg-August-Universität Göttingen, Germany // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package de.ugoe.cs.autoquest.plugin.html; import static org.junit.Assert.*; import java.io.File; import java.io.FileOutputStream; import java.io.PrintWriter; import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.logging.Level; import org.junit.After; import org.junit.Before; import org.junit.Test; import de.ugoe.cs.autoquest.eventcore.Event; import de.ugoe.cs.autoquest.eventcore.guimodel.GUIModel; import de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElement; import de.ugoe.cs.autoquest.plugin.html.guimodel.HTMLGUIElement; import de.ugoe.cs.util.console.TextConsole; /** * Test for the new HTMLLogParser * @author Fabian Glaser * */ public class HTMLLogParserTest { /** */ private static final String PARSE_PARAM_FILE = "tmpParseParamFile"; /** * */ @Before public void setUp() { new TextConsole(Level.FINEST); } /** * */ @After public void tearDown() { new File(PARSE_PARAM_FILE).delete(); } /** * Tests the parseFile method with a given trace file. * @throws Exception */ @Test public void testParseFile_1() throws Exception { HTMLLogParser parser = new HTMLLogParser(null); parser.parseFile (new File(ClassLoader.getSystemResource("htmlmonitor_testtrace_1.xml").getFile())); Collection> events = parser.getSequences(); assertNotNull(events); assertEquals(1, events.size()); Iterator> iterator = events.iterator(); assertNotNull(iterator); assertEquals(1, iterator.next().size()); assertFalse(iterator.hasNext()); System.err.println("{"); for (List session : events) { System.err.println(" {"); for (Event event : session) { System.err.print(" "); System.err.print(event); System.err.println(","); } System.err.println(" }"); } System.err.println("}"); System.err.println("\n\n"); GUIModel guiModel = parser.getGuiModel(); assertNotNull(guiModel); for (IGUIElement root : guiModel.getRootElements()) { dumpGUIElement(root, guiModel, ""); } } /** * Tests the parseFile method with a given trace file. * @throws Exception */ @Test public void testParseFile_2() throws Exception { HTMLLogParser parser = new HTMLLogParser(null); parser.parseFile (new File(ClassLoader.getSystemResource("htmlmonitor_testtrace_2.xml").getFile())); Collection> events = parser.getSequences(); assertNotNull(events); assertEquals(1, events.size()); Iterator> iterator = events.iterator(); assertNotNull(iterator); assertEquals(2, iterator.next().size()); assertFalse(iterator.hasNext()); System.err.println("{"); for (List session : events) { System.err.println(" {"); for (Event event : session) { System.err.print(" "); System.err.print(event); System.err.println(","); } System.err.println(" }"); } System.err.println("}"); System.err.println("\n\n"); GUIModel guiModel = parser.getGuiModel(); assertNotNull(guiModel); for (IGUIElement root : guiModel.getRootElements()) { dumpGUIElement(root, guiModel, ""); } } /** * Tests the parseFile method with a given trace file. * @throws Exception */ @Test public void testParseFile_3() throws Exception { PrintWriter out = new PrintWriter(new FileOutputStream(new File(PARSE_PARAM_FILE))); out.println("td[2]=CLEAR_INDEX"); out.println("th=CLEAR_INDEX"); out.close(); HTMLLogParser parser = new HTMLLogParser(PARSE_PARAM_FILE); parser.parseFile (new File(ClassLoader.getSystemResource("htmlmonitor_testtrace_3.xml").getFile())); Collection> events = parser.getSequences(); assertNotNull(events); assertEquals(1, events.size()); Iterator> iterator = events.iterator(); assertNotNull(iterator); assertEquals(2, iterator.next().size()); assertFalse(iterator.hasNext()); System.err.println("{"); for (List session : events) { System.err.println(" {"); for (Event event : session) { System.err.print(" "); System.err.print(event); System.err.println(","); } System.err.println(" }"); } System.err.println("}"); System.err.println("\n\n"); GUIModel guiModel = parser.getGuiModel(); assertNotNull(guiModel); for (IGUIElement root : guiModel.getRootElements()) { dumpGUIElement(root, guiModel, ""); } } /** * Tests the parseFile method with a given trace file. * @throws Exception */ @Test public void testParseFile_4() throws Exception { PrintWriter out = new PrintWriter(new FileOutputStream(new File(PARSE_PARAM_FILE))); out.println("html/body[1]/h1="); out.close(); HTMLLogParser parser = new HTMLLogParser(PARSE_PARAM_FILE); parser.parseFile (new File(ClassLoader.getSystemResource("htmlmonitor_testtrace_4.xml").getFile())); Collection> events = parser.getSequences(); assertNotNull(events); assertEquals(1, events.size()); Iterator> iterator = events.iterator(); assertNotNull(iterator); assertEquals(2, iterator.next().size()); assertFalse(iterator.hasNext()); System.err.println("{"); for (List session : events) { System.err.println(" {"); for (Event event : session) { System.err.print(" "); System.err.print(event); System.err.println(","); } System.err.println(" }"); } System.err.println("}"); System.err.println("\n\n"); GUIModel guiModel = parser.getGuiModel(); assertNotNull(guiModel); for (IGUIElement root : guiModel.getRootElements()) { dumpGUIElement(root, guiModel, ""); } } /** * Tests the parseFile method with a given trace file. * @throws Exception */ @Test public void testParseFile_5() throws Exception { PrintWriter out = new PrintWriter(new FileOutputStream(new File(PARSE_PARAM_FILE))); out.println("html/body[1]/h1(htmlId\\=id_h1)="); out.close(); HTMLLogParser parser = new HTMLLogParser(PARSE_PARAM_FILE); parser.parseFile (new File(ClassLoader.getSystemResource("htmlmonitor_testtrace_4.xml").getFile())); Collection> events = parser.getSequences(); assertNotNull(events); assertEquals(1, events.size()); Iterator> iterator = events.iterator(); assertNotNull(iterator); assertEquals(2, iterator.next().size()); assertFalse(iterator.hasNext()); System.err.println("{"); for (List session : events) { System.err.println(" {"); for (Event event : session) { System.err.print(" "); System.err.print(event); System.err.println(","); } System.err.println(" }"); } System.err.println("}"); System.err.println("\n\n"); GUIModel guiModel = parser.getGuiModel(); assertNotNull(guiModel); for (IGUIElement root : guiModel.getRootElements()) { dumpGUIElement(root, guiModel, ""); } } /** * Helper method to print out GUIElements * @param guiElement * @param guiModel * @param indent */ private void dumpGUIElement(IGUIElement guiElement, GUIModel guiModel, String indent) { assertTrue(guiElement instanceof HTMLGUIElement); System.err.print(indent); System.err.print(guiElement); List children = guiModel.getChildren(guiElement); if ((children != null) && (children.size() > 0)) { System.err.println(" {"); for (IGUIElement child : children) { dumpGUIElement(child, guiModel, indent + " "); } System.err.print(indent); System.err.print("}"); } System.err.println(); } }