1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.scxml2;
18
19 import java.util.Set;
20
21 import org.apache.commons.scxml2.model.EnterableState;
22 import org.apache.commons.scxml2.model.TransitionTarget;
23 import org.junit.Assert;
24 import org.junit.Test;
25
26
27
28
29
30
31
32
33
34
35
36
37 public class TieBreakerTest {
38
39 @Test
40 public void testTieBreaker01() throws Exception {
41 SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/tie-breaker-01.xml");
42 exec.go();
43 Set<EnterableState> currentStates = exec.getStatus().getStates();
44 Assert.assertEquals(1, currentStates.size());
45 Assert.assertEquals("ten", currentStates.iterator().next().getId());
46 currentStates = SCXMLTestHelper.fireEvent(exec, "done.state.ten");
47 Assert.assertEquals(1, currentStates.size());
48 Assert.assertEquals("twenty", currentStates.iterator().next().getId());
49 }
50
51 @Test
52 public void testTieBreaker02() throws Exception {
53 SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/tie-breaker-02.xml");
54 exec.go();
55 Set<EnterableState> currentStates = exec.getStatus().getStates();
56 Assert.assertEquals(1, currentStates.size());
57 Assert.assertEquals("eleven", currentStates.iterator().next().getId());
58 currentStates = SCXMLTestHelper.fireEvent(exec, "done.state.ten");
59 Assert.assertEquals(1, currentStates.size());
60 Assert.assertEquals("thirty", currentStates.iterator().next().getId());
61 }
62
63 @Test
64 public void testTieBreaker03() throws Exception {
65 SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/tie-breaker-03.xml");
66 exec.go();
67 Set<EnterableState> currentStates = exec.getStatus().getStates();
68 Assert.assertEquals(1, currentStates.size());
69 Assert.assertEquals("eleven", currentStates.iterator().next().getId());
70 currentStates = SCXMLTestHelper.fireEvent(exec, "done.state.ten");
71 Assert.assertEquals(1, currentStates.size());
72 Assert.assertEquals("forty", currentStates.iterator().next().getId());
73 }
74
75 @Test
76 public void testTieBreaker04() throws Exception {
77 SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/tie-breaker-04.xml");
78 exec.go();
79 Set<EnterableState> currentStates = SCXMLTestHelper.fireEvent(exec, "event_2");
80 Assert.assertEquals(1, currentStates.size());
81 currentStates = SCXMLTestHelper.fireEvent(exec, "event_1");
82 Assert.assertEquals(1, currentStates.size());
83 }
84
85 @Test
86 public void testTieBreaker05() throws Exception {
87 SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/tie-breaker-05.xml");
88 exec.go();
89 Set<EnterableState> currentStates = exec.getStatus().getStates();
90 Assert.assertEquals(3, currentStates.size());
91 for (TransitionTarget tt : currentStates) {
92 String id = tt.getId();
93 Assert.assertTrue(id.equals("s11") || id.equals("s212")
94 || id.equals("s2111"));
95 }
96 currentStates = SCXMLTestHelper.fireEvent(exec, "event1");
97 Assert.assertEquals(3, currentStates.size());
98 for (TransitionTarget tt : currentStates) {
99 String id = tt.getId();
100 Assert.assertTrue(id.equals("s12") || id.equals("s212")
101 || id.equals("s2112"));
102 }
103 }
104
105 @Test
106 public void testTieBreaker06() throws Exception {
107 SCXMLExecutor exec = SCXMLTestHelper.getExecutor("org/apache/commons/scxml2/tie-breaker-06.xml");
108 exec.go();
109 Set<EnterableState> currentStates = exec.getStatus().getStates();
110 Assert.assertEquals(1, currentStates.size());
111 }
112 }