Changeset 1146 for trunk/autoquest-core-tasktrees-test/src/test/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/AbstractTemporalRelationshipTC.java
- Timestamp:
- 04/04/13 16:06:07 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/autoquest-core-tasktrees-test/src/test/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/AbstractTemporalRelationshipTC.java
r1132 r1146 21 21 import java.lang.reflect.Constructor; 22 22 import java.lang.reflect.InvocationTargetException; 23 import java.util.ArrayList;24 23 import java.util.LinkedList; 25 24 import java.util.List; … … 29 28 import org.junit.Before; 30 29 31 import de.ugoe.cs.autoquest.eventcore.IEventTarget; 32 import de.ugoe.cs.autoquest.eventcore.IEventType; 33 import de.ugoe.cs.autoquest.tasktrees.nodeequality.NodeEquality; 34 import de.ugoe.cs.autoquest.tasktrees.nodeequality.NodeEqualityRuleManager; 30 import de.ugoe.cs.autoquest.tasktrees.TaskTreeChecker; 31 import de.ugoe.cs.autoquest.tasktrees.TaskTreeDecoder; 32 import de.ugoe.cs.autoquest.tasktrees.TaskTreeEncoder; 33 import de.ugoe.cs.autoquest.tasktrees.TaskTreeValidator; 34 import de.ugoe.cs.autoquest.tasktrees.taskequality.TaskEquality; 35 import de.ugoe.cs.autoquest.tasktrees.taskequality.TaskEqualityRuleManager; 35 36 import de.ugoe.cs.autoquest.tasktrees.testutils.Utilities; 36 import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask; 37 import de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence; 38 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTree; 39 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeBuilder; 40 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode; 41 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNodeFactory; 42 import de.ugoe.cs.autoquest.tasktrees.treeimpl.TaskTreeBuilder; 43 import de.ugoe.cs.autoquest.tasktrees.treeimpl.TaskTreeNodeFactory; 37 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstanceList; 38 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskBuilder; 39 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskFactory; 40 import de.ugoe.cs.autoquest.tasktrees.treeifc.IUserSession; 41 import de.ugoe.cs.autoquest.tasktrees.treeimpl.TaskBuilder; 42 import de.ugoe.cs.autoquest.tasktrees.treeimpl.TaskFactory; 44 43 import de.ugoe.cs.util.console.Console; 45 44 import de.ugoe.cs.util.console.TextConsole; … … 52 51 53 52 /** */ 54 private List<IEventTask> events; 55 56 /** */ 57 private ITaskTreeBuilder taskTreeBuilder = new TaskTreeBuilder(); 58 59 /** */ 60 private ITaskTreeNodeFactory taskTreeNodeFactory = new TaskTreeNodeFactory(); 61 62 /** */ 63 private NodeEqualityRuleManager nodeEqualityRuleManager = 64 Utilities.getNodeEqualityRuleManagerForTests(); 53 private ITaskBuilder taskBuilder = new TaskBuilder(); 54 55 /** */ 56 private ITaskFactory taskFactory = new TaskFactory(); 57 58 /** */ 59 private TaskTreeDecoder decoder = null; 60 61 /** */ 62 private TaskTreeEncoder encoder = new TaskTreeEncoder(); 63 64 /** */ 65 private TaskEqualityRuleManager taskEqualityRuleManager = 66 Utilities.getTaskEqualityRuleManagerForTests(); 65 67 66 68 /** … … 69 71 @Before 70 72 public void setUp() { 73 Console.reset(); 71 74 new TextConsole(Level.FINEST); 72 events = new ArrayList<IEventTask>(); 75 76 decoder = new TaskTreeDecoder(taskFactory, taskBuilder); 73 77 } 74 78 … … 76 80 * 77 81 */ 78 protected void simulateEvent(IEventType eventType, IEventTarget eventTarget) { 79 events.add(taskTreeNodeFactory.createNewEventTask(eventType, eventTarget)); 80 Console.reset(); 82 protected void applyRule(Class<? extends ITaskInstanceListScopeRule> ruleClass, 83 String inputSpec, 84 String expectedOutputSpec) 85 { 86 ITaskInstanceListScopeRule rule = null; 87 88 CONSTRUCTOR_ITERATION: 89 for (Constructor<?> constructor : ruleClass.getDeclaredConstructors()) { 90 List<Object> parameters = new LinkedList<Object>(); 91 92 for (Class<?> type : constructor.getParameterTypes()) { 93 if (ITaskFactory.class.equals(type)) { 94 parameters.add(taskFactory); 95 } 96 else if (ITaskBuilder.class.equals(type)) { 97 parameters.add(taskBuilder); 98 } 99 else if (TaskEqualityRuleManager.class.equals(type)) { 100 parameters.add(taskEqualityRuleManager); 101 } 102 else if (TaskEquality.class.equals(type)) { 103 parameters.add(TaskEquality.LEXICALLY_EQUAL); 104 } 105 else { 106 continue CONSTRUCTOR_ITERATION; 107 } 108 } 109 110 try { 111 rule = (ITaskInstanceListScopeRule) constructor.newInstance(parameters.toArray()); 112 } 113 catch (IllegalArgumentException e) { 114 e.printStackTrace(); 115 fail("could not invoke the constructor " + constructor); 116 } 117 catch (InstantiationException e) { 118 e.printStackTrace(); 119 fail("could not invoke the constructor " + constructor); 120 } 121 catch (IllegalAccessException e) { 122 e.printStackTrace(); 123 fail("could not invoke the constructor " + constructor); 124 } 125 catch (InvocationTargetException e) { 126 e.printStackTrace(); 127 fail("could not invoke the constructor " + constructor); 128 } 129 } 130 131 if (rule == null) { 132 fail("no matching constructor found to instantiate rule " + ruleClass); 133 } 134 135 RuleApplicationResult result; 136 RuleApplicationStatus status; 137 138 ITaskInstanceList inputList = decoder.decode(inputSpec); 139 140 Stack<ITaskInstanceList> toBeAppliedOn = new Stack<ITaskInstanceList>(); 141 toBeAppliedOn.push(inputList); 142 143 do { 144 result = rule.apply(toBeAppliedOn.peek()); 145 146 if (result != null) { 147 status = result.getRuleApplicationStatus(); 148 assertNotNull(status); 149 } 150 else { 151 status = RuleApplicationStatus.NOT_APPLIED; 152 } 153 154 assertTrue(status != RuleApplicationStatus.FEASIBLE); 155 156 if ((result != null) && (result.getNewlyCreatedTaskInstances() != null)) { 157 for (int i = result.getNewlyCreatedTaskInstances().size() - 1; i >= 0; i--) { 158 toBeAppliedOn.push(result.getNewlyCreatedTaskInstances().get(i)); 159 } 160 } 161 162 if (status == RuleApplicationStatus.NOT_APPLIED) { 163 toBeAppliedOn.pop(); 164 } 165 166 } 167 while ((!toBeAppliedOn.isEmpty()) || (status == RuleApplicationStatus.FINISHED)); 168 169 ITaskInstanceList expectedList = decoder.decode(expectedOutputSpec); 170 171 new TaskTreeChecker().assertTaskInstanceListsEqual(expectedList, inputList); 81 172 } 82 173 … … 84 175 * 85 176 */ 86 protected ITaskTree getTaskTree() { 87 ISequence sequence = taskTreeNodeFactory.createNewSequence(); 88 89 for (IEventTask task : events) { 90 taskTreeBuilder.addChild(sequence, task); 91 } 92 93 TemporalRelationshipRuleManager ruleManager = new TemporalRelationshipRuleManager 94 (nodeEqualityRuleManager, taskTreeNodeFactory, taskTreeBuilder); 95 96 ruleManager.init(); 97 ruleManager.applyRules(sequence); 98 99 return taskTreeNodeFactory.createTaskTree(sequence); 100 } 101 102 /** 103 * 104 */ 105 protected ITaskTree getTaskTree(Class<? extends TemporalRelationshipRule> ruleClass, 106 NodeEquality nodeEquality) 177 protected void applySessionScopeRule(Class<? extends ISessionScopeRule> ruleClass, 178 String inputSpec, 179 String expectedOutputSpec) 107 180 { 108 return getTaskTree(ruleClass, nodeEquality, false); 109 } 110 111 /** 112 * 113 */ 114 protected ITaskTree getTaskTree(Class<? extends TemporalRelationshipRule> ruleClass, 115 NodeEquality nodeEquality, 116 boolean explicitSessionSeq) 117 { 118 ISequence sequence = taskTreeNodeFactory.createNewSequence(); 119 120 for (IEventTask task : events) { 121 taskTreeBuilder.addChild(sequence, task); 122 } 123 124 if (explicitSessionSeq) { 125 ISequence root = taskTreeNodeFactory.createNewSequence(); 126 taskTreeBuilder.addChild(root, sequence); 127 sequence = root; 128 } 129 130 TemporalRelationshipRule rule = null; 181 ISessionScopeRule rule = null; 131 182 132 183 CONSTRUCTOR_ITERATION: … … 135 186 136 187 for (Class<?> type : constructor.getParameterTypes()) { 137 if (ITaskTreeNodeFactory.class.equals(type)) { 138 parameters.add(taskTreeNodeFactory); 139 } 140 else if (ITaskTreeBuilder.class.equals(type)) { 141 parameters.add(taskTreeBuilder); 142 } 143 else if (NodeEqualityRuleManager.class.equals(type)) { 144 parameters.add(nodeEqualityRuleManager); 145 } 146 else if (NodeEquality.class.equals(type)) { 147 if (nodeEquality != null) { 148 parameters.add(nodeEquality); 149 } 150 else { 151 parameters.add(NodeEquality.LEXICALLY_EQUAL); 152 } 188 if (ITaskFactory.class.equals(type)) { 189 parameters.add(taskFactory); 190 } 191 else if (ITaskBuilder.class.equals(type)) { 192 parameters.add(taskBuilder); 193 } 194 else if (TaskEqualityRuleManager.class.equals(type)) { 195 parameters.add(taskEqualityRuleManager); 196 } 197 else if (TaskEquality.class.equals(type)) { 198 parameters.add(TaskEquality.LEXICALLY_EQUAL); 153 199 } 154 200 else { … … 158 204 159 205 try { 160 rule = ( TemporalRelationshipRule) constructor.newInstance(parameters.toArray());206 rule = (ISessionScopeRule) constructor.newInstance(parameters.toArray()); 161 207 } 162 208 catch (IllegalArgumentException e) { … … 182 228 } 183 229 184 RuleApplicationResult result; 185 RuleApplicationStatus status; 186 187 Stack<ITaskTreeNode> toBeAppliedOn = new Stack<ITaskTreeNode>(); 188 toBeAppliedOn.push(sequence); 189 190 do { 191 result = rule.apply(toBeAppliedOn.peek(), true); 192 193 if (result != null) { 194 status = result.getRuleApplicationStatus(); 195 assertNotNull(status); 196 } 197 else { 198 status = RuleApplicationStatus.NOT_APPLIED; 199 } 200 201 assertTrue(status != RuleApplicationStatus.FEASIBLE); 202 203 if ((result != null) && (result.getNewlyCreatedParentNodes() != null)) { 204 for (int i = result.getNewlyCreatedParentNodes().size() - 1; i >= 0; i--) { 205 toBeAppliedOn.push(result.getNewlyCreatedParentNodes().get(i)); 206 } 207 } 208 209 if (status == RuleApplicationStatus.NOT_APPLIED) { 210 toBeAppliedOn.pop(); 211 } 212 213 } 214 while ((!toBeAppliedOn.isEmpty()) || (status == RuleApplicationStatus.FINISHED)); 215 216 return taskTreeNodeFactory.createTaskTree(sequence); 230 ITaskInstanceList inputList = decoder.decode(inputSpec); 231 232 assertTrue(inputList instanceof IUserSession); 233 234 List<IUserSession> sessionList = new LinkedList<IUserSession>(); 235 sessionList.add((IUserSession) inputList); 236 237 System.out.println("Input:"); 238 encoder.encode(inputList, System.out); 239 240 RuleApplicationResult result = rule.apply(sessionList); 241 242 assertNotNull(result); 243 assertNotNull(result.getRuleApplicationStatus()); 244 assertTrue(result.getRuleApplicationStatus() != RuleApplicationStatus.FEASIBLE); 245 246 ITaskInstanceList expectedList = decoder.decode(expectedOutputSpec); 247 248 System.out.println("\nExpected Result:"); 249 encoder.encode(expectedList, System.out); 250 System.out.println("\nResult:"); 251 encoder.encode(inputList, System.out); 252 253 new TaskTreeChecker().assertTaskInstanceListsEqual(expectedList, inputList); 254 new TaskTreeValidator().validate(inputList); 217 255 } 218 256
Note: See TracChangeset
for help on using the changeset viewer.