Ignore:
Timestamp:
07/31/14 17:20:07 (10 years ago)
Author:
pharms
Message:
  • some bugfixes and extensions for these test utils
Location:
trunk/autoquest-test-utils/src/main/java/de/ugoe/cs/autoquest/tasktrees
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/autoquest-test-utils/src/main/java/de/ugoe/cs/autoquest/tasktrees/TaskTreeChecker.java

    r1294 r1638  
    2727 
    2828import de.ugoe.cs.autoquest.eventcore.gui.TextInput; 
     29import de.ugoe.cs.autoquest.tasktrees.treeifc.DefaultTaskInstanceTraversingVisitor; 
    2930import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask; 
    3031import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTaskInstance; 
     
    161162     * 
    162163     */ 
     164    public void assertEventTaskInstancesEqual(ITaskInstanceList expected, 
     165                                              ITaskInstanceList checked) 
     166    { 
     167        final List<IEventTaskInstance> expectedEventTaskInstances = 
     168            new ArrayList<IEventTaskInstance>(); 
     169         
     170        final List<IEventTaskInstance> checkedEventTaskInstances = 
     171                new ArrayList<IEventTaskInstance>(); 
     172             
     173        for (ITaskInstance instance : expected) { 
     174            instance.accept(new DefaultTaskInstanceTraversingVisitor() { 
     175                @Override 
     176                public void visit(IEventTaskInstance eventTaskInstance) { 
     177                    expectedEventTaskInstances.add(eventTaskInstance); 
     178                } 
     179            }); 
     180        } 
     181         
     182        for (ITaskInstance instance : checked) { 
     183            instance.accept(new DefaultTaskInstanceTraversingVisitor() { 
     184                @Override 
     185                public void visit(IEventTaskInstance eventTaskInstance) { 
     186                    checkedEventTaskInstances.add(eventTaskInstance); 
     187                } 
     188            }); 
     189        } 
     190         
     191        assertEquals("task instance lists differ in the number of event task instances", 
     192                     expectedEventTaskInstances.size(), checkedEventTaskInstances.size()); 
     193         
     194        for (int i = 0; i < expectedEventTaskInstances.size(); i++) { 
     195            assertTaskInstancesEqual 
     196                (expectedEventTaskInstances.get(i), checkedEventTaskInstances.get(i)); 
     197        } 
     198    } 
     199 
     200    /** 
     201     * 
     202     */ 
    163203    private void assertTaskInstancesEqual(ITaskInstance     expected, 
    164204                                          ITaskInstance     checked, 
  • trunk/autoquest-test-utils/src/main/java/de/ugoe/cs/autoquest/tasktrees/TaskTreeEncoder.java

    r1412 r1638  
    189189        } 
    190190        else if (taskInstance instanceof IOptionalInstance) { 
    191             encode(((IOptionalInstance) taskInstance).getChild(), out, indent + "  ", i++); 
     191            if (((IOptionalInstance) taskInstance).getChild() != null) { 
     192                encode(((IOptionalInstance) taskInstance).getChild(), out, indent + "  ", i++); 
     193            } 
    192194        } 
    193195 
  • trunk/autoquest-test-utils/src/main/java/de/ugoe/cs/autoquest/tasktrees/TaskTreeValidator.java

    r1333 r1638  
    1717import static org.junit.Assert.*; 
    1818 
     19import java.util.HashMap; 
     20import java.util.LinkedList; 
    1921import java.util.List; 
    20  
     22import java.util.Map; 
     23 
     24import de.ugoe.cs.autoquest.tasktrees.treeifc.DefaultTaskInstanceTraversingVisitor; 
    2125import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask; 
    2226import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTaskInstance; 
     
    4650     *  
    4751     */ 
     52    public void validate(List<IUserSession> userSessions, boolean checkInstances) { 
     53        validate(userSessions); 
     54         
     55        if (!checkInstances) { 
     56            return; 
     57        } 
     58         
     59        Map<ITask, List<ITaskInstance>> allTasks = new HashMap<ITask, List<ITaskInstance>>(); 
     60         
     61        for (IUserSession userSession : userSessions) { 
     62            getAllTasksAndInstances(userSession, allTasks); 
     63        } 
     64         
     65        for (Map.Entry<ITask, List<ITaskInstance>> entry : allTasks.entrySet()) { 
     66            assertEquals("number of task instances of task " + entry.getKey() + " in the " + 
     67                         "sessions is not equal to those referenced by the model", 
     68                         entry.getValue().size(), entry.getKey().getInstances().size()); 
     69             
     70            for (ITaskInstance candidate : entry.getValue()) { 
     71                boolean found = false; 
     72                for (ITaskInstance instance : entry.getKey().getInstances()) { 
     73                    if (candidate.equals(instance)) { 
     74                        if (!found) { 
     75                            found = true; 
     76                        } 
     77                        else { 
     78                            fail("the same instance is referred twice by the task"); 
     79                        } 
     80                    } 
     81                } 
     82                 
     83                assertTrue("instance " + candidate + " is not referred by task", found); 
     84            } 
     85        } 
     86    } 
     87 
     88    /** 
     89     *  
     90     */ 
    4891    public void validate(List<IUserSession> userSessions) { 
    4992        for (IUserSession userSession : userSessions) { 
     
    94137                assertFalse("child of selection model must not be a selection", 
    95138                            childTask instanceof ISelection); 
    96                 assertFalse("child of selection model must not be an optional", 
    97                             childTask instanceof IOptional); 
     139                /*assertFalse("child of selection model must not be an optional", 
     140                            childTask instanceof IOptional);*/ 
    98141                if (childTask.equals(((ISelectionInstance) taskInstance).getChild().getTask())) { 
    99142                    found = true; 
     
    155198        } 
    156199    } 
     200 
     201 
     202    /** 
     203     *  
     204     */ 
     205    private void getAllTasksAndInstances(ITaskInstanceList                     taskInstances, 
     206                                         final Map<ITask, List<ITaskInstance>> allTasks) 
     207    { 
     208        for (ITaskInstance taskInstance : taskInstances) { 
     209             
     210            taskInstance.accept(new DefaultTaskInstanceTraversingVisitor() { 
     211 
     212                /* (non-Javadoc) 
     213                 * @see DefaultTaskInstanceTraversingVisitor#visit(IOptionalInstance) 
     214                 */ 
     215                @Override 
     216                public void visit(IOptionalInstance optionalInstance) { 
     217                    addToInstanceList(optionalInstance); 
     218                    super.visit(optionalInstance); 
     219                } 
     220 
     221                /* (non-Javadoc) 
     222                 * @see DefaultTaskInstanceTraversingVisitor#visit(ISelectionInstance) 
     223                 */ 
     224                @Override 
     225                public void visit(ISelectionInstance selectionInstance) { 
     226                    addToInstanceList(selectionInstance); 
     227                    super.visit(selectionInstance); 
     228                } 
     229 
     230                /* (non-Javadoc) 
     231                 * @see DefaultTaskInstanceTraversingVisitor#visit(IEventTaskInstance) 
     232                 */ 
     233                @Override 
     234                public void visit(IEventTaskInstance eventTaskInstance) { 
     235                    addToInstanceList(eventTaskInstance); 
     236                    super.visit(eventTaskInstance); 
     237                } 
     238 
     239                /* (non-Javadoc) 
     240                 * @see DefaultTaskInstanceTraversingVisitor#visit(IIterationInstance) 
     241                 */ 
     242                @Override 
     243                public void visit(IIterationInstance iterationInstance) { 
     244                    addToInstanceList(iterationInstance); 
     245                    super.visit(iterationInstance); 
     246                } 
     247 
     248                /* (non-Javadoc) 
     249                 * @see DefaultTaskInstanceTraversingVisitor#visit(ISequenceInstance) 
     250                 */ 
     251                @Override 
     252                public void visit(ISequenceInstance sequenceInstance) { 
     253                    addToInstanceList(sequenceInstance); 
     254                    super.visit(sequenceInstance); 
     255                } 
     256 
     257                private void addToInstanceList(ITaskInstance taskInstance) { 
     258                    List<ITaskInstance> instances = allTasks.get(taskInstance.getTask()); 
     259                     
     260                    if (instances == null) { 
     261                        instances = new LinkedList<ITaskInstance>(); 
     262                        allTasks.put(taskInstance.getTask(), instances); 
     263                    } 
     264                     
     265                    boolean found = false; 
     266                     
     267                    for (ITaskInstance candidate : instances) { 
     268                        if (candidate.equals(taskInstance)) { 
     269                            found = true; 
     270                            break; 
     271                        } 
     272                    } 
     273                     
     274                    assertFalse("instance " + taskInstance + " occurred twice", found); 
     275                     
     276                    instances.add(taskInstance); 
     277                } 
     278                 
     279            }); 
     280        } 
     281    } 
    157282} 
Note: See TracChangeset for help on using the changeset viewer.