source: trunk/autoquest-core-tasktrees-test/src/test/java/de/ugoe/cs/autoquest/tasktrees/nodeequality/GUIEventTaskComparisonRuleTest.java @ 922

Last change on this file since 922 was 922, checked in by sherbold, 12 years ago
  • renaming of packages from de.ugoe.cs.quest to de.ugoe.cs.autoquest
File size: 6.2 KB
Line 
1package de.ugoe.cs.autoquest.tasktrees.nodeequality;
2
3import static org.junit.Assert.*;
4
5import java.util.ArrayList;
6import java.util.List;
7
8import org.junit.Test;
9
10import de.ugoe.cs.autoquest.eventcore.Event;
11import de.ugoe.cs.autoquest.eventcore.IEventTarget;
12import de.ugoe.cs.autoquest.eventcore.IEventType;
13import de.ugoe.cs.autoquest.eventcore.StringEventType;
14import de.ugoe.cs.autoquest.eventcore.gui.KeyboardFocusChange;
15import de.ugoe.cs.autoquest.eventcore.gui.TextInput;
16import de.ugoe.cs.autoquest.eventcore.gui.ValueSelection;
17import de.ugoe.cs.autoquest.tasktrees.nodeequality.GUIEventTaskComparisonRule;
18import de.ugoe.cs.autoquest.tasktrees.nodeequality.NodeEquality;
19import de.ugoe.cs.autoquest.tasktrees.treeifc.ISelection;
20import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode;
21import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNodeFactory;
22import de.ugoe.cs.autoquest.tasktrees.treeimpl.TaskTreeNodeFactory;
23import de.ugoe.cs.autoquest.test.DummyGUIElement;
24
25/**
26 * @author Patrick Harms
27 */
28public class GUIEventTaskComparisonRuleTest {
29
30    /**
31     *
32     */
33    @Test
34    public void test() {
35        ITaskTreeNodeFactory treeNodeFactory = new TaskTreeNodeFactory();
36       
37        GUIEventTaskComparisonRule rule = new GUIEventTaskComparisonRule();
38       
39        // test the identity check
40        IEventType eventType1 = new StringEventType("blub");
41        IEventTarget eventTarget1 = new DummyGUIElement("elem1");
42        ITaskTreeNode task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);
43       
44        assertNull(rule.compare(task1, task1));
45
46        eventType1 = new KeyboardFocusChange();
47        task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);
48       
49        assertEquals(NodeEquality.IDENTICAL, rule.compare(task1, task1));
50
51        // test lexical equality for interaction events which are no value selections or text inputs
52        IEventType eventType2 = new KeyboardFocusChange();
53        ITaskTreeNode task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);
54       
55        assertEquals(NodeEquality.LEXICALLY_EQUAL, rule.compare(task1, task2));
56        assertEquals(NodeEquality.LEXICALLY_EQUAL, rule.compare(task2, task1));
57       
58        // test equality of value selections
59        eventType1 = new ValueSelection<String>("value1");
60        task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);
61       
62        assertEquals(NodeEquality.UNEQUAL, rule.compare(task1, task2));
63        assertEquals(NodeEquality.UNEQUAL, rule.compare(task2, task1));
64       
65        eventType2 = new ValueSelection<String>("value1");
66        task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);
67       
68        assertEquals(NodeEquality.SYNTACTICALLY_EQUAL, rule.compare(task1, task2));
69        assertEquals(NodeEquality.SYNTACTICALLY_EQUAL, rule.compare(task2, task1));
70       
71        eventType2 = new ValueSelection<String>("value2");
72        task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);
73       
74        assertEquals(NodeEquality.SEMANTICALLY_EQUAL, rule.compare(task1, task2));
75        assertEquals(NodeEquality.SEMANTICALLY_EQUAL, rule.compare(task2, task1));
76       
77        // test equality of text inputs
78        List<Event> textInputEvents1 = new ArrayList<Event>();
79        textInputEvents1.add(new Event(eventType1, eventTarget1));
80        eventType1 = new TextInput("enteredText1", textInputEvents1);
81        task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);
82       
83        assertEquals(NodeEquality.UNEQUAL, rule.compare(task1, task2));
84        assertEquals(NodeEquality.UNEQUAL, rule.compare(task2, task1));
85       
86        eventType2 = new TextInput("enteredText1", textInputEvents1);
87        task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);
88       
89        assertEquals(NodeEquality.LEXICALLY_EQUAL, rule.compare(task1, task2));
90        assertEquals(NodeEquality.LEXICALLY_EQUAL, rule.compare(task2, task1));
91       
92        List<Event> textInputEvents2 = new ArrayList<Event>();
93        textInputEvents2.add(new Event(eventType2, eventTarget1));
94        eventType2 = new TextInput("enteredText1", textInputEvents2);
95        task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);
96       
97        assertEquals(NodeEquality.SYNTACTICALLY_EQUAL, rule.compare(task1, task2));
98        assertEquals(NodeEquality.SYNTACTICALLY_EQUAL, rule.compare(task2, task1));
99       
100        eventType2 = new TextInput("enteredText2", textInputEvents2);
101        task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget1);
102       
103        assertEquals(NodeEquality.SEMANTICALLY_EQUAL, rule.compare(task1, task2));
104        assertEquals(NodeEquality.SEMANTICALLY_EQUAL, rule.compare(task2, task1));
105       
106        // now ensure unequality for all combinations, if the event targets do not match
107        IEventTarget eventTarget2 = new DummyGUIElement("elem2");
108        eventType1 = new KeyboardFocusChange();
109        task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);
110        task2 = treeNodeFactory.createNewEventTask(eventType2, eventTarget2);
111        assertEquals(NodeEquality.UNEQUAL, rule.compare(task1, task2));
112        assertEquals(NodeEquality.UNEQUAL, rule.compare(task2, task1));
113       
114        eventType1 = new ValueSelection<String>("value1");
115        task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);
116        task2 = treeNodeFactory.createNewEventTask(eventType1, eventTarget2);
117        assertEquals(NodeEquality.UNEQUAL, rule.compare(task1, task2));
118        assertEquals(NodeEquality.UNEQUAL, rule.compare(task2, task1));
119       
120        eventType1 = new TextInput("enteredText1", textInputEvents1);
121        task1 = treeNodeFactory.createNewEventTask(eventType1, eventTarget1);
122        task2 = treeNodeFactory.createNewEventTask(eventType1, eventTarget2);
123        assertEquals(NodeEquality.UNEQUAL, rule.compare(task1, task2));
124        assertEquals(NodeEquality.UNEQUAL, rule.compare(task2, task1));
125
126        ISelection selection = treeNodeFactory.createNewSelection();
127        assertNull(rule.compare(task1, selection));
128        assertNull(rule.compare(selection, task1));
129        assertNull(rule.compare(task2, selection));
130        assertNull(rule.compare(selection, task2));
131    }
132
133}
Note: See TracBrowser for help on using the repository browser.