1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.scxml;
18
19 import java.net.URL;
20 import java.util.Set;
21
22 import junit.framework.Test;
23 import junit.framework.TestCase;
24 import junit.framework.TestSuite;
25 import junit.textui.TestRunner;
26
27 import org.apache.commons.scxml.env.jsp.ELContext;
28 import org.apache.commons.scxml.env.jsp.ELEvaluator;
29 import org.apache.commons.scxml.model.State;
30
31 /***
32 * Unit tests for namespace prefixes in XPaths pointing bits in a <data>.
33 */
34 public class NamespacePrefixedXPathsTest extends TestCase {
35
36 /***
37 * Construct a new instance of NamespacePrefixedXPathsTest with
38 * the specified name
39 */
40 public NamespacePrefixedXPathsTest(String name) {
41 super(name);
42 }
43
44 public static Test suite() {
45 TestSuite suite = new TestSuite(NamespacePrefixedXPathsTest.class);
46 suite.setName("Namespace Prefixed XPaths Tests");
47 return suite;
48 }
49
50
51 private URL datamodel03jexl, datamodel03jsp;
52 private SCXMLExecutor exec01, exec02;
53
54 /***
55 * Set up instance variables required by this test case.
56 */
57 public void setUp() {
58 datamodel03jexl = this.getClass().getClassLoader().
59 getResource("org/apache/commons/scxml/env/jexl/datamodel-03.xml");
60 datamodel03jsp = this.getClass().getClassLoader().
61 getResource("org/apache/commons/scxml/env/jsp/datamodel-03.xml");
62 exec01 = SCXMLTestHelper.getExecutor(datamodel03jexl);
63 exec02 = SCXMLTestHelper.getExecutor(datamodel03jsp, new ELContext(), new ELEvaluator());
64 }
65
66 /***
67 * Tear down instance variables required by this test case.
68 */
69 public void tearDown() {
70 datamodel03jexl = datamodel03jsp = null;
71 exec01 = exec02 = null;
72 }
73
74 /***
75 * Test the XPath evaluation
76 */
77
78 public void testNamespacePrefixedXPathsJexl() {
79 runtest(exec01);
80 }
81
82
83 public void testNamespacePrefixedXPathsEL() {
84 runtest(exec02);
85 }
86
87
88 private void runtest(SCXMLExecutor exec) {
89
90 try {
91
92
93 Set currentStates = exec.getCurrentStatus().getStates();
94 assertEquals(1, currentStates.size());
95 assertEquals("ten", ((State)currentStates.iterator().
96 next()).getId());
97
98
99 currentStates = SCXMLTestHelper.fireEvent(exec, "ten.done");
100 assertEquals(1, currentStates.size());
101 assertEquals("twenty", ((State)currentStates.iterator().
102 next()).getId());
103
104
105 Double retval = (Double) exec.getRootContext().get("retval");
106 assertEquals(Double.valueOf("11"), retval);
107
108
109 currentStates = SCXMLTestHelper.fireEvent(exec, "twenty.done");
110 assertEquals(1, currentStates.size());
111 assertEquals("thirty", ((State)currentStates.iterator().
112 next()).getId());
113 exec = SCXMLTestHelper.testExecutorSerializability(exec);
114
115
116 String retvalstr = (String) exec.getRootContext().get("retval");
117 assertEquals("Equal to 20", retvalstr);
118
119
120 currentStates = SCXMLTestHelper.fireEvent(exec, "thirty.done");
121 assertEquals(1, currentStates.size());
122 assertEquals("forty", ((State)currentStates.iterator().
123 next()).getId());
124
125 currentStates = SCXMLTestHelper.fireEvent(exec, "forty.done");
126 assertEquals(1, currentStates.size());
127 assertEquals("fifty", ((State)currentStates.iterator().
128 next()).getId());
129
130 currentStates = SCXMLTestHelper.fireEvent(exec, "fifty.done");
131 assertEquals(1, currentStates.size());
132 assertEquals("sixty", ((State)currentStates.iterator().
133 next()).getId());
134
135 currentStates = SCXMLTestHelper.fireEvent(exec, "sixty.done");
136 assertEquals(1, currentStates.size());
137 assertEquals("seventy", ((State)currentStates.iterator().
138 next()).getId());
139
140
141 assertTrue(exec.getCurrentStatus().isFinal());
142
143 } catch (Exception e) {
144 fail(e.getMessage());
145 }
146
147 }
148
149 public static void main(String args[]) {
150 TestRunner.run(suite());
151 }
152
153 }
154