1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.apache.commons.scxml.io;
17
18 import java.util.ArrayList;
19 import java.util.List;
20
21 import junit.framework.Test;
22 import junit.framework.TestCase;
23 import junit.framework.TestSuite;
24
25 import org.apache.commons.scxml.model.Assign;
26 import org.apache.commons.scxml.model.Cancel;
27 import org.apache.commons.scxml.model.Else;
28 import org.apache.commons.scxml.model.ElseIf;
29 import org.apache.commons.scxml.model.Exit;
30 import org.apache.commons.scxml.model.If;
31 import org.apache.commons.scxml.model.Log;
32 import org.apache.commons.scxml.model.OnEntry;
33 import org.apache.commons.scxml.model.OnExit;
34 import org.apache.commons.scxml.model.SCXML;
35 import org.apache.commons.scxml.model.Send;
36 import org.apache.commons.scxml.model.State;
37 import org.apache.commons.scxml.model.TransitionTarget;
38 import org.apache.commons.scxml.model.Var;
39
40 public class SCXMLSerializerTest extends TestCase {
41
42 public SCXMLSerializerTest(String testName) {
43 super(testName);
44 }
45
46 public static Test suite() {
47 return new TestSuite(SCXMLSerializerTest.class);
48 }
49
50 public static void main(String args[]) {
51 String[] testCaseName = { SCXMLSerializerTest.class.getName()};
52 junit.textui.TestRunner.main(testCaseName);
53 }
54
55 public void testSerializeSCXMLNoStates() {
56 SCXML scxml = new SCXML();
57 scxml.setXmlns("namespace");
58 scxml.setVersion("version1");
59 scxml.setInitialstate("off");
60 scxml.addState(new State());
61
62 String assertValue = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
63 + "<scxml xmlns=\"namespace\" version=\"version1\" "
64 + "initialstate=\"off\">\n <state>\n </state>\n</scxml>\n";
65
66 assertEquals(assertValue, SCXMLSerializer.serialize(scxml));
67 }
68
69 public void testSerializeSend() {
70 Send send = new Send();
71 send.setSendid("1");
72 send.setTarget("newTarget");
73 send.setTargettype("newTargetType");
74 send.setNamelist("names");
75 send.setDelay("4 secs");
76 send.setEvent("turnoff");
77 send.setHints("guess");
78
79 String assertValue = " <send sendid=\"1\" " +
80 "target=\"newTarget\" " +
81 "targetType=\"newTargetType\" " +
82 "namelist=\"names\" " +
83 "delay=\"4 secs\" " +
84 "events=\"turnoff\" " +
85 "hints=\"guess\">\n </send>\n";
86
87 StringBuffer returnValue = new StringBuffer();
88 SCXMLSerializer.serializeSend(returnValue, send, " ");
89
90 assertEquals(assertValue.toString(), returnValue.toString());
91 }
92
93 public void testSerializeActionsListNull() {
94 TransitionTarget target = new State();
95 target.setId("1");
96
97 StringBuffer returnValue = new StringBuffer();
98 boolean returnBoolean = SCXMLSerializer.serializeActions(returnValue, null, " ");
99
100 assertFalse(returnBoolean);
101 assertEquals(0, returnValue.length());
102 }
103
104 public void testSerializeActionsVar() {
105 Var var = new Var();
106 var.setName("newName");
107 var.setExpr("newExpression");
108
109 List values = new ArrayList();
110 values.add(var);
111
112 String actualValue = " <var name=\"newName\" expr=\"newExpression\"/>\n";
113
114 StringBuffer returnValue = new StringBuffer();
115 boolean returnBoolean = SCXMLSerializer.serializeActions(returnValue, values, " ");
116
117 assertFalse(returnBoolean);
118 assertEquals(actualValue, returnValue.toString());
119 }
120
121 public void testSerializeActionsAssign() {
122 Assign assign = new Assign();
123 assign.setName("newName");
124 assign.setExpr("newExpression");
125
126 List values = new ArrayList();
127 values.add(assign);
128
129 String actualValue = " <assign name=\"newName\" expr=\"newExpression\"/>\n";
130
131 StringBuffer returnValue = new StringBuffer();
132 boolean returnBoolean = SCXMLSerializer.serializeActions(returnValue, values, " ");
133
134 assertFalse(returnBoolean);
135 assertEquals(actualValue, returnValue.toString());
136 }
137
138 public void testSerializeActionsCancel() {
139 Cancel cancel = new Cancel();
140 cancel.setSendid("1");
141
142 List values = new ArrayList();
143 values.add(cancel);
144
145 String actualValue = " <cancel sendid=\"1\"/>\n";
146
147 StringBuffer returnValue = new StringBuffer();
148 boolean returnBoolean = SCXMLSerializer.serializeActions(returnValue, values, " ");
149
150 assertFalse(returnBoolean);
151 assertEquals(actualValue, returnValue.toString());
152 }
153
154 public void testSerializeActionsLog() {
155 Log log = new Log();
156 log.setExpr("newExpression");
157
158 List values = new ArrayList();
159 values.add(log);
160
161 String actualValue = " <log expr=\"newExpression\"/>\n";
162
163 StringBuffer returnValue = new StringBuffer();
164 boolean returnBoolean = SCXMLSerializer.serializeActions(returnValue, values, " ");
165
166 assertFalse(returnBoolean);
167 assertEquals(actualValue, returnValue.toString());
168 }
169
170 public void testSerializeActionsExit() {
171 Exit exit = new Exit();
172 exit.setExpr("newExpression");
173 exit.setNamelist("names");
174
175 List values = new ArrayList();
176 values.add(exit);
177
178 String actualValue = " <exit expr=\"newExpression\" namelist=\"names\"/>\n";
179
180 StringBuffer returnValue = new StringBuffer();
181 boolean returnBoolean = SCXMLSerializer.serializeActions(returnValue, values, " ");
182
183 assertTrue(returnBoolean);
184 assertEquals(actualValue, returnValue.toString());
185 }
186
187 public void testSerializeActionsElse() {
188 Else elseValue = new Else();
189
190 List values = new ArrayList();
191 values.add(elseValue);
192
193 String actualValue = " <else/>\n";
194
195 StringBuffer returnValue = new StringBuffer();
196 boolean returnBoolean = SCXMLSerializer.serializeActions(returnValue, values, " ");
197
198 assertFalse(returnBoolean);
199 assertEquals(actualValue, returnValue.toString());
200 }
201
202 public void testSerializeActionsElseIf() {
203 ElseIf elseIf = new ElseIf();
204 elseIf.setCond("newCondition");
205
206 List values = new ArrayList();
207 values.add(elseIf);
208
209 String actualValue = " <elseif cond=\"newCondition\" />\n";
210
211 StringBuffer returnValue = new StringBuffer();
212 boolean returnBoolean = SCXMLSerializer.serializeActions(returnValue, values, " ");
213
214 assertFalse(returnBoolean);
215 assertEquals(actualValue, returnValue.toString());
216 }
217
218 public void testSerializeIf() {
219 If ifValue = new If();
220 ifValue.setCond("newCondition");
221
222 List values = new ArrayList();
223 values.add(ifValue);
224
225 String actualValue = " <if cond=\"newCondition\">\n </if>\n";
226
227 StringBuffer returnValue = new StringBuffer();
228 boolean returnBoolean = SCXMLSerializer.serializeActions(returnValue, values, " ");
229
230 assertFalse(returnBoolean);
231 assertEquals(actualValue, returnValue.toString());
232 }
233
234 public void testSerializeOnEntrySizeZero() {
235 TransitionTarget target = new State();
236 target.setOnEntry(new OnEntry());
237
238 String actualValue = "";
239
240 StringBuffer returnValue = new StringBuffer();
241 SCXMLSerializer.serializeOnEntry(returnValue, target, " ");
242
243 assertEquals(actualValue, returnValue.toString());
244 }
245
246 public void testSerializeOnEntry() {
247 TransitionTarget target = new State();
248
249 OnEntry onEntry = new OnEntry();
250 onEntry.addAction(new Else());
251
252 target.setOnEntry(onEntry);
253
254 String actualValue = " <onentry>\n <else/>\n </onentry>\n";
255
256 StringBuffer returnValue = new StringBuffer();
257 SCXMLSerializer.serializeOnEntry(returnValue, target, " ");
258
259 assertEquals(actualValue, returnValue.toString());
260 }
261
262 public void testSerializeOnExitSizeZero() {
263 TransitionTarget target = new State();
264 target.setOnExit(new OnExit());
265
266 String actualValue = "";
267
268 StringBuffer returnValue = new StringBuffer();
269 SCXMLSerializer.serializeOnExit(returnValue, target, " ");
270
271 assertEquals(actualValue, returnValue.toString());
272 }
273
274 public void testSerializeOnExit() {
275 TransitionTarget target = new State();
276
277 OnExit onExit = new OnExit();
278 onExit.addAction(new Else());
279
280 target.setOnExit(onExit);
281
282 String actualValue = " <onexit>\n <else/>\n </onexit>\n";
283
284 StringBuffer returnValue = new StringBuffer();
285 SCXMLSerializer.serializeOnExit(returnValue, target, " ");
286
287 assertEquals(actualValue, returnValue.toString());
288 }
289
290 }