1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.apache.commons.scxml;
17
18 import java.net.URL;
19 import java.util.Set;
20
21 import junit.framework.Test;
22 import junit.framework.TestCase;
23 import junit.framework.TestSuite;
24 import junit.textui.TestRunner;
25
26 import org.apache.commons.scxml.env.SimpleContext;
27 import org.apache.commons.scxml.env.jsp.ELEvaluator;
28 import org.apache.commons.scxml.model.State;
29 /***
30 * Unit tests {@link org.apache.commons.scxml.SCXMLExecutor}.
31 */
32 public class SCXMLExecutorTest extends TestCase {
33 /***
34 * Construct a new instance of SCXMLExecutorTest with
35 * the specified name
36 */
37 public SCXMLExecutorTest(String name) {
38 super(name);
39 }
40
41 public static Test suite() {
42 TestSuite suite = new TestSuite(SCXMLExecutorTest.class);
43 suite.setName("SCXML Executor Tests");
44 return suite;
45 }
46
47
48 private URL microwave01jsp, microwave02jsp, microwave01jexl,
49 microwave02jexl, transitions01, send02;
50 private SCXMLExecutor exec;
51
52 /***
53 * Set up instance variables required by this test case.
54 */
55 public void setUp() {
56 microwave01jsp = this.getClass().getClassLoader().
57 getResource("org/apache/commons/scxml/env/jsp/microwave-01.xml");
58 microwave02jsp = this.getClass().getClassLoader().
59 getResource("org/apache/commons/scxml/env/jsp/microwave-02.xml");
60 microwave01jexl = this.getClass().getClassLoader().
61 getResource("org/apache/commons/scxml/env/jexl/microwave-01.xml");
62 microwave02jexl = this.getClass().getClassLoader().
63 getResource("org/apache/commons/scxml/env/jexl/microwave-02.xml");
64 transitions01 = this.getClass().getClassLoader().
65 getResource("org/apache/commons/scxml/transitions-01.xml");
66 send02 = this.getClass().getClassLoader().
67 getResource("org/apache/commons/scxml/send-02.xml");
68 }
69
70 /***
71 * Tear down instance variables required by this test case.
72 */
73 public void tearDown() {
74 microwave01jsp = microwave02jsp = microwave01jexl = microwave02jexl =
75 transitions01 = send02 = null;
76 }
77
78 /***
79 * Test the implementation
80 */
81 public void testSCXMLExecutorMicrowave01JspSample() {
82 exec = SCXMLTestHelper.getExecutor(microwave01jsp,
83 new SimpleContext(), new ELEvaluator());
84 assertNotNull(exec);
85 checkMicrowave01Sample();
86 }
87
88 public void testSCXMLExecutorMicrowave02JspSample() {
89 exec = SCXMLTestHelper.getExecutor(microwave02jsp,
90 new SimpleContext(), new ELEvaluator());
91 assertNotNull(exec);
92 checkMicrowave02Sample();
93 }
94
95 public void testSCXMLExecutorMicrowave01JexlSample() {
96 exec = SCXMLTestHelper.getExecutor(microwave01jexl);
97 assertNotNull(exec);
98 checkMicrowave01Sample();
99 }
100
101 public void testSCXMLExecutorMicrowave02JexlSample() {
102 exec = SCXMLTestHelper.getExecutor(microwave02jexl);
103 assertNotNull(exec);
104 checkMicrowave02Sample();
105 }
106
107 public void testSCXMLExecutorTransitions01Sample() {
108 exec = SCXMLTestHelper.getExecutor(transitions01);
109 assertNotNull(exec);
110 try {
111 Set currentStates = SCXMLTestHelper.fireEvent(exec, "ten.done");
112 assertEquals(1, currentStates.size());
113 assertEquals("twenty_one", ((State)currentStates.iterator().
114 next()).getId());
115 currentStates = SCXMLTestHelper.fireEvent(exec, "twenty_one.done");
116 assertEquals(1, currentStates.size());
117 assertEquals("twenty_two", ((State)currentStates.iterator().
118 next()).getId());
119 currentStates = SCXMLTestHelper.fireEvent(exec, "twenty_two.done");
120 assertEquals(3, exec.getCurrentStatus().getStates().size());
121 } catch (Exception e) {
122 fail(e.getMessage());
123 }
124 }
125
126 public void testSendTargettypeSCXMLSample() {
127 exec = SCXMLTestHelper.getExecutor(send02);
128 assertNotNull(exec);
129 try {
130 Set currentStates = exec.getCurrentStatus().getStates();
131 assertEquals(1, currentStates.size());
132 assertEquals("ninety", ((State)currentStates.iterator().
133 next()).getId());
134 } catch (Exception e) {
135 fail(e.getMessage());
136 }
137 }
138
139 private void checkMicrowave01Sample() {
140 try {
141 Set currentStates = SCXMLTestHelper.fireEvent(exec, "turn_on");
142 assertEquals(1, currentStates.size());
143 assertEquals("cooking", ((State)currentStates.iterator().
144 next()).getId());
145 } catch (Exception e) {
146 fail(e.getMessage());
147 }
148 }
149
150 private void checkMicrowave02Sample() {
151 try {
152 Set currentStates = SCXMLTestHelper.fireEvent(exec, "turn_on");
153 assertEquals(2, currentStates.size());
154 String id = ((State)currentStates.iterator().next()).getId();
155 assertTrue(id.equals("closed") || id.equals("cooking"));
156 } catch (Exception e) {
157 fail(e.getMessage());
158 }
159 }
160
161 public static void main(String args[]) {
162 TestRunner.run(suite());
163 }
164 }
165