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

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