Ignore:
Timestamp:
03/12/15 15:50:28 (9 years ago)
Author:
pharms
Message:
  • extension with further smell detections
  • may not fully work. But Hudson is more happy because compile errors should be gone
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/autoquest-core-usability/src/main/java/de/ugoe/cs/autoquest/usability/TaskTreeTestRule.java

    r1493 r1918  
    1515package de.ugoe.cs.autoquest.usability; 
    1616 
     17import java.util.ArrayList; 
     18import java.util.HashSet; 
     19import java.util.List; 
     20import java.util.Set; 
     21 
    1722import de.ugoe.cs.autoquest.eventcore.Event; 
    1823import de.ugoe.cs.autoquest.tasktrees.treeifc.DefaultTaskInstanceTraversingVisitor; 
     24import de.ugoe.cs.autoquest.tasktrees.treeifc.DefaultTaskTraversingVisitor; 
     25import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTask; 
    1926import de.ugoe.cs.autoquest.tasktrees.treeifc.IEventTaskInstance; 
     27import de.ugoe.cs.autoquest.tasktrees.treeifc.ISelection; 
     28import de.ugoe.cs.autoquest.tasktrees.treeifc.ISequence; 
     29import de.ugoe.cs.autoquest.tasktrees.treeifc.IStructuringTemporalRelationship; 
     30import de.ugoe.cs.autoquest.tasktrees.treeifc.ITask; 
     31import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInfo; 
    2032import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstance; 
    2133import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskInstanceVisitor; 
     
    4153 
    4254        checkTimestamps(taskModel); 
     55        checkTaskInfos(taskModel); 
     56        checkEventTaskInstances(taskModel); 
     57        checkTraversal(taskModel); 
    4358 
    4459        return results; 
     60    } 
     61 
     62    /** 
     63     * <p> 
     64     * TODO: comment 
     65     * </p> 
     66     * 
     67     * @param taskModel 
     68     */ 
     69    private void checkEventTaskInstances(ITaskModel taskModel) { 
     70        Set<IEventTaskInstance> instancesInModel = new HashSet<>(); 
     71         
     72        for (ITask task : taskModel.getTasks()) { 
     73            if (task instanceof IEventTask) { 
     74                for (ITaskInstance instance : task.getInstances()) { 
     75                    instancesInModel.add((IEventTaskInstance) instance); 
     76                } 
     77            } 
     78        } 
     79         
     80        final Set<IEventTaskInstance> instancesInSessions = new HashSet<>(); 
     81         
     82        for (IUserSession session : taskModel.getUserSessions()) { 
     83            for (ITaskInstance rootInstance : session) { 
     84                rootInstance.accept(new DefaultTaskInstanceTraversingVisitor() { 
     85                    @Override 
     86                    public void visit(IEventTaskInstance eventTaskInstance) { 
     87                        instancesInSessions.add(eventTaskInstance); 
     88                    } 
     89                }); 
     90            } 
     91        } 
     92         
     93        if (instancesInModel.size() != instancesInSessions.size()) { 
     94            throw new RuntimeException("instances not equal"); 
     95        } 
     96        else { 
     97            for (IEventTaskInstance instance : instancesInModel) { 
     98                if (!instancesInSessions.contains(instance)) { 
     99                    throw new RuntimeException("instance of model not contained in sessions"); 
     100                } 
     101            } 
     102             
     103            for (IEventTaskInstance instance : instancesInSessions) { 
     104                if (!instancesInModel.contains(instance)) { 
     105                    throw new RuntimeException("instance of sessions not contained in model"); 
     106                } 
     107            } 
     108        } 
     109    } 
     110 
     111    /** 
     112     * <p> 
     113     * TODO: comment 
     114     * </p> 
     115     * 
     116     * @param taskModel 
     117     */ 
     118    private void checkTraversal(ITaskModel taskModel) { 
     119        for (ITask task : taskModel.getTasks()) { 
     120            final List<ITask> traversal1 = new ArrayList<>(); 
     121             
     122            task.accept(new DefaultTaskTraversingVisitor() { 
     123                @Override 
     124                public void visit(IEventTask eventTask) { 
     125                    traversal1.add(eventTask); 
     126                    super.visit(eventTask); 
     127                } 
     128 
     129                @Override 
     130                public void visit(IStructuringTemporalRelationship relationship) { 
     131                    traversal1.add(relationship); 
     132                    super.visit(relationship); 
     133                } 
     134                 
     135            }); 
     136             
     137            final List<ITask> traversal2 = new ArrayList<>(); 
     138             
     139            task.accept(new DefaultTaskTraversingVisitor() { 
     140                @Override 
     141                public void visit(IEventTask eventTask) { 
     142                    traversal2.add(eventTask); 
     143                    super.visit(eventTask); 
     144                } 
     145 
     146                @Override 
     147                public void visit(ISelection selection) { 
     148                    traversal2.add(selection); 
     149                    super.visit(selection); 
     150                } 
     151 
     152                @Override 
     153                public void visit(ISequence sequence) { 
     154                    traversal2.add(sequence); 
     155                    super.visit(sequence); 
     156                } 
     157            }); 
     158             
     159            if (traversal1.size() != traversal2.size()) { 
     160                throw new RuntimeException("traversals not equal"); 
     161            } 
     162            else { 
     163                for (int i = 0; i < traversal1.size(); i++) { 
     164                    if (!traversal1.get(i).equals(traversal2.get(i))) { 
     165                        throw new RuntimeException("traversals not equal at position " + i); 
     166                    } 
     167                } 
     168            } 
     169        } 
    45170    } 
    46171 
     
    78203         
    79204    } 
     205 
     206    /** 
     207     * <p> 
     208     * TODO: comment 
     209     * </p> 
     210     * 
     211     * @param taskModel 
     212     */ 
     213    private void checkTaskInfos(ITaskModel taskModel) { 
     214        for (ITask task : taskModel.getTasks()) { 
     215            ITaskInfo taskInfo = taskModel.getTaskInfo(task); 
     216            if (taskInfo == null) { 
     217                System.out.println("task " + task + " has no associated task infos"); 
     218            } 
     219        } 
     220    } 
    80221} 
Note: See TracChangeset for help on using the changeset viewer.