source: trunk/autoquest-core-events-test/src/test/java/de/ugoe/cs/autoquest/eventcore/guimodel/GUIModelTest.java @ 1088

Last change on this file since 1088 was 1088, checked in by pharms, 11 years ago
  • added a GUI model test
  • performed some bug fixes
  • added a possibility to navigate a traverser to a specific GUI element in the model
File size: 28.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.eventcore.guimodel;
16
17import static org.junit.Assert.*;
18
19import java.util.ArrayList;
20import java.util.List;
21
22import org.junit.Test;
23
24/**
25 *
26 * @author Patrick Harms
27 */
28public class GUIModelTest {
29   
30    /**
31     *
32     */
33    private IGUIElementFactory guiElementFactory = new TestGUIElementFactory();
34
35    /**
36     *
37     */
38    @Test
39    public void test_PathIntegration_01() throws Exception {
40        GUIModel model = new GUIModel();
41       
42        List<IGUIElementSpec> guiElementPath = new ArrayList<IGUIElementSpec>();
43        guiElementPath.add(new TestGUIElementSpec("guiElem1"));
44       
45        IGUIElement element = model.integratePath(guiElementPath, guiElementFactory);
46       
47        assertTrue(element instanceof TestGUIElement);
48        assertEquals(guiElementPath.get(0), element.getSpecification());
49        assertNull(element.getParent());
50       
51        assertNotNull(model.getRootElements());
52        assertEquals(1, model.getRootElements().size());
53        assertEquals(element, model.getRootElements().get(0));
54       
55        assertNotNull(model.getChildren(element));
56        assertTrue(model.getChildren(element).isEmpty());
57       
58        assertNull(model.getParent(element));
59    }
60
61    /**
62     *
63     */
64    @Test
65    public void test_PathIntegration_02() throws Exception {
66        GUIModel model = new GUIModel();
67       
68        List<IGUIElementSpec> guiElementPath = new ArrayList<IGUIElementSpec>();
69        for (int i = 0; i < 5; i++) {
70            guiElementPath.add(new TestGUIElementSpec("guiElem" + i));
71        }
72       
73        IGUIElement element = model.integratePath(guiElementPath, guiElementFactory);
74       
75        for (int i = 4; i >= 0; i--) {
76            assertTrue(element instanceof TestGUIElement);
77            assertEquals(guiElementPath.get(i), element.getSpecification());
78           
79            assertNotNull(model.getChildren(element));
80           
81            if (i == 4) {
82                assertTrue(model.getChildren(element).isEmpty());
83            }
84            else {
85                assertEquals(1, model.getChildren(element).size());
86                assertEquals(guiElementPath.get(i + 1),
87                             model.getChildren(element).get(0).getSpecification());
88            }
89           
90            element = element.getParent();
91        }
92       
93        assertNull(element);
94
95        assertNotNull(model.getRootElements());
96        assertEquals(1, model.getRootElements().size());
97        assertNotNull(model.getRootElements().get(0));
98        assertEquals(guiElementPath.get(0), model.getRootElements().get(0).getSpecification());
99    }
100
101    /**
102     *
103     */
104    @Test
105    public void test_PathIntegration_03() throws Exception {
106        GUIModel model = new GUIModel();
107       
108        for (int i = 0; i < 20; i++) {
109            List<IGUIElementSpec> guiElementPath = new ArrayList<IGUIElementSpec>();
110           
111            for (int j = 0; j < 5; j++) {
112                guiElementPath.add(new TestGUIElementSpec("guiElem_" + i + "_" + j));
113            }
114           
115            IGUIElement element = model.integratePath(guiElementPath, guiElementFactory);
116           
117            for (int j = 4; j >= 0; j--) {
118                assertTrue(element instanceof TestGUIElement);
119                assertEquals(guiElementPath.get(j), element.getSpecification());
120               
121                assertNotNull(model.getChildren(element));
122               
123                if (j == 4) {
124                    assertTrue(model.getChildren(element).isEmpty());
125                }
126                else {
127                    assertEquals(1, model.getChildren(element).size());
128                    assertEquals(guiElementPath.get(j + 1),
129                                 model.getChildren(element).get(0).getSpecification());
130                }
131               
132                element = element.getParent();
133            }
134           
135            assertNull(element);
136
137        }
138       
139        assertNotNull(model.getRootElements());
140        assertEquals(20, model.getRootElements().size());
141    }
142
143    /**
144     *
145     */
146    @Test
147    public void test_PathIntegration_04() throws Exception {
148        GUIModel model = new GUIModel();
149       
150        List<IGUIElementSpec> guiElementPath = new ArrayList<IGUIElementSpec>();
151        guiElementPath.add(new TestGUIElementSpec("guiElem1"));
152       
153        IGUIElement element1 = model.integratePath(guiElementPath, guiElementFactory);
154       
155        guiElementPath = new ArrayList<IGUIElementSpec>();
156        guiElementPath.add(new TestGUIElementSpec("guiElem1"));
157       
158        IGUIElement element2 = model.integratePath(guiElementPath, guiElementFactory);
159       
160        assertSame(element1, element2);
161    }
162
163    /**
164     *
165     */
166    @Test
167    public void test_PathIntegration_05() throws Exception {
168        GUIModel model = new GUIModel();
169       
170        List<IGUIElementSpec> guiElementPath = new ArrayList<IGUIElementSpec>();
171        for (int i = 0; i < 5; i++) {
172            guiElementPath.add(new TestGUIElementSpec("guiElem" + i));
173        }
174       
175        IGUIElement element1 = model.integratePath(guiElementPath, guiElementFactory);
176       
177        guiElementPath = new ArrayList<IGUIElementSpec>();
178        for (int i = 0; i < 5; i++) {
179            guiElementPath.add(new TestGUIElementSpec("guiElem" + i));
180        }
181       
182        IGUIElement element2 = model.integratePath(guiElementPath, guiElementFactory);
183       
184        assertSame(element1, element2);
185    }
186
187    /**
188     *
189     */
190    @Test
191    public void test_PathIntegration_06() throws Exception {
192        GUIModel model = new GUIModel();
193       
194        List<IGUIElementSpec> guiElementPath = new ArrayList<IGUIElementSpec>();
195        guiElementPath.add(new TestGUIElementSpec("guiElem1"));
196        guiElementPath.add(new TestGUIElementSpec("guiElem2"));
197        guiElementPath.add(new TestGUIElementSpec("guiElem3"));
198        guiElementPath.add(new TestGUIElementSpec("guiElem4"));
199       
200        IGUIElement element1 = model.integratePath(guiElementPath, guiElementFactory);
201
202        guiElementPath.remove(2);
203        guiElementPath.remove(2);
204       
205        guiElementPath.add(new TestGUIElementSpec("guiElem5"));
206        guiElementPath.add(new TestGUIElementSpec("guiElem6"));
207
208        IGUIElement element2 = model.integratePath(guiElementPath, guiElementFactory);
209       
210        assertFalse(element1.equals(element2));
211       
212        element1 = element1.getParent();
213        assertFalse(element1.equals(element2));
214       
215        element2 = element2.getParent();
216        assertFalse(element1.equals(element2));
217       
218        element1 = element1.getParent();
219        assertFalse(element1.equals(element2));
220       
221        element2 = element2.getParent();
222        assertSame(element1, element2);
223    }
224
225    /**
226     *
227     */
228    @Test
229    public void test_CondenseModel_01() throws Exception {
230        GUIModel model = new GUIModel();
231       
232        for (int i = 0; i < 20; i++) {
233            List<IGUIElementSpec> guiElementPath = new ArrayList<IGUIElementSpec>();
234           
235            for (int j = 0; j < 5; j++) {
236                guiElementPath.add(new TestGUIElementSpec("guiElem_" + i + "_" + j, "spec_" + j));
237            }
238           
239            model.integratePath(guiElementPath, guiElementFactory);
240        }
241       
242        assertNotNull(model.getRootElements());
243        assertEquals(20, model.getRootElements().size());
244       
245        model.condenseModel();
246       
247        assertNotNull(model.getRootElements());
248        assertEquals(1, model.getRootElements().size());
249       
250        IGUIElement element = model.getRootElements().get(0);
251       
252        for (int i = 0; i < 5; i++) {
253            assertNotNull(element);
254            assertTrue(element.getSpecification() instanceof TestGUIElementSpec);
255            assertTrue(((TestGUIElementSpec) element.getSpecification()).id.endsWith("_" + i));
256
257            if (i < 4) {
258                assertNotNull(model.getChildren(element));
259                assertEquals(1, model.getChildren(element).size());
260                element = model.getChildren(element).get(0);
261            }
262            else {
263                assertNotNull(model.getChildren(element));
264                assertEquals(0, model.getChildren(element).size());
265            }
266        }
267    }
268
269    /**
270     *
271     */
272    @Test
273    public void test_CondenseModel_02() throws Exception {
274        GUIModel model = new GUIModel();
275       
276        List<IGUIElementSpec> guiElementPath = new ArrayList<IGUIElementSpec>();
277        for (int j = 0; j < 3; j++) {
278            guiElementPath.add(new TestGUIElementSpec("guiElem_" + j));
279        }
280       
281        for (int i = 0; i < 20; i++) {
282            for (int j = 3; j < 5; j++) {
283                guiElementPath.add(new TestGUIElementSpec("guiElem_" + i + "_" + j, "spec_" + j));
284            }
285           
286            model.integratePath(guiElementPath, guiElementFactory);
287           
288            for (int j = 3; j < 5; j++) {
289                guiElementPath.remove(3);
290            }
291        }
292       
293        assertNotNull(model.getRootElements());
294        assertEquals(1, model.getRootElements().size());
295       
296        IGUIElement element = model.getRootElements().get(0);
297       
298        for (int i = 0; i < 3; i++) {
299            assertNotNull(element);
300            assertTrue(element.getSpecification() instanceof TestGUIElementSpec);
301            assertEquals("guiElem_" + i, ((TestGUIElementSpec) element.getSpecification()).id);
302
303            if (i < 2) {
304                assertNotNull(model.getChildren(element));
305                assertEquals(1, model.getChildren(element).size());
306                element = model.getChildren(element).get(0);
307            }
308            else {
309                assertNotNull(model.getChildren(element));
310                assertEquals(20, model.getChildren(element).size());
311            }
312        }
313
314        model.condenseModel();
315       
316        assertNotNull(model.getRootElements());
317        assertEquals(1, model.getRootElements().size());
318       
319        element = model.getRootElements().get(0);
320       
321        for (int i = 0; i < 5; i++) {
322            assertNotNull(element);
323            assertTrue(element.getSpecification() instanceof TestGUIElementSpec);
324            assertTrue(((TestGUIElementSpec) element.getSpecification()).id.endsWith("_" + i));
325
326            if (i < 4) {
327                assertNotNull(model.getChildren(element));
328                assertEquals(1, model.getChildren(element).size());
329                element = model.getChildren(element).get(0);
330            }
331            else {
332                assertNotNull(model.getChildren(element));
333                assertEquals(0, model.getChildren(element).size());
334            }
335        }
336    }
337
338    /**
339     *
340     */
341    @Test
342    public void test_Traverser_01() throws Exception {
343        GUIModel model = new GUIModel();
344       
345        List<IGUIElementSpec> guiElementPath = new ArrayList<IGUIElementSpec>();
346        guiElementPath.add(new TestGUIElementSpec("guiElem1"));
347        guiElementPath.add(new TestGUIElementSpec("guiElem2"));
348        guiElementPath.add(new TestGUIElementSpec("guiElem3"));
349        guiElementPath.add(new TestGUIElementSpec("guiElem4"));
350       
351        model.integratePath(guiElementPath, guiElementFactory);
352
353        guiElementPath.remove(2);
354        guiElementPath.remove(2);
355       
356        guiElementPath.add(new TestGUIElementSpec("guiElem5"));
357        guiElementPath.add(new TestGUIElementSpec("guiElem6"));
358
359        model.integratePath(guiElementPath, guiElementFactory);
360       
361        guiElementPath.remove(3);
362       
363        guiElementPath.add(new TestGUIElementSpec("guiElem7"));
364        guiElementPath.add(new TestGUIElementSpec("guiElem8"));
365
366        model.integratePath(guiElementPath, guiElementFactory);
367       
368        guiElementPath.remove(1);
369        guiElementPath.remove(1);
370        guiElementPath.remove(1);
371        guiElementPath.remove(1);
372       
373        guiElementPath.add(new TestGUIElementSpec("guiElem9"));
374        guiElementPath.add(new TestGUIElementSpec("guiElem10"));
375
376        model.integratePath(guiElementPath, guiElementFactory);
377       
378        // the model created is
379        // guiElem1
380        //   |-- guiElem2
381        //   |     |-- guiElem3
382        //   |     |     \-- guiElem4
383        //   |     |
384        //   |     \-- guiElem5
385        //   |           |-- guiElem6
386        //   |           \-- guiElem7
387        //   |                 \-- guiElem8
388        //   \-- guiElem9
389        //         \-- guiElem10
390       
391        GUIModel.Traverser traverser = model.getTraverser();
392        assertNotNull(traverser);
393        assertTrue(traverser.hasFirstChild());
394        assertFalse(traverser.hasNextSibling());
395        assertNull(traverser.parent());
396       
397        // guiElem1
398        IGUIElement element = traverser.firstChild();
399        assertNotNull(element);
400        assertTrue(element.getSpecification() instanceof TestGUIElementSpec);
401        assertEquals("guiElem1", ((TestGUIElementSpec) element.getSpecification()).id);
402        assertTrue(traverser.hasFirstChild());
403        assertFalse(traverser.hasNextSibling());
404        assertNull(traverser.nextSibling());
405       
406        // guiElem2
407        element = traverser.firstChild();
408        assertNotNull(element);
409        assertTrue(element.getSpecification() instanceof TestGUIElementSpec);
410        assertEquals("guiElem2", ((TestGUIElementSpec) element.getSpecification()).id);
411        assertTrue(traverser.hasFirstChild());
412        assertTrue(traverser.hasNextSibling());
413       
414        // guiElem3
415        element = traverser.firstChild();
416        assertNotNull(element);
417        assertTrue(element.getSpecification() instanceof TestGUIElementSpec);
418        assertEquals("guiElem3", ((TestGUIElementSpec) element.getSpecification()).id);
419        assertTrue(traverser.hasFirstChild());
420        assertTrue(traverser.hasNextSibling());
421       
422        // guiElem4
423        element = traverser.firstChild();
424        assertNotNull(element);
425        assertTrue(element.getSpecification() instanceof TestGUIElementSpec);
426        assertEquals("guiElem4", ((TestGUIElementSpec) element.getSpecification()).id);
427        assertFalse(traverser.hasFirstChild());
428        assertNull(traverser.firstChild());
429        assertFalse(traverser.hasNextSibling());
430        assertNull(traverser.nextSibling());
431
432        // guiElem3
433        element = traverser.parent();
434        assertNotNull(element);
435        assertTrue(element.getSpecification() instanceof TestGUIElementSpec);
436        assertEquals("guiElem3", ((TestGUIElementSpec) element.getSpecification()).id);
437        assertTrue(traverser.hasFirstChild());
438        assertTrue(traverser.hasNextSibling());
439       
440        // guiElem5
441        element = traverser.nextSibling();
442        assertNotNull(element);
443        assertTrue(element.getSpecification() instanceof TestGUIElementSpec);
444        assertEquals("guiElem5", ((TestGUIElementSpec) element.getSpecification()).id);
445        assertTrue(traverser.hasFirstChild());
446        assertFalse(traverser.hasNextSibling());
447        assertNull(traverser.nextSibling());
448       
449        // guiElem6
450        element = traverser.firstChild();
451        assertNotNull(element);
452        assertTrue(element.getSpecification() instanceof TestGUIElementSpec);
453        assertEquals("guiElem6", ((TestGUIElementSpec) element.getSpecification()).id);
454        assertFalse(traverser.hasFirstChild());
455        assertNull(traverser.firstChild());
456        assertTrue(traverser.hasNextSibling());
457       
458        // guiElem7
459        element = traverser.nextSibling();
460        assertNotNull(element);
461        assertTrue(element.getSpecification() instanceof TestGUIElementSpec);
462        assertEquals("guiElem7", ((TestGUIElementSpec) element.getSpecification()).id);
463        assertTrue(traverser.hasFirstChild());
464        assertFalse(traverser.hasNextSibling());
465        assertNull(traverser.nextSibling());
466       
467        // guiElem8
468        element = traverser.firstChild();
469        assertNotNull(element);
470        assertTrue(element.getSpecification() instanceof TestGUIElementSpec);
471        assertEquals("guiElem8", ((TestGUIElementSpec) element.getSpecification()).id);
472        assertFalse(traverser.hasFirstChild());
473        assertNull(traverser.firstChild());
474        assertFalse(traverser.hasNextSibling());
475        assertNull(traverser.nextSibling());
476       
477        // guiElem7
478        element = traverser.parent();
479        assertNotNull(element);
480        assertTrue(element.getSpecification() instanceof TestGUIElementSpec);
481        assertEquals("guiElem7", ((TestGUIElementSpec) element.getSpecification()).id);
482        assertTrue(traverser.hasFirstChild());
483        assertFalse(traverser.hasNextSibling());
484        assertNull(traverser.nextSibling());
485       
486        // guiElem5
487        element = traverser.parent();
488        assertNotNull(element);
489        assertTrue(element.getSpecification() instanceof TestGUIElementSpec);
490        assertEquals("guiElem5", ((TestGUIElementSpec) element.getSpecification()).id);
491        assertTrue(traverser.hasFirstChild());
492        assertFalse(traverser.hasNextSibling());
493        assertNull(traverser.nextSibling());
494       
495        // guiElem2
496        element = traverser.parent();
497        assertNotNull(element);
498        assertTrue(element.getSpecification() instanceof TestGUIElementSpec);
499        assertEquals("guiElem2", ((TestGUIElementSpec) element.getSpecification()).id);
500        assertTrue(traverser.hasFirstChild());
501        assertTrue(traverser.hasNextSibling());
502       
503        // guiElem9
504        element = traverser.nextSibling();
505        assertNotNull(element);
506        assertTrue(element.getSpecification() instanceof TestGUIElementSpec);
507        assertEquals("guiElem9", ((TestGUIElementSpec) element.getSpecification()).id);
508        assertTrue(traverser.hasFirstChild());
509        assertFalse(traverser.hasNextSibling());
510        assertNull(traverser.nextSibling());
511       
512        // guiElem10
513        element = traverser.firstChild();
514        assertNotNull(element);
515        assertTrue(element.getSpecification() instanceof TestGUIElementSpec);
516        assertEquals("guiElem10", ((TestGUIElementSpec) element.getSpecification()).id);
517        assertFalse(traverser.hasFirstChild());
518        assertNull(traverser.firstChild());
519        assertFalse(traverser.hasNextSibling());
520        assertNull(traverser.nextSibling());
521       
522        // guiElem9
523        element = traverser.parent();
524        assertNotNull(element);
525        assertTrue(element.getSpecification() instanceof TestGUIElementSpec);
526        assertEquals("guiElem9", ((TestGUIElementSpec) element.getSpecification()).id);
527        assertTrue(traverser.hasFirstChild());
528        assertFalse(traverser.hasNextSibling());
529        assertNull(traverser.nextSibling());
530       
531        // guiElem1
532        element = traverser.parent();
533        assertNotNull(element);
534        assertTrue(element.getSpecification() instanceof TestGUIElementSpec);
535        assertEquals("guiElem1", ((TestGUIElementSpec) element.getSpecification()).id);
536        assertTrue(traverser.hasFirstChild());
537        assertFalse(traverser.hasNextSibling());
538        assertNull(traverser.nextSibling());
539       
540        assertNull(traverser.parent());
541    }
542
543    /**
544     *
545     */
546    @Test
547    public void test_Traverser_02() throws Exception {
548        GUIModel model = new GUIModel();
549       
550        List<IGUIElementSpec> guiElementPath = new ArrayList<IGUIElementSpec>();
551        guiElementPath.add(new TestGUIElementSpec("guiElem1"));
552        guiElementPath.add(new TestGUIElementSpec("guiElem2"));
553        guiElementPath.add(new TestGUIElementSpec("guiElem3"));
554        guiElementPath.add(new TestGUIElementSpec("guiElem4"));
555       
556        model.integratePath(guiElementPath, guiElementFactory);
557
558        guiElementPath.remove(2);
559        guiElementPath.remove(2);
560       
561        guiElementPath.add(new TestGUIElementSpec("guiElem5"));
562        guiElementPath.add(new TestGUIElementSpec("guiElem6"));
563
564        IGUIElement target = model.integratePath(guiElementPath, guiElementFactory);
565       
566        guiElementPath.remove(3);
567       
568        guiElementPath.add(new TestGUIElementSpec("guiElem7"));
569        guiElementPath.add(new TestGUIElementSpec("guiElem8"));
570
571        model.integratePath(guiElementPath, guiElementFactory);
572       
573        guiElementPath.remove(1);
574        guiElementPath.remove(1);
575        guiElementPath.remove(1);
576        guiElementPath.remove(1);
577       
578        guiElementPath.add(new TestGUIElementSpec("guiElem9"));
579        guiElementPath.add(new TestGUIElementSpec("guiElem10"));
580
581        model.integratePath(guiElementPath, guiElementFactory);
582       
583        // the model created is
584        // guiElem1
585        //   |-- guiElem2
586        //   |     |-- guiElem3
587        //   |     |     \-- guiElem4
588        //   |     |
589        //   |     \-- guiElem5
590        //   |           |-- guiElem6
591        //   |           \-- guiElem7
592        //   |                 \-- guiElem8
593        //   \-- guiElem9
594        //         \-- guiElem10
595       
596        GUIModel.Traverser traverser = model.getTraverser(target);
597        assertNotNull(traverser);
598        assertFalse(traverser.hasFirstChild());
599        assertNull(traverser.firstChild());
600        assertTrue(traverser.hasNextSibling());
601       
602        // guiElem7
603        IGUIElement element = traverser.nextSibling();
604        assertNotNull(element);
605        assertTrue(element.getSpecification() instanceof TestGUIElementSpec);
606        assertEquals("guiElem7", ((TestGUIElementSpec) element.getSpecification()).id);
607        assertTrue(traverser.hasFirstChild());
608        assertFalse(traverser.hasNextSibling());
609        assertNull(traverser.nextSibling());
610       
611        // guiElem8
612        element = traverser.firstChild();
613        assertNotNull(element);
614        assertTrue(element.getSpecification() instanceof TestGUIElementSpec);
615        assertEquals("guiElem8", ((TestGUIElementSpec) element.getSpecification()).id);
616        assertFalse(traverser.hasFirstChild());
617        assertNull(traverser.firstChild());
618        assertFalse(traverser.hasNextSibling());
619        assertNull(traverser.nextSibling());
620       
621        // guiElem7
622        element = traverser.parent();
623        assertNotNull(element);
624        assertTrue(element.getSpecification() instanceof TestGUIElementSpec);
625        assertEquals("guiElem7", ((TestGUIElementSpec) element.getSpecification()).id);
626        assertTrue(traverser.hasFirstChild());
627        assertFalse(traverser.hasNextSibling());
628        assertNull(traverser.nextSibling());
629       
630        // guiElem5
631        element = traverser.parent();
632        assertNotNull(element);
633        assertTrue(element.getSpecification() instanceof TestGUIElementSpec);
634        assertEquals("guiElem5", ((TestGUIElementSpec) element.getSpecification()).id);
635        assertTrue(traverser.hasFirstChild());
636        assertFalse(traverser.hasNextSibling());
637        assertNull(traverser.nextSibling());
638       
639        // guiElem2
640        element = traverser.parent();
641        assertNotNull(element);
642        assertTrue(element.getSpecification() instanceof TestGUIElementSpec);
643        assertEquals("guiElem2", ((TestGUIElementSpec) element.getSpecification()).id);
644        assertTrue(traverser.hasFirstChild());
645        assertTrue(traverser.hasNextSibling());
646       
647        // guiElem9
648        element = traverser.nextSibling();
649        assertNotNull(element);
650        assertTrue(element.getSpecification() instanceof TestGUIElementSpec);
651        assertEquals("guiElem9", ((TestGUIElementSpec) element.getSpecification()).id);
652        assertTrue(traverser.hasFirstChild());
653        assertFalse(traverser.hasNextSibling());
654        assertNull(traverser.nextSibling());
655       
656        // guiElem10
657        element = traverser.firstChild();
658        assertNotNull(element);
659        assertTrue(element.getSpecification() instanceof TestGUIElementSpec);
660        assertEquals("guiElem10", ((TestGUIElementSpec) element.getSpecification()).id);
661        assertFalse(traverser.hasFirstChild());
662        assertNull(traverser.firstChild());
663        assertFalse(traverser.hasNextSibling());
664        assertNull(traverser.nextSibling());
665       
666        // guiElem9
667        element = traverser.parent();
668        assertNotNull(element);
669        assertTrue(element.getSpecification() instanceof TestGUIElementSpec);
670        assertEquals("guiElem9", ((TestGUIElementSpec) element.getSpecification()).id);
671        assertTrue(traverser.hasFirstChild());
672        assertFalse(traverser.hasNextSibling());
673        assertNull(traverser.nextSibling());
674       
675        // guiElem1
676        element = traverser.parent();
677        assertNotNull(element);
678        assertTrue(element.getSpecification() instanceof TestGUIElementSpec);
679        assertEquals("guiElem1", ((TestGUIElementSpec) element.getSpecification()).id);
680        assertTrue(traverser.hasFirstChild());
681        assertFalse(traverser.hasNextSibling());
682        assertNull(traverser.nextSibling());
683       
684        assertNull(traverser.parent());
685    }
686
687    /**
688     *
689     * @author Patrick Harms
690     */
691    private class TestGUIElementFactory implements IGUIElementFactory {
692
693        /* (non-Javadoc)
694         * @see IGUIElementFactory#instantiateGUIElement(IGUIElementSpec, IGUIElement)
695         */
696        @Override
697        public IGUIElement instantiateGUIElement(IGUIElementSpec specification, IGUIElement parent)
698            throws GUIModelConfigurationException
699        {
700            assertTrue(specification instanceof TestGUIElementSpec);
701           
702            return new TestGUIElement((TestGUIElementSpec) specification, parent);
703        }
704
705    }
706
707    /**
708     *
709     * @author Patrick Harms
710     */
711    private class TestGUIElementSpec implements IGUIElementSpec {
712
713        /**  */
714        private static final long serialVersionUID = 1L;
715       
716        /** */
717        private String id;
718
719        /** */
720        private String similarityId;
721
722        /**
723         *
724         */
725        public TestGUIElementSpec(String id) {
726            this(id, "");
727        }
728
729        /**
730         *
731         */
732        public TestGUIElementSpec(String id, String similarityId) {
733            this.id = id;
734            this.similarityId = similarityId;
735            assertNotNull(id);
736            assertNotNull(similarityId);
737        }
738
739        /* (non-Javadoc)
740         * @see de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElementSpec#getType()
741         */
742        @Override
743        public String getType() {
744            return "TestGUIElement";
745        }
746
747        /* (non-Javadoc)
748         * @see de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElementSpec#getTypeHierarchy()
749         */
750        @Override
751        public String[] getTypeHierarchy() {
752            return new String[] { "TestGUIElement" };
753        }
754
755        /* (non-Javadoc)
756         * @see IGUIElementSpec#getSimilarity(IGUIElementSpec)
757         */
758        @Override
759        public boolean getSimilarity(IGUIElementSpec other) {
760            return (other instanceof TestGUIElementSpec ?
761                ((TestGUIElementSpec) other).similarityId.equals(similarityId) : false);
762        }
763
764        /* (non-Javadoc)
765         * @see java.lang.Object#equals(java.lang.Object)
766         */
767        @Override
768        public boolean equals(Object other) {
769            return (other instanceof TestGUIElementSpec ?
770                ((TestGUIElementSpec) other).id.equals(id) : false);
771        }
772
773    }
774
775    /**
776     *
777     * @author Patrick Harms
778     */
779    public class TestGUIElement extends AbstractDefaultGUIElement implements IGUIElement {
780
781        /**  */
782        private static final long serialVersionUID = 1L;
783
784        /**
785         *
786         */
787        public TestGUIElement(TestGUIElementSpec specification, IGUIElement parent) {
788            super(specification, parent);
789        }
790
791        /* (non-Javadoc)
792         * @see de.ugoe.cs.autoquest.eventcore.IEventTarget#getPlatform()
793         */
794        @Override
795        public String getPlatform() {
796            return "TEST";
797        }
798
799        /* (non-Javadoc)
800         * @see de.ugoe.cs.autoquest.eventcore.IEventTarget#getStringIdentifier()
801         */
802        @Override
803        public String getStringIdentifier() {
804            return ((TestGUIElementSpec) super.getSpecification()).id;
805        }
806
807        /* (non-Javadoc)
808         * @see de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElement#updateSpecification(de.ugoe.cs.autoquest.eventcore.guimodel.IGUIElementSpec)
809         */
810        @Override
811        public void updateSpecification(IGUIElementSpec furtherSpec) {
812            // do nothing
813        }
814
815    }
816
817}
Note: See TracBrowser for help on using the repository browser.