source: trunk/autoquest-core-tasktrees-test/src/test/java/de/ugoe/cs/autoquest/tasktrees/temporalrelation/TaskTreeNodeMergerTest.java @ 1127

Last change on this file since 1127 was 1127, checked in by pharms, 11 years ago
  • complete refactoring of task detection
  • many performance improvements in task detection
  • improved merging of sequences using Myers diff algorithm
File size: 29.8 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.temporalrelation;
16
17import org.junit.Test;
18
19import de.ugoe.cs.autoquest.tasktrees.TaskTreeChecker;
20import de.ugoe.cs.autoquest.tasktrees.TaskTreeInstantiator;
21import de.ugoe.cs.autoquest.tasktrees.nodeequality.NodeEquality;
22import de.ugoe.cs.autoquest.tasktrees.nodeequality.NodeEqualityRuleManager;
23import de.ugoe.cs.autoquest.tasktrees.testutils.Utilities;
24import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeBuilder;
25import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNode;
26import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskTreeNodeFactory;
27import de.ugoe.cs.autoquest.tasktrees.treeimpl.TaskTreeBuilder;
28import de.ugoe.cs.autoquest.tasktrees.treeimpl.TaskTreeNodeFactory;
29
30/**
31 * <p>
32 * TODO comment
33 * </p>
34 *
35 * @author Patrick Harms
36 */
37public class TaskTreeNodeMergerTest {
38
39    /** */
40    private ITaskTreeBuilder taskTreeBuilder = new TaskTreeBuilder();
41
42    /** */
43    private ITaskTreeNodeFactory taskTreeNodeFactory = new TaskTreeNodeFactory();
44
45    /** */
46    private NodeEqualityRuleManager nodeEqualityRuleManager =
47        Utilities.getNodeEqualityRuleManagerForTests();
48
49    /**
50     *
51     */
52    @Test
53    public void test_EventTaskMerge_1() {
54        String spec1 = "EventTask target1 {}";
55        String spec2 = "EventTask target1 {}";
56       
57        String oracleSpec = "EventTask target1 {}";
58       
59        performTest(spec1, spec2, oracleSpec);
60    }
61
62    /**
63     *
64     */
65    @Test
66    public void test_EventTaskMerge_2() {
67        String spec1 = "EventTask target1 {}";
68        String spec2 = "EventTask target2 {}";
69       
70        String oracleSpec =
71            "Selection {" +
72            "  EventTask target1 {}" +
73            "  EventTask target2 {}" +
74            "}";
75       
76        performTest(spec1, spec2, oracleSpec);
77    }
78
79    /**
80     *
81     */
82    @Test
83    public void test_EventTaskMerge_3() {
84        String spec1 =
85            "Selection {" +
86            "  EventTask target1 {}" +
87            "  EventTask target2 {}" +
88            "}";
89
90        String spec2 = "EventTask target2 {}";
91       
92        String oracleSpec =
93            "Selection {" +
94            "  EventTask target1 {}" +
95            "  EventTask target2 {}" +
96            "}";
97       
98        performTest(spec1, spec2, oracleSpec);
99    }
100
101    /**
102     *
103     */
104    @Test
105    public void test_EventTaskMerge_4() {
106        String spec1 = "EventTask target1 {}";
107       
108        String spec2 =
109            "Selection {" +
110            "  EventTask target1 {}" +
111            "  EventTask target2 {}" +
112            "}";
113       
114        String oracleSpec =
115            "Selection {" +
116            "  EventTask target1 {}" +
117            "  EventTask target2 {}" +
118            "}";
119       
120        performTest(spec1, spec2, oracleSpec);
121    }
122
123    /**
124     *
125     */
126    @Test
127    public void test_EventTaskMerge_5() {
128        String spec1 = "EventTask target1 {}";
129       
130        String spec2 =
131            "Iteration {" +
132            "  EventTask target1 {}" +
133            "}";
134       
135        String oracleSpec =
136            "Iteration {" +
137            "  EventTask target1 {}" +
138            "}";
139       
140        performTest(spec1, spec2, oracleSpec);
141    }
142
143    /**
144     *
145     */
146    @Test
147    public void test_EventTaskMerge_6() {
148        String spec1 = "EventTask target1 {}";
149       
150        String spec2 =
151            "Iteration {" +
152            "  Selection {" +
153            "    EventTask target1 {}" +
154            "    EventTask target2 {}" +
155            "  }" +
156            "}";
157       
158        String oracleSpec =
159            "Iteration {" +
160            "  Selection {" +
161            "    EventTask target1 {}" +
162            "    EventTask target2 {}" +
163            "  }" +
164            "}";
165       
166        performTest(spec1, spec2, oracleSpec);
167    }
168
169    /**
170     *
171     */
172    @Test
173    public void test_EventTaskMerge_7() {
174        String spec1 = "EventTask target1 {}";
175       
176        String spec2 =
177            "Iteration {" +
178            "  Selection {" +
179            "    EventTask target2 {}" +
180            "    EventTask target3 {}" +
181            "  }" +
182            "}";
183       
184        String oracleSpec =
185            "Iteration {" +
186            "  Selection {" +
187            "    EventTask target1 {}" +
188            "    EventTask target2 {}" +
189            "    EventTask target3 {}" +
190            "  }" +
191            "}";
192       
193        performTest(spec1, spec2, oracleSpec);
194    }
195
196    /**
197     *
198     */
199    @Test
200    public void test_EventTaskMerge_8() {
201        String spec1 = "EventTask target1 {}";
202       
203        String spec2 =
204            "Sequence {" +
205            "  EventTask target2 {}" +
206            "  EventTask target3 {}" +
207            "}";
208       
209        String oracleSpec =
210            "Selection {" +
211            "  EventTask target1 {}" +
212            "  Sequence {" +
213            "    EventTask target2 {}" +
214            "    EventTask target3 {}" +
215            "  }" +
216            "}";
217       
218        performTest(spec1, spec2, oracleSpec);
219    }
220
221    /**
222     *
223     */
224    @Test
225    public void test_EventTaskMerge_9() {
226        String spec1 = "EventTask target1 {}";
227       
228        String spec2 =
229            "Sequence {" +
230            "  EventTask target1 {}" +
231            "  EventTask target2 {}" +
232            "}";
233       
234        String oracleSpec =
235            "Sequence {" +
236            "  EventTask target1 {}" +
237            "  Optional {" +
238            "    EventTask target2 {}" +
239            "  }" +
240            "}";
241       
242        performTest(spec1, spec2, oracleSpec);
243    }
244
245    /**
246     *
247     */
248    @Test
249    public void test_SequenceMerge_1() {
250        String spec1 =
251            "Sequence {" +
252            "  EventTask target1 {}" +
253            "  EventTask target2 {}" +
254            "  EventTask target3 {}" +
255            "}";
256
257        String spec2 =
258            "Sequence {" +
259            "  EventTask target1 {}" +
260            "  EventTask target2 {}" +
261            "  EventTask target3 {}" +
262            "}";
263       
264        String oracleSpec =
265            "Sequence {" +
266            "  EventTask target1 {}" +
267            "  EventTask target2 {}" +
268            "  EventTask target3 {}" +
269            "}";
270       
271        performTest(spec1, spec2, oracleSpec);
272    }
273
274    /**
275     *
276     */
277    @Test
278    public void test_SequenceMerge_2() {
279        String spec1 =
280            "Sequence {" +
281            "  EventTask target1 {}" +
282            "  EventTask target2 {}" +
283            "  EventTask target3 {}" +
284            "}";
285
286        String spec2 =
287            "Sequence {" +
288            "  EventTask target1 {}" +
289            "  EventTask target4 {}" +
290            "  EventTask target3 {}" +
291            "}";
292       
293        String oracleSpec =
294            "Sequence {" +
295            "  EventTask target1 {}" +
296            "  Selection {" +
297            "    EventTask target2 {}" +
298            "    EventTask target4 {}" +
299            "  }" +
300            "  EventTask target3 {}" +
301            "}";
302       
303        performTest(spec1, spec2, oracleSpec);
304    }
305
306    /**
307     *
308     */
309    @Test
310    public void test_SequenceMerge_3() {
311        String spec1 =
312            "Sequence {" +
313            "  EventTask target1 {}" +
314            "  EventTask target2 {}" +
315            "  EventTask target3 {}" +
316            "}";
317
318        String spec2 =
319            "Sequence {" +
320            "  EventTask target4 {}" +
321            "  EventTask target5 {}" +
322            "  EventTask target6 {}" +
323            "}";
324       
325        String oracleSpec =
326            "Selection {" +
327            "  Sequence {" +
328            "    EventTask target1 {}" +
329            "    EventTask target2 {}" +
330            "    EventTask target3 {}" +
331            "  }" +
332            "  Sequence {" +
333            "    EventTask target4 {}" +
334            "    EventTask target5 {}" +
335            "    EventTask target6 {}" +
336            "  }" +
337            "}";
338       
339        performTest(spec1, spec2, oracleSpec);
340    }
341
342    /**
343     *
344     */
345    @Test
346    public void test_SequenceMerge_4() {
347        String spec1 =
348            "Sequence {" +
349            "  EventTask target1 {}" +
350            "  EventTask target2 {}" +
351            "  EventTask target3 {}" +
352            "}";
353
354        String spec2 =
355            "Sequence {" +
356            "  EventTask target1 {}" +
357            "  EventTask target2 {}" +
358            "  EventTask target4 {}" +
359            "}";
360       
361        String oracleSpec =
362            "Sequence {" +
363            "  EventTask target1 {}" +
364            "  EventTask target2 {}" +
365            "  Selection {" +
366            "    EventTask target3 {}" +
367            "    EventTask target4 {}" +
368            "  }" +
369            "}";
370       
371        performTest(spec1, spec2, oracleSpec);
372    }
373
374    /**
375     *
376     */
377    @Test
378    public void test_SequenceMerge_5() {
379        String spec1 =
380            "Sequence {" +
381            "  EventTask target1 {}" +
382            "  EventTask target2 {}" +
383            "  EventTask target3 {}" +
384            "}";
385
386        String spec2 =
387            "Sequence {" +
388            "  EventTask target4 {}" +
389            "  EventTask target2 {}" +
390            "  EventTask target3 {}" +
391            "}";
392       
393        String oracleSpec =
394            "Sequence {" +
395            "  Selection {" +
396            "    EventTask target1 {}" +
397            "    EventTask target4 {}" +
398            "  }" +
399            "  EventTask target2 {}" +
400            "  EventTask target3 {}" +
401            "}";
402       
403        performTest(spec1, spec2, oracleSpec);
404    }
405
406    /**
407     *
408     */
409    @Test
410    public void test_SequenceMerge_6() {
411        String spec1 =
412            "Sequence {" +
413            "  EventTask target1 {}" +
414            "  EventTask target2 {}" +
415            "  EventTask target3 {}" +
416            "}";
417
418        String spec2 =
419            "Sequence {" +
420            "  EventTask target4 {}" +
421            "  EventTask target2 {}" +
422            "  EventTask target5 {}" +
423            "}";
424
425        String oracleSpec =
426            "Sequence {" +
427            "  Selection {" +
428            "    EventTask target1 {}" +
429            "    EventTask target4 {}" +
430            "  }" +
431            "  EventTask target2 {}" +
432            "  Selection {" +
433            "    EventTask target3 {}" +
434            "    EventTask target5 {}" +
435            "  }" +
436            "}";
437       
438        performTest(spec1, spec2, oracleSpec);
439    }
440
441    /**
442     *
443     */
444    @Test
445    public void test_SequenceMerge_7() {
446        String spec1 =
447            "Sequence {" +
448            "  EventTask target1 {}" +
449            "  EventTask target2 {}" +
450            "  EventTask target3 {}" +
451            "}";
452
453        String spec2 =
454            "Sequence {" +
455            "  EventTask target1 {}" +
456            "  EventTask target3 {}" +
457            "}";
458       
459        String oracleSpec =
460            "Sequence {" +
461            "  EventTask target1 {}" +
462            "  Optional {" +
463            "    EventTask target2 {}" +
464            "  }" +
465            "  EventTask target3 {}" +
466            "}";
467       
468        performTest(spec1, spec2, oracleSpec);
469    }
470
471    /**
472     *
473     */
474    @Test
475    public void test_SequenceMerge_8() {
476        String spec1 =
477            "Sequence {" +
478            "  EventTask target1 {}" +
479            "  EventTask target2 {}" +
480            "  EventTask target3 {}" +
481            "}";
482
483        String spec2 =
484            "Sequence {" +
485            "  EventTask target1 {}" +
486            "  EventTask target2 {}" +
487            "}";
488       
489        String oracleSpec =
490            "Sequence {" +
491            "  EventTask target1 {}" +
492            "  EventTask target2 {}" +
493            "  Optional {" +
494            "    EventTask target3 {}" +
495            "  }" +
496            "}";
497       
498        performTest(spec1, spec2, oracleSpec);
499    }
500
501    /**
502     *
503     */
504    @Test
505    public void test_SequenceMerge_9() {
506        String spec1 =
507            "Sequence {" +
508            "  EventTask target1 {}" +
509            "  EventTask target2 {}" +
510            "  EventTask target3 {}" +
511            "}";
512
513        String spec2 =
514            "Sequence {" +
515            "  EventTask target2 {}" +
516            "  EventTask target3 {}" +
517            "}";
518       
519        String oracleSpec =
520            "Sequence {" +
521            "  Optional {" +
522            "    EventTask target1 {}" +
523            "  }" +
524            "  EventTask target2 {}" +
525            "  EventTask target3 {}" +
526            "}";
527       
528        performTest(spec1, spec2, oracleSpec);
529    }
530
531    /**
532     *
533     */
534    @Test
535    public void test_SequenceMerge_10() {
536        String spec1 =
537            "Sequence {" +
538            "  EventTask target1 {}" +
539            "  EventTask target2 {}" +
540            "  EventTask target3 {}" +
541            "}";
542
543        String spec2 =
544            "Sequence {" +
545            "  EventTask target2 {}" +
546            "}";
547       
548        String oracleSpec =
549            "Sequence {" +
550            "  Optional {" +
551            "    EventTask target1 {}" +
552            "  }" +
553            "  EventTask target2 {}" +
554            "  Optional {" +
555            "    EventTask target3 {}" +
556            "  }" +
557            "}";
558       
559        performTest(spec1, spec2, oracleSpec);
560    }
561
562    /**
563     *
564     */
565    @Test
566    public void test_SequenceMerge_11() {
567        String spec1 =
568            "Sequence {" +
569            "  EventTask target1 {}" +
570            "  EventTask target2 {}" +
571            "  EventTask target3 {}" +
572            "  EventTask target4 {}" +
573            "  EventTask target5 {}" +
574            "  EventTask target6 {}" +
575            "  EventTask target7 {}" +
576            "}";
577
578        String spec2 =
579            "Sequence {" +
580            "  EventTask target4 {}" +
581            "  EventTask target3 {}" +
582            "  EventTask target1 {}" +
583            "  EventTask target2 {}" +
584            "  EventTask target3 {}" +
585            "  EventTask target4 {}" +
586            "  EventTask target4 {}" +
587            "  EventTask target2 {}" +
588            "  EventTask target6 {}" +
589            "  EventTask target7 {}" +
590            "}";
591       
592        String oracleSpec =
593            "Sequence {" +
594            "  Optional {" +
595            "    Sequence {" +
596            "      EventTask target4 {}" +
597            "      EventTask target3 {}" +
598            "    }" +
599            "  }" +
600            "  EventTask target1 {}" +
601            "  EventTask target2 {}" +
602            "  EventTask target3 {}" +
603            "  EventTask target4 {}" +
604            "  Selection {" +
605            "    EventTask target5 {}" +
606            "    Sequence {" +
607            "      EventTask target4 {}" +
608            "      EventTask target2 {}" +
609            "    }" +
610            "  }" +
611            "  EventTask target6 {}" +
612            "  EventTask target7 {}" +
613            "}";
614       
615        performTest(spec1, spec2, oracleSpec);
616    }
617
618    /**
619     *
620     */
621    @Test
622    public void test_SelectionMerge_1() {
623        String spec1 = "EventTask target1 {}";
624       
625        String spec2 =
626            "Selection {" +
627            "  EventTask target1 {}" +
628            "}";
629       
630        String oracleSpec =
631            "Selection {" +
632            "  EventTask target1 {}" +
633            "}";
634       
635        performTest(spec1, spec2, oracleSpec);
636    }
637
638    /**
639     *
640     */
641    @Test
642    public void test_SelectionMerge_2() {
643        String spec1 = "EventTask target1 {}";
644       
645        String spec2 =
646            "Selection {" +
647            "  EventTask target2 {}" +
648            "  EventTask target3 {}" +
649            "}";
650       
651        String oracleSpec =
652            "Selection {" +
653            "  EventTask target1 {}" +
654            "  EventTask target2 {}" +
655            "  EventTask target3 {}" +
656            "}";
657       
658        performTest(spec1, spec2, oracleSpec);
659    }
660
661    /**
662     *
663     */
664    @Test
665    public void test_SelectionMerge_3() {
666        String spec1 = "EventTask target1 {}";
667       
668        String spec2 =
669            "Selection {" +
670            "  Sequence {" +
671            "    EventTask target2 {}" +
672            "    EventTask target3 {}" +
673            "  }" +
674            "}";
675       
676        String oracleSpec =
677            "Selection {" +
678            "  EventTask target1 {}" +
679            "  Sequence {" +
680            "    EventTask target2 {}" +
681            "    EventTask target3 {}" +
682            "  }" +
683            "}";
684       
685        performTest(spec1, spec2, oracleSpec);
686    }
687   
688    /**
689     *
690     */
691    @Test
692    public void test_SelectionMerge_4() {
693        String spec1 = "EventTask target1 {}";
694       
695        String spec2 =
696            "Selection {" +
697            "  Sequence {" +
698            "    EventTask target1 {}" +
699            "    EventTask target2 {}" +
700            "  }" +
701            "}";
702       
703        String oracleSpec =
704            "Selection {" +
705            "  Sequence {" +
706            "    EventTask target1 {}" +
707            "    Optional {" +
708            "      EventTask target2 {}" +
709            "    }" +
710            "  }" +
711            "}";
712       
713        performTest(spec1, spec2, oracleSpec);
714    }
715
716    /**
717     *
718     */
719    @Test
720    public void test_SelectionMerge_5() {
721        String spec1 =
722            "Sequence {" +
723            "  EventTask target1 {}" +
724            "  EventTask target2 {}" +
725            "}";
726
727        String spec2 =
728            "Selection {" +
729            "  Sequence {" +
730            "    EventTask target1 {}" +
731            "    EventTask target2 {}" +
732            "  }" +
733            "}";
734       
735        String oracleSpec =
736            "Selection {" +
737            "  Sequence {" +
738            "    EventTask target1 {}" +
739            "    EventTask target2 {}" +
740            "  }" +
741            "}";
742       
743        performTest(spec1, spec2, oracleSpec);
744    }
745   
746    /**
747     *
748     */
749    @Test
750    public void test_SelectionMerge_6() {
751        String spec1 =
752            "Sequence {" +
753            "  EventTask target1 {}" +
754            "  EventTask target2 {}" +
755            "}";
756
757        String spec2 =
758            "Selection {" +
759            "  Sequence {" +
760            "    EventTask target3 {}" +
761            "    EventTask target4 {}" +
762            "  }" +
763            "  Sequence {" +
764            "    EventTask target5 {}" +
765            "    EventTask target6 {}" +
766            "  }" +
767            "}";
768       
769        String oracleSpec =
770            "Selection {" +
771            "  Sequence {" +
772            "    EventTask target1 {}" +
773            "    EventTask target2 {}" +
774            "  }" +
775            "  Sequence {" +
776            "    EventTask target3 {}" +
777            "    EventTask target4 {}" +
778            "  }" +
779            "  Sequence {" +
780            "    EventTask target5 {}" +
781            "    EventTask target6 {}" +
782            "  }" +
783            "}";
784       
785        performTest(spec1, spec2, oracleSpec);
786    }
787   
788    /**
789     *
790     */
791    @Test
792    public void test_IterationMerge_1() {
793        String spec1 = "EventTask target1 {}";
794       
795        String spec2 =
796            "Iteration {" +
797            "  EventTask target1 {}" +
798            "}";
799       
800        String oracleSpec =
801            "Iteration {" +
802            "  EventTask target1 {}" +
803            "}";
804       
805        performTest(spec1, spec2, oracleSpec);
806    }
807
808    /**
809     *
810     */
811    @Test
812    public void test_IterationMerge_2() {
813        String spec1 = "EventTask target1 {}";
814       
815        String spec2 =
816            "Iteration {" +
817            "  Selection {" +
818            "    EventTask target2 {}" +
819            "    EventTask target3 {}" +
820            "  }" +
821            "}";
822       
823        String oracleSpec =
824            "Iteration {" +
825            "  Selection {" +
826            "    EventTask target1 {}" +
827            "    EventTask target2 {}" +
828            "    EventTask target3 {}" +
829            "  }" +
830            "}";
831       
832        performTest(spec1, spec2, oracleSpec);
833    }
834
835    /**
836     *
837     */
838    @Test
839    public void test_IterationMerge_3() {
840        String spec1 = "EventTask target1 {}";
841       
842        String spec2 =
843            "Iteration {" +
844            "  Sequence {" +
845            "    EventTask target2 {}" +
846            "    EventTask target3 {}" +
847            "  }" +
848            "}";
849       
850        String oracleSpec =
851            "Iteration {" +
852            "  Selection {" +
853            "    EventTask target1 {}" +
854            "    Sequence {" +
855            "      EventTask target2 {}" +
856            "      EventTask target3 {}" +
857            "    }" +
858            "  }" +
859            "}";
860       
861        performTest(spec1, spec2, oracleSpec);
862    }
863   
864    /**
865     *
866     */
867    @Test
868    public void test_IterationMerge_4() {
869        String spec1 = "EventTask target1 {}";
870       
871        String spec2 =
872            "Iteration {" +
873            "  Sequence {" +
874            "    EventTask target1 {}" +
875            "    EventTask target2 {}" +
876            "  }" +
877            "}";
878       
879        String oracleSpec =
880            "Iteration {" +
881            "  Sequence {" +
882            "    EventTask target1 {}" +
883            "    Optional {" +
884            "      EventTask target2 {}" +
885            "    }" +
886            "  }" +
887            "}";
888       
889        performTest(spec1, spec2, oracleSpec);
890    }
891
892    /**
893     *
894     */
895    @Test
896    public void test_IterationMerge_5() {
897        String spec1 =
898            "Sequence {" +
899            "  EventTask target1 {}" +
900            "  EventTask target2 {}" +
901            "}";
902
903        String spec2 =
904            "Iteration {" +
905            "  Sequence {" +
906            "    EventTask target1 {}" +
907            "    EventTask target2 {}" +
908            "  }" +
909            "}";
910       
911        String oracleSpec =
912            "Iteration {" +
913            "  Sequence {" +
914            "    EventTask target1 {}" +
915            "    EventTask target2 {}" +
916            "  }" +
917            "}";
918       
919        performTest(spec1, spec2, oracleSpec);
920    }
921   
922    /**
923     *
924     */
925    @Test
926    public void test_IterationMerge_6() {
927        String spec1 =
928            "Sequence {" +
929            "  EventTask target1 {}" +
930            "  EventTask target2 {}" +
931            "}";
932
933        String spec2 =
934            "Iteration {" +
935            "  Selection {" +
936            "    Sequence {" +
937            "      EventTask target3 {}" +
938            "      EventTask target4 {}" +
939            "    }" +
940            "    Sequence {" +
941            "      EventTask target5 {}" +
942            "      EventTask target6 {}" +
943            "    }" +
944            "  }" +
945            "}";
946       
947        String oracleSpec =
948            "Iteration {" +
949            "  Selection {" +
950            "    Sequence {" +
951            "      EventTask target1 {}" +
952            "      EventTask target2 {}" +
953            "    }" +
954            "    Sequence {" +
955            "      EventTask target3 {}" +
956            "      EventTask target4 {}" +
957            "    }" +
958            "    Sequence {" +
959            "      EventTask target5 {}" +
960            "      EventTask target6 {}" +
961            "    }" +
962            "  }" +
963            "}";
964       
965        performTest(spec1, spec2, oracleSpec);
966    }
967   
968    /**
969     *
970     */
971    @Test
972    public void test_OptionalMerge_1() {
973        String spec1 = "EventTask target1 {}";
974       
975        String spec2 =
976            "Optional {" +
977            "  EventTask target1 {}" +
978            "}";
979       
980        String oracleSpec =
981            "Optional {" +
982            "  EventTask target1 {}" +
983            "}";
984       
985        performTest(spec1, spec2, oracleSpec);
986    }
987
988    /**
989     *
990     */
991    @Test
992    public void test_OptionalMerge_2() {
993        String spec1 = "EventTask target1 {}";
994       
995        String spec2 =
996            "Optional {" +
997            "  Selection {" +
998            "    EventTask target2 {}" +
999            "    EventTask target3 {}" +
1000            "  }" +
1001            "}";
1002       
1003        String oracleSpec =
1004            "Optional {" +
1005            "  Selection {" +
1006            "    EventTask target1 {}" +
1007            "    EventTask target2 {}" +
1008            "    EventTask target3 {}" +
1009            "  }" +
1010            "}";
1011       
1012        performTest(spec1, spec2, oracleSpec);
1013    }
1014
1015    /**
1016     *
1017     */
1018    @Test
1019    public void test_OptionalMerge_3() {
1020        String spec1 = "EventTask target1 {}";
1021       
1022        String spec2 =
1023            "Optional {" +
1024            "  Sequence {" +
1025            "    EventTask target2 {}" +
1026            "    EventTask target3 {}" +
1027            "  }" +
1028            "}";
1029       
1030        String oracleSpec =
1031            "Optional {" +
1032            "  Selection {" +
1033            "    EventTask target1 {}" +
1034            "    Sequence {" +
1035            "      EventTask target2 {}" +
1036            "      EventTask target3 {}" +
1037            "    }" +
1038            "  }" +
1039            "}";
1040       
1041        performTest(spec1, spec2, oracleSpec);
1042    }
1043   
1044    /**
1045     *
1046     */
1047    @Test
1048    public void test_OptionalMerge_4() {
1049        String spec1 = "EventTask target1 {}";
1050       
1051        String spec2 =
1052            "Optional {" +
1053            "  Sequence {" +
1054            "    EventTask target1 {}" +
1055            "    EventTask target2 {}" +
1056            "  }" +
1057            "}";
1058       
1059        String oracleSpec =
1060            "Optional {" +
1061            "  Sequence {" +
1062            "    EventTask target1 {}" +
1063            "    Optional {" +
1064            "      EventTask target2 {}" +
1065            "    }" +
1066            "  }" +
1067            "}";
1068       
1069        performTest(spec1, spec2, oracleSpec);
1070    }
1071
1072    /**
1073     *
1074     */
1075    @Test
1076    public void test_OptionalMerge_5() {
1077        String spec1 =
1078            "Sequence {" +
1079            "  EventTask target1 {}" +
1080            "  EventTask target2 {}" +
1081            "}";
1082
1083        String spec2 =
1084            "Optional {" +
1085            "  Sequence {" +
1086            "    EventTask target1 {}" +
1087            "    EventTask target2 {}" +
1088            "  }" +
1089            "}";
1090       
1091        String oracleSpec =
1092            "Optional {" +
1093            "  Sequence {" +
1094            "    EventTask target1 {}" +
1095            "    EventTask target2 {}" +
1096            "  }" +
1097            "}";
1098       
1099        performTest(spec1, spec2, oracleSpec);
1100    }
1101   
1102    /**
1103     *
1104     */
1105    @Test
1106    public void test_OptionalMerge_6() {
1107        String spec1 =
1108            "Sequence {" +
1109            "  EventTask target1 {}" +
1110            "  EventTask target2 {}" +
1111            "}";
1112
1113        String spec2 =
1114            "Optional {" +
1115            "  Selection {" +
1116            "    Sequence {" +
1117            "      EventTask target3 {}" +
1118            "      EventTask target4 {}" +
1119            "    }" +
1120            "    Sequence {" +
1121            "      EventTask target5 {}" +
1122            "      EventTask target6 {}" +
1123            "    }" +
1124            "  }" +
1125            "}";
1126       
1127        String oracleSpec =
1128            "Optional {" +
1129            "  Selection {" +
1130            "    Sequence {" +
1131            "      EventTask target1 {}" +
1132            "      EventTask target2 {}" +
1133            "    }" +
1134            "    Sequence {" +
1135            "      EventTask target3 {}" +
1136            "      EventTask target4 {}" +
1137            "    }" +
1138            "    Sequence {" +
1139            "      EventTask target5 {}" +
1140            "      EventTask target6 {}" +
1141            "    }" +
1142            "  }" +
1143            "}";
1144       
1145        performTest(spec1, spec2, oracleSpec);
1146    }
1147   
1148    /**
1149     *
1150     */
1151    private void performTest(String spec1, String spec2, String specOracle) {
1152        TaskTreeInstantiator instantiator =
1153                new TaskTreeInstantiator(taskTreeNodeFactory, taskTreeBuilder);
1154           
1155        ITaskTreeNode node1 = instantiator.instantiateTaskTree(spec1);
1156        ITaskTreeNode node2 = instantiator.instantiateTaskTree(spec2);
1157        ITaskTreeNode oracle = instantiator.instantiateTaskTree(specOracle);
1158       
1159        TaskTreeNodeComparator comparator =
1160            new TaskTreeNodeComparator(nodeEqualityRuleManager, NodeEquality.LEXICALLY_EQUAL);
1161       
1162        TaskTreeNodeMerger merger = new TaskTreeNodeMerger
1163            (taskTreeNodeFactory, taskTreeBuilder, comparator);
1164       
1165        try {
1166            ITaskTreeNode result = merger.mergeTaskNodes(node1, node2);
1167            new TaskTreeChecker().assertTaskNodesEqual(oracle, result);
1168        }
1169        catch (AssertionError e) {
1170            AssertionError toThrow = new AssertionError("first check: " + e.getMessage());
1171            toThrow.setStackTrace(e.getStackTrace());
1172            throw toThrow;
1173        }
1174       
1175        node1 = instantiator.instantiateTaskTree(spec1);
1176        node2 = instantiator.instantiateTaskTree(spec2);
1177        oracle = instantiator.instantiateTaskTree(specOracle);
1178       
1179        comparator =
1180            new TaskTreeNodeComparator(nodeEqualityRuleManager, NodeEquality.LEXICALLY_EQUAL);
1181       
1182        merger = new TaskTreeNodeMerger(taskTreeNodeFactory, taskTreeBuilder, comparator);
1183           
1184        try {
1185            ITaskTreeNode result = merger.mergeTaskNodes(node2, node1);
1186            new TaskTreeChecker().assertTaskNodesEqual(oracle, result);
1187        }
1188        catch (AssertionError e) {
1189            AssertionError toThrow = new AssertionError("second check: " + e.getMessage());
1190            toThrow.setStackTrace(e.getStackTrace());
1191            throw toThrow;
1192        }
1193    }
1194}
Note: See TracBrowser for help on using the repository browser.