1
2
3
4
5
6 package net.kwfgrid.gworkflowdl.protocol.calls;
7
8 import junit.framework.TestCase;
9 import net.kwfgrid.gworkflowdl.protocol.structure.*;
10 import net.kwfgrid.gworkflowdl.structure.*;
11 import net.kwfgrid.gworkflowdl.OperationCandidateTest;
12 import org.apache.log4j.Logger;
13 import org.jdom.Element;
14
15 import java.util.LinkedList;
16 import java.util.List;
17
18 /***
19 * Test for the method calls.
20 */
21 public class TestCalls extends TestCase {
22 protected class Event {
23 public static final String ADD = "ADD";
24 public static final String REMOVE = "REMOVE";
25 public static final String CHANGE = "CHANGE";
26
27 public String type = null;
28 public Object value;
29 public Object[] objects;
30 public String name;
31 public String namespace;
32 public IStructureObject parent;
33
34 public Event(IStructureObject parent, String namespace, String name, Object[] objects, String type) {
35 this(parent, namespace, name, type);
36 this.objects = objects;
37 }
38
39 public Event(IStructureObject parent, String namespace, String name, Object value) {
40 this(parent, namespace, name, CHANGE);
41 this.value = value;
42 }
43
44 private Event(IStructureObject parent, String namespace, String name, String type) {
45 this.parent = parent;
46 this.namespace = namespace;
47 this.name = name;
48 this.type = type;
49 this.value = null;
50 this.objects = null;
51 }
52
53 public String toString() {
54 return "Event [" + type + "] {" + namespace + "}" + name + " " + (type.equals(CHANGE) ? value : "" + objects.length);
55 }
56 }
57
58 protected class EventChecker implements IStructureListener {
59 public LinkedList events = new LinkedList();
60
61 public Event getEvent(int i) {
62 return (Event) events.get(i);
63 }
64
65 public void reset() {
66 events.clear();
67 }
68
69 public void objectsAdded(IStructureObject parent, String namespace, String name, List objects) {
70 events.add(new Event(parent, namespace, name, objects.toArray(), Event.ADD));
71 }
72
73 public void objectsRemoved(IStructureObject parent, String namespace, String name, List objects) {
74 events.add(new Event(parent, namespace, name, objects.toArray(), Event.REMOVE));
75 }
76
77 public void propertyChanged(IStructureObject parent, String namespace, String name, Object newvalue) {
78 events.add(new Event(parent, namespace, name, newvalue));
79 }
80 }
81
82 protected static final Logger logger = Logger.getLogger(TestCalls.class);
83 protected EventChecker checker;
84 protected Creator creator;
85
86 public TestCalls() {
87 creator = new DefaultProtocolCreator(new DefaultCreator());
88 initializeFactory();
89 checker = new EventChecker();
90 }
91
92 protected void initializeFactory() {
93 Factory.setCreator(creator);
94 }
95
96 protected Object executeCall(IMethodCall call) throws Exception {
97 Object ret = call.execute();
98 assertTrue("Call is not executed.", call.isExecuted());
99 return ret;
100 }
101
102 protected void executeCall(IMethodCall call, Object returnvalue) throws Exception {
103 Object ret = executeCall(call);
104 assertEquals("Wrong return value.", returnvalue, ret);
105 }
106
107 protected void checkNumberOfEvents(EventChecker thechecker, int num) {
108 assertEquals("Wrong number of events.", num, thechecker.events.size());
109 }
110
111 protected void checkPropertyChangeEvent(Event event, IStructureObject parent, String namespace, String name, Object newvalue) {
112 assertEquals("Wrong type of event.", Event.CHANGE, event.type);
113 assertEquals("Wrong parent in event.", parent, event.parent);
114 assertEquals("Wrong namespace of updated property in event.", namespace, event.namespace);
115 assertEquals("Wrong name of updated property in event.", name, event.name);
116 assertEquals("Wrong new value of updated property in event.", newvalue, event.value);
117 }
118
119 protected void checkObjectsAddedEvent(Event event, IStructureObject parent, String namespace, String name, Object[] obs) {
120 assertEquals("Wrong type of event.", Event.ADD, event.type);
121 assertEquals("Wrong parent in event.", parent, event.parent);
122 assertEquals("Wrong namespace of added objects in event.", namespace, event.namespace);
123 assertEquals("Wrong name of added objects in event.", name, event.name);
124 assertEquals("Wrong number of added objects in event.", obs.length, event.objects.length);
125 for (int i = 0; i < obs.length; i++) {
126 assertSame("Wrong added object in event.", obs[i], event.objects[i]);
127 if (obs[i] instanceof IChildObject) {
128 assertSame("Parent not set correctly.", parent, ((IChildObject) obs[i]).getParent());
129 }
130 }
131 }
132
133 protected void checkObjectsRemovedEvent(Event event, IStructureObject parent, String namespace, String name, Object[] obs) {
134 assertEquals("Wrong type of event.", Event.REMOVE, event.type);
135 assertEquals("Wrong parent in event.", parent, event.parent);
136 assertEquals("Wrong namespace of removed objects in event.", namespace, event.namespace);
137 assertEquals("Wrong name of removed objects in event.", name, event.name);
138 assertEquals("Wrong number of removed objects in event.", obs.length, event.objects.length);
139 for (int i = 0; i < obs.length; i++) {
140 assertSame("Wrong removed object in event.", obs[i], event.objects[i]);
141 if (obs[i] instanceof IChildObject) {
142 assertNotSame("Parent not unset correctly.", parent, ((IChildObject) obs[i]).getParent());
143 }
144 }
145 }
146
147
148
149
150
151 public void testEdgeSetExpression() throws Exception {
152 ProtocolEdge edge = (ProtocolEdge) creator.newEdge();
153 checker.reset();
154 edge.getRoot().addStructureListener(checker);
155 executeCall(new EdgeSetExpression(edge, "expression"));
156 assertEquals("Edge's expression wrong.", "expression", edge.getExpression());
157 checkNumberOfEvents(checker, 1);
158 checkPropertyChangeEvent(checker.getEvent(0), edge, ProtocolEdge.NAMESPACE_PROPERTIES, ProtocolEdge.NAME_EDGEEXPRESSION, "expression");
159 }
160
161 public void testEdgeSetPlace() throws Exception {
162 ProtocolEdge edge = (ProtocolEdge) creator.newEdge();
163 edge.getRoot().addStructureListener(checker);
164
165 ProtocolPlace place = (ProtocolPlace) creator.newPlace();
166 place.setID("theplace");
167
168 checker.reset();
169 executeCall(new EdgeSetPlace(edge, place));
170 assertEquals("Edge's place wrong.", place, edge.getPlace());
171 checkNumberOfEvents(checker, 1);
172 checkPropertyChangeEvent(checker.getEvent(0), edge, ProtocolEdge.NAMESPACE_PROPERTIES, ProtocolEdge.NAME_PLACEID, "theplace");
173 }
174
175
176
177
178
179 public void testPropertySetKey() throws Exception {
180 ProtocolProperty p = (ProtocolProperty) creator.newProperty();
181 checker.reset();
182 p.getRoot().addStructureListener(checker);
183 executeCall(new PropertySetKey(p, "thekey"));
184 assertEquals("Property's key wrong.", "thekey", p.getKey());
185 checkNumberOfEvents(checker, 1);
186 checkPropertyChangeEvent(checker.getEvent(0), p, ProtocolProperty.NAMESPACE_PROPERTIES, ProtocolProperty.NAME_KEY, "thekey");
187 }
188
189 public void testPropertySetValue() throws Exception {
190 ProtocolProperty p = (ProtocolProperty) creator.newProperty();
191 checker.reset();
192 p.getRoot().addStructureListener(checker);
193 executeCall(new PropertySetValue(p, "thevalue"));
194 assertEquals("Property's key wrong.", "thevalue", p.getValue());
195 checkNumberOfEvents(checker, 1);
196 checkPropertyChangeEvent(checker.getEvent(0), p, ProtocolProperty.NAMESPACE, ProtocolProperty.NAME, "thevalue");
197 }
198
199
200
201
202
203 public void testGenericPropertiesPut() throws Exception {
204 ProtocolProperties p = (ProtocolProperties) creator.newProperties();
205 p.getRoot().addStructureListener(checker);
206
207 checker.reset();
208 executeCall(new GenericPropertiesPut(p, "thekey", "thevalue"));
209 assertEquals("Wrong number of properties.", 1, p.size());
210 assertEquals("Wrong value for key.", "thevalue", p.get("thekey"));
211 checkNumberOfEvents(checker, 1);
212 checkObjectsAddedEvent(checker.getEvent(0), p, ProtocolProperty.NAMESPACE, ProtocolProperty.NAME, p.getProperties());
213
214 checker.reset();
215 executeCall(new GenericPropertiesPut(p, "thekey", "thenewvalue"));
216 assertEquals("Wrong number of properties.", 1, p.size());
217 assertEquals("Wrong value for key.", "thenewvalue", p.get("thekey"));
218 checkNumberOfEvents(checker, 1);
219 checkPropertyChangeEvent(checker.getEvent(0), (IStructureObject) p.getProperty(0), ProtocolProperty.NAMESPACE, ProtocolProperty.NAME, "thenewvalue");
220
221 checker.reset();
222 executeCall(new GenericPropertiesPut(p, "thenewkey", "thevaluewhichisnew"));
223 assertEquals("Wrong number of properties.", 2, p.size());
224 assertEquals("Wrong value for key.", "thevaluewhichisnew", p.get("thenewkey"));
225 checkNumberOfEvents(checker, 1);
226 checkObjectsAddedEvent(checker.getEvent(0), p, ProtocolProperty.NAMESPACE, ProtocolProperty.NAME, new Object[]{p.getProperty(1)});
227 }
228
229 public void testGenericPropertiesRemove() throws Exception {
230 ProtocolProperties p = (ProtocolProperties) creator.newProperties();
231 p.getRoot().addStructureListener(checker);
232
233 p.put("thekey", "thevalue");
234 Property old = p.getProperty(0);
235
236 checker.reset();
237 executeCall(new GenericPropertiesRemove(p, "thekey"), "thevalue");
238 assertEquals("Wrong number of properties.", 0, p.size());
239 checkNumberOfEvents(checker, 1);
240 checkObjectsRemovedEvent(checker.getEvent(0), p, ProtocolProperty.NAMESPACE, ProtocolProperty.NAME, new Object[]{old});
241 }
242
243 public void testGenericPropertiesSetProperty() throws Exception {
244 ProtocolProperties p = (ProtocolProperties) creator.newProperties();
245 p.getRoot().addStructureListener(checker);
246
247 p.put("thekey1", "thevalue1");
248 p.put("thekey2", "thevalue2");
249 p.put("thekey3", "thevalue3");
250
251 Property old = p.getProperty(1);
252
253 ProtocolProperty prop = (ProtocolProperty) creator.newProperty();
254 prop.setKey("thenewkey");
255 prop.setValue("thenewvalue");
256
257 checker.reset();
258 executeCall(new GenericPropertiesSetProperty(p, 1, prop));
259 assertEquals("Wrong number of properties.", 3, p.size());
260 checkNumberOfEvents(checker, 2);
261 checkObjectsRemovedEvent(checker.getEvent(0), p, ProtocolProperty.NAMESPACE, ProtocolProperty.NAME, new Object[]{old});
262 checkObjectsAddedEvent(checker.getEvent(1), p, ProtocolProperty.NAMESPACE, ProtocolProperty.NAME, new Object[]{prop});
263 }
264
265 public void testGenericPropertiesSetProperties() throws Exception {
266 ProtocolProperties p = (ProtocolProperties) creator.newProperties();
267 p.getRoot().addStructureListener(checker);
268
269 ProtocolProperty p1 = (ProtocolProperty) creator.newProperty("key1", "value");
270 ProtocolProperty p2 = (ProtocolProperty) creator.newProperty("key2", "value");
271 ProtocolProperty p3 = (ProtocolProperty) creator.newProperty("key3", "value");
272
273 checker.reset();
274 executeCall(new GenericPropertiesSetProperties(p, new ProtocolProperty[]{p1}));
275 assertEquals("Wrong number of properties.", 1, p.size());
276 checkNumberOfEvents(checker, 1);
277 checkObjectsAddedEvent(checker.getEvent(0), p, ProtocolProperty.NAMESPACE, ProtocolProperty.NAME, new Object[]{p1});
278
279 checker.reset();
280 executeCall(new GenericPropertiesSetProperties(p, new ProtocolProperty[]{p3, p2}));
281 assertEquals("Wrong number of properties.", 2, p.size());
282 checkNumberOfEvents(checker, 2);
283 checkObjectsRemovedEvent(checker.getEvent(0), p, ProtocolProperty.NAMESPACE, ProtocolProperty.NAME, new Object[]{p1});
284 ;
285 checkObjectsAddedEvent(checker.getEvent(1), p, ProtocolProperty.NAMESPACE, ProtocolProperty.NAME, new Object[]{p3, p2});
286 }
287
288
289
290
291
292 public void testOwlsAddOwl() throws Exception {
293 ProtocolOwls owl = (ProtocolOwls) creator.newWorkflow();
294 owl.getRoot().addStructureListener(checker);
295
296 String newowl = "ooowwwlll";
297
298 checker.reset();
299 executeCall(new OwlsAddOwl(owl, newowl));
300 assertEquals("Wrong number of owls.", 1, owl.owlsCount());
301 checkNumberOfEvents(checker, 1);
302 checkObjectsAddedEvent(checker.getEvent(0), owl, ProtocolWorkflow.NAMESPACE, ProtocolWorkflow.NAME_OWL, new Object[]{newowl});
303 }
304
305 public void testOwlsRemoveOwl() throws Exception {
306 ProtocolOwls owl = (ProtocolOwls) creator.newWorkflow();
307 owl.getRoot().addStructureListener(checker);
308
309 String newowl = "ooowwwlll";
310 String newowl2 = "ooowwwllll";
311 owl.addOwl(newowl);
312 owl.addOwl(newowl2);
313
314 checker.reset();
315 executeCall(new OwlsRemoveOwl(owl, newowl));
316 assertEquals("Wrong number of owls.", 1, owl.owlsCount());
317 executeCall(new OwlsRemoveOwl(owl, 0));
318 assertEquals("Wrong number of owls.", 0, owl.owlsCount());
319 checkNumberOfEvents(checker, 2);
320 checkObjectsRemovedEvent(checker.getEvent(0), owl, ProtocolWorkflow.NAMESPACE, ProtocolWorkflow.NAME_OWL, new Object[]{newowl});
321 checkObjectsRemovedEvent(checker.getEvent(1), owl, ProtocolWorkflow.NAMESPACE, ProtocolWorkflow.NAME_OWL, new Object[]{newowl2});
322 }
323
324 public void testOwlsSetOwls() throws Exception {
325 ProtocolOwls owl = (ProtocolOwls) creator.newWorkflow();
326 owl.getRoot().addStructureListener(checker);
327
328 String o1 = "oo11";
329 String o2 = "oo22";
330 String o3 = "oo33";
331
332 checker.reset();
333 executeCall(new OwlsSetOwls(owl, new String[]{o1}));
334 assertEquals("Wrong number of owls.", 1, owl.owlsCount());
335 checkNumberOfEvents(checker, 1);
336 checkObjectsAddedEvent(checker.getEvent(0), owl, ProtocolWorkflow.NAMESPACE, ProtocolWorkflow.NAME_OWL, new Object[]{o1});
337
338 checker.reset();
339 executeCall(new OwlsSetOwls(owl, new String[]{o2, o3}));
340 assertEquals("Wrong number of owls.", 2, owl.owlsCount());
341 checkNumberOfEvents(checker, 2);
342 checkObjectsRemovedEvent(checker.getEvent(0), owl, ProtocolWorkflow.NAMESPACE, ProtocolWorkflow.NAME_OWL, new Object[]{o1});
343 checkObjectsAddedEvent(checker.getEvent(1), owl, ProtocolWorkflow.NAMESPACE, ProtocolWorkflow.NAME_OWL, new Object[]{o2, o3});
344 }
345
346
347
348
349
350
351
352
353
354
355
356
357
358 public void testOperationSetOperationClass() throws Exception {
359 ProtocolOperation o = (ProtocolOperation) creator.newOperation();
360 o.getRoot().addStructureListener(checker);
361 ProtocolOperationClass co = (ProtocolOperationClass) creator.newOperationClass();
362 checker.reset();
363 executeCall(new OperationSetOperationClass(o, co));
364 assertEquals("Operation has wrong class operation.", co.getClass().getName(), o.get().getClass().getName());
365 checkNumberOfEvents(checker, 1);
366 checkObjectsAddedEvent(checker.getEvent(0), o, ProtocolOperationClass.NAMESPACE, ProtocolOperationClass.NAME, new Object[]{co});
367 }
368
369
370
371
372
373
374
375 public void testOperationClassSetOperationCandidates() throws Exception {
376 ProtocolOperationClass o = (ProtocolOperationClass) creator.newOperationClass();
377 o.getRoot().addStructureListener(checker);
378
379 ProtocolOperationCandidate o1 = (ProtocolOperationCandidate) creator.newOperationCandidate();
380 ProtocolOperationCandidate o2 = (ProtocolOperationCandidate) creator.newOperationCandidate();
381 ProtocolOperationCandidate no = (ProtocolOperationCandidate) creator.newOperationCandidate();
382
383 checker.reset();
384 executeCall(new OperationClassSetOperationCandidates(o, new ProtocolOperationCandidate[]{o1, o2}));
385 assertEquals("OperationClass has wrong number of OperationCandidates.", 2, o.getOperationCandidates().length);
386 checkNumberOfEvents(checker, 1);
387 checkObjectsAddedEvent(checker.getEvent(0), o, ProtocolOperationCandidate.NAMESPACE, ProtocolOperationCandidate.NAME, new Object[]{o1, o2});
388
389 checker.reset();
390 executeCall(new OperationClassSetOperationCandidates(o, new ProtocolOperationCandidate[]{no}));
391 assertEquals("OperationClass has wrong number of OperationCandidates.", 1, o.getOperationCandidates().length);
392 checkNumberOfEvents(checker, 2);
393 checkObjectsRemovedEvent(checker.getEvent(0), o, ProtocolOperationCandidate.NAMESPACE, ProtocolOperationCandidate.NAME, new Object[]{o1, o2});
394 checkObjectsAddedEvent(checker.getEvent(1), o, ProtocolOperationCandidate.NAMESPACE, ProtocolOperationCandidate.NAME, new Object[]{no});
395 }
396
397 public void testOperationClassRemoveOperationCandidate() throws Exception {
398 ProtocolOperationClass o = (ProtocolOperationClass) creator.newOperationClass();
399 o.getRoot().addStructureListener(checker);
400
401 ProtocolOperationCandidate o1 = (ProtocolOperationCandidate) creator.newOperationCandidate();
402 o.setOperationCandidates(new OperationCandidate[]{o1});
403
404 checker.reset();
405 executeCall(new OperationClassRemoveOperationCandidate(o, 0));
406 assertTrue("OperationClass has wrong number of OperationCandidates.", o.getOperationCandidates() == null || 0 == o.getOperationCandidates().length);
407 checkNumberOfEvents(checker, 1);
408 checkObjectsRemovedEvent(checker.getEvent(0), o, ProtocolOperationCandidate.NAMESPACE, ProtocolOperationCandidate.NAME, new Object[]{o1});
409 }
410
411
412
413
414
415 public void testOperationCandidateSetType() throws Exception {
416 ProtocolOperationCandidate o = (ProtocolOperationCandidate) creator.newOperationCandidate();
417 o.getRoot().addStructureListener(checker);
418
419 checker.reset();
420 executeCall(new OperationCandidateSetType(o, "test.type"));
421 assertEquals("OperationCandidate has wrong type value.", "test.type", o.getType());
422 checkNumberOfEvents(checker, 1);
423 checkPropertyChangeEvent(checker.getEvent(0), o, ProtocolOperationCandidate.NAMESPACE, ProtocolOperationCandidate.NAME_TYPE, "test.type");
424 }
425
426 public void testOperationCandidateSetOperationName() throws Exception {
427 ProtocolOperationCandidate o = (ProtocolOperationCandidate) creator.newOperationCandidate();
428 o.getRoot().addStructureListener(checker);
429
430 checker.reset();
431 executeCall(new OperationCandidateSetOperationName(o, "test.exe"));
432 assertEquals("OperationCandidate has wrong operationName value.", "test.exe", o.getOperationName());
433 checkNumberOfEvents(checker, 1);
434 checkPropertyChangeEvent(checker.getEvent(0), o, ProtocolOperationCandidate.NAMESPACE, ProtocolOperationCandidate.NAME_OPERATIONNAME, "test.exe");
435 }
436
437 public void testOperationCandidateSetResourceName() throws Exception {
438 ProtocolOperationCandidate o = (ProtocolOperationCandidate) creator.newOperationCandidate();
439 o.getRoot().addStructureListener(checker);
440
441 checker.reset();
442 executeCall(new OperationCandidateSetResourceName(o, "dollerrechner"));
443 assertEquals("OperationCandidate has wrong resourceName value.", "dollerrechner", o.getResourceName());
444 checkNumberOfEvents(checker, 1);
445 checkPropertyChangeEvent(checker.getEvent(0), o, ProtocolOperationCandidate.NAMESPACE, ProtocolOperationCandidate.NAME_RESOURCENAME, "dollerrechner");
446 }
447
448 public void testOperationCandidateSetQuality() throws Exception {
449 ProtocolOperationCandidate o = (ProtocolOperationCandidate) creator.newOperationCandidate();
450 o.getRoot().addStructureListener(checker);
451
452 checker.reset();
453 executeCall(new OperationCandidateSetQuality(o, 0.5f));
454 assertEquals("OperationCandidate has wrong quality.", 0.5f, o.getQuality(), 0f);
455 checkNumberOfEvents(checker, 1);
456 checkPropertyChangeEvent(checker.getEvent(0), o, ProtocolOperationCandidate.NAMESPACE, ProtocolOperationCandidate.NAME_QUALITY, new Float(0.5f));
457 }
458
459 public void testOperationCandidateSetSelected() throws Exception {
460 ProtocolOperationCandidate o = (ProtocolOperationCandidate) creator.newOperationCandidate();
461 o.getRoot().addStructureListener(checker);
462
463 checker.reset();
464 executeCall(new OperationCandidateSetSelected(o, true));
465 assertEquals("OperationCandidate has wrong selected value.", true, o.isSelected());
466 checkNumberOfEvents(checker, 1);
467 checkPropertyChangeEvent(checker.getEvent(0), o, ProtocolOperationCandidate.NAMESPACE, ProtocolOperationCandidate.NAME_SELECTED, new Boolean(true));
468 }
469
470
471
472
473
474 public void testPlaceAddToken() throws Exception {
475 ProtocolPlace p = (ProtocolPlace) creator.newPlace();
476 p.getRoot().addStructureListener(checker);
477
478 ProtocolToken token = (ProtocolToken) creator.newToken();
479
480 checker.reset();
481 executeCall(new PlaceAddToken(p, token));
482 assertEquals("Wrong number of tokens.", 1, p.getTokens().length);
483 checkNumberOfEvents(checker, 1);
484 checkObjectsAddedEvent(checker.getEvent(0), p, ProtocolToken.NAMESPACE, ProtocolToken.NAME, new Object[]{token});
485 }
486
487 public void testPlaceSetTokens() throws Exception {
488 ProtocolPlace p = (ProtocolPlace) creator.newPlace();
489 p.getRoot().addStructureListener(checker);
490
491 ProtocolToken te = (ProtocolToken) creator.newToken();
492 ProtocolToken t1 = (ProtocolToken) creator.newToken();
493 ProtocolToken t2 = (ProtocolToken) creator.newToken();
494
495 checker.reset();
496 executeCall(new PlaceSetTokens(p, new ProtocolToken[]{te}));
497 checkNumberOfEvents(checker, 1);
498 checkObjectsAddedEvent(checker.getEvent(0), p, ProtocolToken.NAMESPACE, ProtocolToken.NAME, new Object[]{te});
499
500 checker.reset();
501 executeCall(new PlaceSetTokens(p, new ProtocolToken[]{t1, t2}));
502 checkNumberOfEvents(checker, 2);
503 checkObjectsRemovedEvent(checker.getEvent(0), p, ProtocolToken.NAMESPACE, ProtocolToken.NAME, new Object[]{te});
504 checkObjectsAddedEvent(checker.getEvent(1), p, ProtocolToken.NAMESPACE, ProtocolToken.NAME, new Object[]{t1, t2});
505 }
506
507 public void testPlaceRemoveAllTokens() throws Exception {
508 ProtocolPlace p = (ProtocolPlace) creator.newPlace();
509 p.getRoot().addStructureListener(checker);
510
511 ProtocolToken token1 = (ProtocolToken) creator.newToken();
512 p.addToken(token1);
513 ProtocolToken token2 = (ProtocolToken) creator.newToken();
514 p.addToken(token2);
515
516 checker.reset();
517 executeCall(new PlaceRemoveAllTokens(p));
518 assertEquals("Wrong number of tokens.", 0, p.getTokens().length);
519 checkNumberOfEvents(checker, 1);
520 checkObjectsRemovedEvent(checker.getEvent(0), p, ProtocolToken.NAMESPACE, ProtocolToken.NAME, new Object[]{token1, token2});
521 }
522
523 public void testPlaceRemoveToken() throws Exception {
524 ProtocolPlace p = (ProtocolPlace) creator.newPlace();
525 p.getRoot().addStructureListener(checker);
526
527 ProtocolToken token1 = (ProtocolToken) creator.newToken();
528 p.addToken(token1);
529 ProtocolToken token2 = (ProtocolToken) creator.newToken();
530 p.addToken(token2);
531
532 checker.reset();
533 executeCall(new PlaceRemoveToken(p, 1));
534 assertEquals("Wrong number of tokens.", 1, p.getTokens().length);
535 checkNumberOfEvents(checker, 1);
536 checkObjectsRemovedEvent(checker.getEvent(0), p, ProtocolToken.NAMESPACE, ProtocolToken.NAME, new Object[]{token2});
537
538 checker.reset();
539 executeCall(new PlaceRemoveToken(p, token1));
540 assertEquals("Wrong number of tokens.", 0, p.getTokens().length);
541 checkNumberOfEvents(checker, 1);
542 checkObjectsRemovedEvent(checker.getEvent(0), p, ProtocolToken.NAMESPACE, ProtocolToken.NAME, new Object[]{token1});
543 }
544
545 public void testPlaceSetCapacity() throws Exception {
546 ProtocolPlace p = (ProtocolPlace) creator.newPlace();
547 p.getRoot().addStructureListener(checker);
548
549 checker.reset();
550 executeCall(new PlaceSetCapacity(p, 17));
551 assertEquals("Wrong capacity.", 17, p.getCapacity());
552 checkNumberOfEvents(checker, 1);
553 checkPropertyChangeEvent(checker.getEvent(0), p, ProtocolPlace.NAMESPACE_PROPERTIES, ProtocolPlace.NAME_CAPACITY, new Integer(17));
554 }
555
556 public void testPlaceSetDescription() throws Exception {
557 ProtocolPlace p = (ProtocolPlace) creator.newPlace();
558 p.getRoot().addStructureListener(checker);
559
560 checker.reset();
561 executeCall(new PlaceSetDescription(p, "desc"));
562 assertEquals("Wrong description.", "desc", p.getDescription());
563 checkNumberOfEvents(checker, 1);
564 checkPropertyChangeEvent(checker.getEvent(0), p, ProtocolPlace.NAMESPACE_PROPERTIES, ProtocolPlace.NAME_DESCRIPTION, "desc");
565 }
566
567 public void testPlaceSetID() throws Exception {
568 ProtocolPlace p = (ProtocolPlace) creator.newPlace();
569 p.getRoot().addStructureListener(checker);
570
571 checker.reset();
572 executeCall(new PlaceSetID(p, "ID"));
573 assertEquals("Wrong ID.", "ID", p.getID());
574 checkNumberOfEvents(checker, 1);
575 checkPropertyChangeEvent(checker.getEvent(0), p, ProtocolPlace.NAMESPACE_PROPERTIES, ProtocolPlace.NAME_ID, "ID");
576 }
577
578 public void testPlaceSetTokenType() throws Exception {
579 ProtocolPlace p = (ProtocolPlace) creator.newPlace();
580 p.getRoot().addStructureListener(checker);
581
582 checker.reset();
583 executeCall(new PlaceSetTokenType(p, "tokty"));
584 assertEquals("Wrong tokenType.", "tokty", p.getTokenType());
585 checkNumberOfEvents(checker, 1);
586 checkPropertyChangeEvent(checker.getEvent(0), p, ProtocolPlace.NAMESPACE_PROPERTIES, ProtocolPlace.NAME_TOKENTYPE, "tokty");
587 }
588
589 public void testPlaceSetProperties() throws Exception {
590 ProtocolPlace p = (ProtocolPlace) creator.newPlace();
591 p.getRoot().addStructureListener(checker);
592
593 ProtocolProperties props = (ProtocolProperties) creator.newProperties();
594 Property np1 = creator.newProperty("key1", "value1");
595 Property np2 = creator.newProperty("key2", "value1");
596 props.setProperties(new Property[]{np1, np2});
597 p.getProperties().put("kk", "vv");
598 Property op = p.getProperties().getProperty(0);
599 ProtocolProperties oprops = (ProtocolProperties) p.getProperties();
600
601 checker.reset();
602 executeCall(new PlaceSetProperties(p, props));
603 assertEquals("Wrong GenericProperties instance.", props, p.getProperties());
604 checkNumberOfEvents(checker, 2);
605 checkObjectsRemovedEvent(checker.getEvent(0), p, ProtocolProperties.NAMESPACE, ProtocolProperties.NAME, new Object[]{oprops});
606 checkObjectsAddedEvent(checker.getEvent(1), p, ProtocolProperties.NAMESPACE, ProtocolProperties.NAME, new Object[]{props});
607 }
608
609
610
611
612
613 public void testTransitionSetID() throws Exception {
614 ProtocolTransition p = (ProtocolTransition) creator.newTransition();
615 p.getRoot().addStructureListener(checker);
616
617 checker.reset();
618 executeCall(new TransitionSetID(p, "ID"));
619 assertEquals("Wrong ID.", "ID", p.getID());
620 checkNumberOfEvents(checker, 1);
621 checkPropertyChangeEvent(checker.getEvent(0), p, ProtocolTransition.NAMESPACE_PROPERTIES, ProtocolTransition.NAME_ID, "ID");
622 }
623
624 public void testTransitionSetDescription() throws Exception {
625 ProtocolTransition p = (ProtocolTransition) creator.newTransition();
626 p.getRoot().addStructureListener(checker);
627
628 checker.reset();
629 executeCall(new TransitionSetDescription(p, "desc"));
630 assertEquals("Wrong description.", "desc", p.getDescription());
631 checkNumberOfEvents(checker, 1);
632 checkPropertyChangeEvent(checker.getEvent(0), p, ProtocolTransition.NAMESPACE_PROPERTIES, ProtocolTransition.NAME_DESCRIPTION, "desc");
633 }
634
635 public void testTransitionSetProperties() throws Exception {
636 ProtocolTransition p = (ProtocolTransition) creator.newTransition();
637 p.getRoot().addStructureListener(checker);
638
639 ProtocolProperties props = (ProtocolProperties) creator.newProperties();
640 Property np1 = creator.newProperty("key1", "value1");
641 Property np2 = creator.newProperty("key2", "value1");
642 props.setProperties(new Property[]{np1, np2});
643 p.getProperties().put("kk", "vv");
644 Property op = p.getProperties().getProperty(0);
645 ProtocolProperties oprops = (ProtocolProperties) p.getProperties();
646
647 checker.reset();
648 executeCall(new TransitionSetProperties(p, props));
649 assertEquals("Wrong GenericProperties instance.", props, p.getProperties());
650 checkNumberOfEvents(checker, 2);
651 checkObjectsRemovedEvent(checker.getEvent(0), p, ProtocolProperties.NAMESPACE, ProtocolProperties.NAME, new Object[]{oprops});
652 checkObjectsAddedEvent(checker.getEvent(1), p, ProtocolProperties.NAMESPACE, ProtocolProperties.NAME, new Object[]{props});
653 }
654
655 public void testTransitionAddCondition() throws Exception {
656 ProtocolTransition p = (ProtocolTransition) creator.newTransition();
657 p.getRoot().addStructureListener(checker);
658
659 String condition = "condition";
660
661 checker.reset();
662 executeCall(new TransitionAddCondition(p, condition));
663 checkNumberOfEvents(checker, 1);
664 checkObjectsAddedEvent(checker.getEvent(0), p, ProtocolTransition.NAMESPACE, ProtocolTransition.NAME_CONDITION, new Object[]{condition});
665 }
666
667 public void testTransitionRemoveCondition() throws Exception {
668 ProtocolTransition p = (ProtocolTransition) creator.newTransition();
669 p.getRoot().addStructureListener(checker);
670
671 String condition = "condition";
672 p.addCondition(condition);
673
674 checker.reset();
675 executeCall(new TransitionRemoveCondition(p, 0));
676 checkNumberOfEvents(checker, 1);
677 checkObjectsRemovedEvent(checker.getEvent(0), p, ProtocolTransition.NAMESPACE, ProtocolTransition.NAME_CONDITION, new Object[]{condition});
678 }
679
680 public void testTransitionSetConditions() throws Exception {
681 ProtocolTransition p = (ProtocolTransition) creator.newTransition();
682 p.getRoot().addStructureListener(checker);
683
684 String oc = "condition";
685 String c1 = "condition1";
686 String c2 = "condition2";
687
688 checker.reset();
689 executeCall(new TransitionSetConditions(p, new String[]{oc}));
690 checkNumberOfEvents(checker, 1);
691 checkObjectsAddedEvent(checker.getEvent(0), p, ProtocolTransition.NAMESPACE, ProtocolTransition.NAME_CONDITION, new Object[]{oc});
692
693 checker.reset();
694 executeCall(new TransitionSetConditions(p, new String[]{c1, c2}));
695 checkNumberOfEvents(checker, 2);
696 checkObjectsRemovedEvent(checker.getEvent(0), p, ProtocolTransition.NAMESPACE, ProtocolTransition.NAME_CONDITION, new Object[]{oc});
697 checkObjectsAddedEvent(checker.getEvent(1), p, ProtocolTransition.NAMESPACE, ProtocolTransition.NAME_CONDITION, new Object[]{c1, c2});
698
699 }
700
701 public void testTransitionAddReadEdge() throws Exception {
702 ProtocolTransition p = (ProtocolTransition) creator.newTransition();
703 p.getRoot().addStructureListener(checker);
704
705 ProtocolEdge e = (ProtocolEdge) creator.newEdge();
706
707 checker.reset();
708 executeCall(new TransitionAddReadEdge(p, e));
709 checkNumberOfEvents(checker, 1);
710 checkObjectsAddedEvent(checker.getEvent(0), p, ProtocolEdge.NAMESPACE, ProtocolEdge.NAME_READPLACE, new Object[]{e});
711 }
712
713 public void testTransitionRemoveReadEdge() throws Exception {
714 ProtocolTransition p = (ProtocolTransition) creator.newTransition();
715 p.getRoot().addStructureListener(checker);
716
717 Place p1 = creator.newPlace();
718 p1.setID("place1");
719 Edge e1 = creator.newEdge();
720 p.addReadEdge(e1);
721 Edge e2 = creator.newEdge();
722 e2.setPlace(p1);
723 p.addReadEdge(e2);
724
725 checker.reset();
726 executeCall(new TransitionRemoveReadEdge(p, 0));
727 checkNumberOfEvents(checker, 1);
728 checkObjectsRemovedEvent(checker.getEvent(0), p, ProtocolEdge.NAMESPACE, ProtocolEdge.NAME_READPLACE, new Object[]{e1});
729
730 checker.reset();
731 executeCall(new TransitionRemoveReadEdge(p, "place1"));
732 checkNumberOfEvents(checker, 1);
733 checkObjectsRemovedEvent(checker.getEvent(0), p, ProtocolEdge.NAMESPACE, ProtocolEdge.NAME_READPLACE, new Object[]{e2});
734 }
735
736 public void testTransitionSetReadEdges() throws Exception {
737 ProtocolTransition p = (ProtocolTransition) creator.newTransition();
738 p.getRoot().addStructureListener(checker);
739
740 ProtocolEdge oe = (ProtocolEdge) creator.newEdge();
741 ProtocolEdge e1 = (ProtocolEdge) creator.newEdge();
742 ProtocolEdge e2 = (ProtocolEdge) creator.newEdge();
743
744 checker.reset();
745 executeCall(new TransitionSetReadEdges(p, new ProtocolEdge[]{oe}));
746 checkNumberOfEvents(checker, 1);
747 checkObjectsAddedEvent(checker.getEvent(0), p, ProtocolEdge.NAMESPACE, ProtocolEdge.NAME_READPLACE, new Object[]{oe});
748
749 checker.reset();
750 executeCall(new TransitionSetReadEdges(p, new ProtocolEdge[]{e1, e2}));
751 checkNumberOfEvents(checker, 2);
752 checkObjectsRemovedEvent(checker.getEvent(0), p, ProtocolEdge.NAMESPACE, ProtocolEdge.NAME_READPLACE, new Object[]{oe});
753 checkObjectsAddedEvent(checker.getEvent(1), p, ProtocolEdge.NAMESPACE, ProtocolEdge.NAME_READPLACE, new Object[]{e1, e2});
754 }
755
756 public void testTransitionAddInEdge() throws Exception {
757 ProtocolTransition p = (ProtocolTransition) creator.newTransition();
758 p.getRoot().addStructureListener(checker);
759
760 ProtocolEdge e = (ProtocolEdge) creator.newEdge();
761
762 checker.reset();
763 executeCall(new TransitionAddInEdge(p, e));
764 checkNumberOfEvents(checker, 1);
765 checkObjectsAddedEvent(checker.getEvent(0), p, ProtocolEdge.NAMESPACE, ProtocolEdge.NAME_INPUTPLACE, new Object[]{e});
766 }
767
768 public void testTransitionRemoveInEdge() throws Exception {
769 ProtocolTransition p = (ProtocolTransition) creator.newTransition();
770 p.getRoot().addStructureListener(checker);
771
772 Place p1 = creator.newPlace();
773 p1.setID("place1");
774 Edge e1 = creator.newEdge();
775 p.addInEdge(e1);
776 Edge e2 = creator.newEdge();
777 e2.setPlace(p1);
778 p.addInEdge(e2);
779
780 checker.reset();
781 executeCall(new TransitionRemoveInEdge(p, 0));
782 checkNumberOfEvents(checker, 1);
783 checkObjectsRemovedEvent(checker.getEvent(0), p, ProtocolEdge.NAMESPACE, ProtocolEdge.NAME_INPUTPLACE, new Object[]{e1});
784
785 checker.reset();
786 executeCall(new TransitionRemoveInEdge(p, "place1"));
787 checkNumberOfEvents(checker, 1);
788 checkObjectsRemovedEvent(checker.getEvent(0), p, ProtocolEdge.NAMESPACE, ProtocolEdge.NAME_INPUTPLACE, new Object[]{e2});
789 }
790
791 public void testTransitionSetInEdges() throws Exception {
792 ProtocolTransition p = (ProtocolTransition) creator.newTransition();
793 p.getRoot().addStructureListener(checker);
794
795 ProtocolEdge oe = (ProtocolEdge) creator.newEdge();
796 ProtocolEdge e1 = (ProtocolEdge) creator.newEdge();
797 ProtocolEdge e2 = (ProtocolEdge) creator.newEdge();
798
799 checker.reset();
800 executeCall(new TransitionSetInEdges(p, new ProtocolEdge[]{oe}));
801 checkNumberOfEvents(checker, 1);
802 checkObjectsAddedEvent(checker.getEvent(0), p, ProtocolEdge.NAMESPACE, ProtocolEdge.NAME_INPUTPLACE, new Object[]{oe});
803
804 checker.reset();
805 executeCall(new TransitionSetInEdges(p, new ProtocolEdge[]{e1, e2}));
806 checkNumberOfEvents(checker, 2);
807 checkObjectsRemovedEvent(checker.getEvent(0), p, ProtocolEdge.NAMESPACE, ProtocolEdge.NAME_INPUTPLACE, new Object[]{oe});
808 checkObjectsAddedEvent(checker.getEvent(1), p, ProtocolEdge.NAMESPACE, ProtocolEdge.NAME_INPUTPLACE, new Object[]{e1, e2});
809 }
810
811 public void testTransitionAddWriteEdge() throws Exception {
812 ProtocolTransition p = (ProtocolTransition) creator.newTransition();
813 p.getRoot().addStructureListener(checker);
814
815 ProtocolEdge e = (ProtocolEdge) creator.newEdge();
816
817 checker.reset();
818 executeCall(new TransitionAddWriteEdge(p, e));
819 checkNumberOfEvents(checker, 1);
820 checkObjectsAddedEvent(checker.getEvent(0), p, ProtocolEdge.NAMESPACE, ProtocolEdge.NAME_WRITEPLACE, new Object[]{e});
821 }
822
823 public void testTransitionRemoveWriteEdge() throws Exception {
824 ProtocolTransition p = (ProtocolTransition) creator.newTransition();
825 p.getRoot().addStructureListener(checker);
826
827 Place p1 = creator.newPlace();
828 p1.setID("place1");
829 Edge e1 = creator.newEdge();
830 p.addWriteEdge(e1);
831 Edge e2 = creator.newEdge();
832 e2.setPlace(p1);
833 p.addWriteEdge(e2);
834
835 checker.reset();
836 executeCall(new TransitionRemoveWriteEdge(p, 0));
837 checkNumberOfEvents(checker, 1);
838 checkObjectsRemovedEvent(checker.getEvent(0), p, ProtocolEdge.NAMESPACE, ProtocolEdge.NAME_WRITEPLACE, new Object[]{e1});
839
840 checker.reset();
841 executeCall(new TransitionRemoveWriteEdge(p, "place1"));
842 checkNumberOfEvents(checker, 1);
843 checkObjectsRemovedEvent(checker.getEvent(0), p, ProtocolEdge.NAMESPACE, ProtocolEdge.NAME_WRITEPLACE, new Object[]{e2});
844 }
845
846 public void testTransitionSetWriteEdges() throws Exception {
847 ProtocolTransition p = (ProtocolTransition) creator.newTransition();
848 p.getRoot().addStructureListener(checker);
849
850 ProtocolEdge oe = (ProtocolEdge) creator.newEdge();
851 ProtocolEdge e1 = (ProtocolEdge) creator.newEdge();
852 ProtocolEdge e2 = (ProtocolEdge) creator.newEdge();
853
854 checker.reset();
855 executeCall(new TransitionSetWriteEdges(p, new ProtocolEdge[]{oe}));
856 checkNumberOfEvents(checker, 1);
857 checkObjectsAddedEvent(checker.getEvent(0), p, ProtocolEdge.NAMESPACE, ProtocolEdge.NAME_WRITEPLACE, new Object[]{oe});
858
859 checker.reset();
860 executeCall(new TransitionSetWriteEdges(p, new ProtocolEdge[]{e1, e2}));
861 checkNumberOfEvents(checker, 2);
862 checkObjectsRemovedEvent(checker.getEvent(0), p, ProtocolEdge.NAMESPACE, ProtocolEdge.NAME_WRITEPLACE, new Object[]{oe});
863 checkObjectsAddedEvent(checker.getEvent(1), p, ProtocolEdge.NAMESPACE, ProtocolEdge.NAME_WRITEPLACE, new Object[]{e1, e2});
864 }
865
866 public void testTransitionAddOutEdge() throws Exception {
867 ProtocolTransition p = (ProtocolTransition) creator.newTransition();
868 p.getRoot().addStructureListener(checker);
869
870 ProtocolEdge e = (ProtocolEdge) creator.newEdge();
871
872 checker.reset();
873 executeCall(new TransitionAddOutEdge(p, e));
874 checkNumberOfEvents(checker, 1);
875 checkObjectsAddedEvent(checker.getEvent(0), p, ProtocolEdge.NAMESPACE, ProtocolEdge.NAME_OUTPUTPLACE, new Object[]{e});
876 }
877
878 public void testTransitionRemoveOutEdge() throws Exception {
879 ProtocolTransition p = (ProtocolTransition) creator.newTransition();
880 p.getRoot().addStructureListener(checker);
881
882 Place p1 = creator.newPlace();
883 p1.setID("place1");
884 Edge e1 = creator.newEdge();
885 p.addOutEdge(e1);
886 Edge e2 = creator.newEdge();
887 e2.setPlace(p1);
888 p.addOutEdge(e2);
889
890 checker.reset();
891 executeCall(new TransitionRemoveOutEdge(p, 0));
892 checkNumberOfEvents(checker, 1);
893 checkObjectsRemovedEvent(checker.getEvent(0), p, ProtocolEdge.NAMESPACE, ProtocolEdge.NAME_OUTPUTPLACE, new Object[]{e1});
894
895 checker.reset();
896 executeCall(new TransitionRemoveOutEdge(p, "place1"));
897 checkNumberOfEvents(checker, 1);
898 checkObjectsRemovedEvent(checker.getEvent(0), p, ProtocolEdge.NAMESPACE, ProtocolEdge.NAME_OUTPUTPLACE, new Object[]{e2});
899 }
900
901 public void testTransitionSetOutEdges() throws Exception {
902 ProtocolTransition p = (ProtocolTransition) creator.newTransition();
903 p.getRoot().addStructureListener(checker);
904
905 ProtocolEdge oe = (ProtocolEdge) creator.newEdge();
906 ProtocolEdge e1 = (ProtocolEdge) creator.newEdge();
907 ProtocolEdge e2 = (ProtocolEdge) creator.newEdge();
908
909 checker.reset();
910 executeCall(new TransitionSetOutEdges(p, new ProtocolEdge[]{oe}));
911 checkNumberOfEvents(checker, 1);
912 checkObjectsAddedEvent(checker.getEvent(0), p, ProtocolEdge.NAMESPACE, ProtocolEdge.NAME_OUTPUTPLACE, new Object[]{oe});
913
914 checker.reset();
915 executeCall(new TransitionSetOutEdges(p, new ProtocolEdge[]{e1, e2}));
916 checkNumberOfEvents(checker, 2);
917 checkObjectsRemovedEvent(checker.getEvent(0), p, ProtocolEdge.NAMESPACE, ProtocolEdge.NAME_OUTPUTPLACE, new Object[]{oe});
918 checkObjectsAddedEvent(checker.getEvent(1), p, ProtocolEdge.NAMESPACE, ProtocolEdge.NAME_OUTPUTPLACE, new Object[]{e1, e2});
919 }
920
921 public void testTransitionSetOperation() throws Exception {
922 ProtocolTransition p = (ProtocolTransition) creator.newTransition();
923 p.getRoot().addStructureListener(checker);
924
925 Operation oo = creator.newOperation();
926 ProtocolOperation o = (ProtocolOperation) creator.newOperation();
927 p.setOperation(oo);
928
929 checker.reset();
930 executeCall(new TransitionSetOperation(p, o));
931 checkNumberOfEvents(checker, 2);
932 checkObjectsRemovedEvent(checker.getEvent(0), p, ProtocolOperation.NAMESPACE, ProtocolOperation.NAME, new Object[]{oo});
933 checkObjectsAddedEvent(checker.getEvent(1), p, ProtocolOperation.NAMESPACE, ProtocolOperation.NAME, new Object[]{o});
934 }
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953 public void testWorkflowFromXML() throws Exception {
954 ProtocolWorkflow p = (ProtocolWorkflow) creator.newWorkflow();
955 p.getRoot().addStructureListener(checker);
956
957 String xml =
958 "<workflow xmlns=\"http://www.gridworkflow.org/gworkflowdl\" ID=\"theWorkflow\">\n" +
959 " <owl>OhWehElle</owl>\n" +
960 " <description>ich bin ein grid workflow</description>\n" +
961 " <property name=\"prop\">juhu!</property>\n" +
962 " <place ID=\"Place\"/>\n" +
963 " <place ID=\"daPlace\"/>\n" +
964 " <place ID=\"wrPlace\"/>\n" +
965 " <place ID=\"daPlace2\"/>\n" +
966 " <transition ID=\"daTransition\">\n" +
967 " <readPlace placeID=\"Place\" edgeExpression=\"exp\"/>\n" +
968 " <inputPlace placeID=\"daPlace\" edgeExpression=\"exp\"/>\n" +
969 " <writePlace placeID=\"wrPlace\" edgeExpression=\"exp\"/>\n" +
970 " <outputPlace placeID=\"daPlace2\"/>\n" +
971 " </transition>\n" +
972 "</workflow>";
973
974 checker.reset();
975 executeCall(new WorkflowFromXML(p, xml));
976 logger.info("got " + checker.events.size() + " events.");
977 for (int i = 0; i < checker.events.size(); i++) {
978 logger.info(checker.getEvent(i));
979 }
980 assertEquals("Wrong number of owls.", 1, p.owlsCount());
981 assertEquals("Wrong owl at index 0.", "OhWehElle", p.getOwls()[0]);
982 assertEquals("Wrong description.", "ich bin ein grid workflow", p.getDescription());
983 assertEquals("Wrong number of properties.", 1, p.getProperties().size());
984 assertEquals("Wrong property key at index 0.", "prop", p.getProperties().getProperty(0).getKey());
985 assertEquals("Wrong property value at index 0.", "juhu!", p.getProperties().getProperty(0).getValue());
986 assertEquals("Wrong number of places.", 4, p.getPlaces().length);
987 assertEquals("Wrong number of transitions.", 1, p.getTransitions().length);
988 }
989
990 public void testWorkflowSetDescription() throws Exception {
991 ProtocolWorkflow p = (ProtocolWorkflow) creator.newWorkflow();
992 p.getRoot().addStructureListener(checker);
993
994 checker.reset();
995 executeCall(new WorkflowSetDescription(p, "desc"));
996 assertEquals("Wrong description.", "desc", p.getDescription());
997 checkNumberOfEvents(checker, 1);
998 checkPropertyChangeEvent(checker.getEvent(0), p, ProtocolWorkflow.NAMESPACE_PROPERTIES, ProtocolWorkflow.NAME_DESCRIPTION, "desc");
999 }
1000
1001 public void testWorkflowSetProperties() throws Exception {
1002 ProtocolWorkflow p = (ProtocolWorkflow) creator.newWorkflow();
1003 p.getRoot().addStructureListener(checker);
1004
1005 ProtocolProperties props = (ProtocolProperties) creator.newProperties();
1006 Property np1 = creator.newProperty("key1", "value1");
1007 Property np2 = creator.newProperty("key2", "value1");
1008 props.setProperties(new Property[]{np1, np2});
1009 p.getProperties().put("kk", "vv");
1010 Property op = p.getProperties().getProperty(0);
1011 ProtocolProperties oprops = (ProtocolProperties) p.getProperties();
1012
1013 checker.reset();
1014 executeCall(new WorkflowSetProperties(p, props));
1015 assertEquals("Wrong GenericProperties instance.", props, p.getProperties());
1016 checkNumberOfEvents(checker, 2);
1017 checkObjectsRemovedEvent(checker.getEvent(0), p, ProtocolProperties.NAMESPACE, ProtocolProperties.NAME, new Object[]{oprops});
1018 checkObjectsAddedEvent(checker.getEvent(1), p, ProtocolProperties.NAMESPACE, ProtocolProperties.NAME, new Object[]{props});
1019 }
1020
1021 public void testWorkflowAddPlace() throws Exception {
1022 ProtocolWorkflow p = (ProtocolWorkflow) creator.newWorkflow();
1023 p.getRoot().addStructureListener(checker);
1024
1025 ProtocolPlace pl = (ProtocolPlace) creator.newPlace();
1026
1027 checker.reset();
1028 executeCall(new WorkflowAddPlace(p, pl));
1029 assertEquals("Wrong number of places.", 1, p.getPlaces().length);
1030 checkNumberOfEvents(checker, 1);
1031 checkObjectsAddedEvent(checker.getEvent(0), p, ProtocolPlace.NAMESPACE, ProtocolPlace.NAME, new Object[]{pl});
1032 }
1033
1034 public void testWorkflowAddTransition() throws Exception {
1035 ProtocolWorkflow p = (ProtocolWorkflow) creator.newWorkflow();
1036 p.getRoot().addStructureListener(checker);
1037
1038 ProtocolTransition pl = (ProtocolTransition) creator.newTransition();
1039
1040 checker.reset();
1041 executeCall(new WorkflowAddTransition(p, pl));
1042 assertEquals("Wrong number of transitions.", 1, p.getTransitions().length);
1043 checkNumberOfEvents(checker, 1);
1044 checkObjectsAddedEvent(checker.getEvent(0), p, ProtocolTransition.NAMESPACE, ProtocolTransition.NAME, new Object[]{pl});
1045 }
1046
1047 public void testWorkflowRemovePlace() throws Exception {
1048 ProtocolWorkflow p = (ProtocolWorkflow) creator.newWorkflow();
1049 p.getRoot().addStructureListener(checker);
1050
1051 ProtocolPlace pl = (ProtocolPlace) creator.newPlace();
1052 p.addPlace(pl);
1053
1054 checker.reset();
1055 executeCall(new WorkflowRemovePlace(p, 0));
1056 assertEquals("Wrong number of places.", 0, p.getPlaces().length);
1057 checkNumberOfEvents(checker, 1);
1058 checkObjectsRemovedEvent(checker.getEvent(0), p, ProtocolPlace.NAMESPACE, ProtocolPlace.NAME, new Object[]{pl});
1059 }
1060
1061 public void testWorkflowRemoveTransition() throws Exception {
1062 ProtocolWorkflow p = (ProtocolWorkflow) creator.newWorkflow();
1063 p.getRoot().addStructureListener(checker);
1064
1065 ProtocolTransition pl = (ProtocolTransition) creator.newTransition();
1066 p.addTransition(pl);
1067
1068 checker.reset();
1069 executeCall(new WorkflowRemoveTransition(p, 0));
1070 assertEquals("Wrong number of transitions.", 0, p.getTransitions().length);
1071 checkNumberOfEvents(checker, 1);
1072 checkObjectsRemovedEvent(checker.getEvent(0), p, ProtocolTransition.NAMESPACE, ProtocolTransition.NAME, new Object[]{pl});
1073 }
1074
1075 public void testWorkflowSetTransitions() throws Exception {
1076 ProtocolWorkflow p = (ProtocolWorkflow) creator.newWorkflow();
1077 p.getRoot().addStructureListener(checker);
1078
1079 ProtocolTransition oe = (ProtocolTransition) creator.newTransition();
1080 ProtocolTransition e1 = (ProtocolTransition) creator.newTransition();
1081 ProtocolTransition e2 = (ProtocolTransition) creator.newTransition();
1082
1083 checker.reset();
1084 executeCall(new WorkflowSetTransitions(p, new ProtocolTransition[]{oe}));
1085 checkNumberOfEvents(checker, 1);
1086 checkObjectsAddedEvent(checker.getEvent(0), p, ProtocolTransition.NAMESPACE, ProtocolTransition.NAME, new Object[]{oe});
1087
1088 checker.reset();
1089 executeCall(new WorkflowSetTransitions(p, new ProtocolTransition[]{e1, e2}));
1090 checkNumberOfEvents(checker, 2);
1091 checkObjectsRemovedEvent(checker.getEvent(0), p, ProtocolTransition.NAMESPACE, ProtocolTransition.NAME, new Object[]{oe});
1092 checkObjectsAddedEvent(checker.getEvent(1), p, ProtocolTransition.NAMESPACE, ProtocolTransition.NAME, new Object[]{e1, e2});
1093 }
1094
1095 public void testWorkflowSetPlaces() throws Exception {
1096 ProtocolWorkflow p = (ProtocolWorkflow) creator.newWorkflow();
1097 p.getRoot().addStructureListener(checker);
1098
1099 ProtocolPlace oe = (ProtocolPlace) creator.newPlace();
1100 ProtocolPlace e1 = (ProtocolPlace) creator.newPlace();
1101 ProtocolPlace e2 = (ProtocolPlace) creator.newPlace();
1102
1103 checker.reset();
1104 executeCall(new WorkflowSetPlaces(p, new ProtocolPlace[]{oe}));
1105 checkNumberOfEvents(checker, 1);
1106 checkObjectsAddedEvent(checker.getEvent(0), p, ProtocolPlace.NAMESPACE, ProtocolPlace.NAME, new Object[]{oe});
1107
1108 checker.reset();
1109 executeCall(new WorkflowSetPlaces(p, new ProtocolPlace[]{e1, e2}));
1110 checkNumberOfEvents(checker, 2);
1111 checkObjectsRemovedEvent(checker.getEvent(0), p, ProtocolPlace.NAMESPACE, ProtocolPlace.NAME, new Object[]{oe});
1112 checkObjectsAddedEvent(checker.getEvent(1), p, ProtocolPlace.NAMESPACE, ProtocolPlace.NAME, new Object[]{e1, e2});
1113 }
1114 }