View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *     http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.apache.commons.scxml2.invoke;
18  
19  import java.util.Set;
20  
21  import org.apache.commons.scxml2.SCXMLExecutor;
22  import org.apache.commons.scxml2.SCXMLTestHelper;
23  import org.apache.commons.scxml2.env.SimpleDispatcher;
24  import org.apache.commons.scxml2.env.SimpleErrorReporter;
25  import org.apache.commons.scxml2.io.SCXMLReader;
26  import org.apache.commons.scxml2.model.EnterableState;
27  import org.apache.commons.scxml2.model.SCXML;
28  import org.junit.Assert;
29  import org.junit.Test;
30  
31  /**
32   * Unit tests {@link org.apache.commons.scxml2.SCXMLExecutor}.
33   * Testing <invoke>
34   */
35  public class InvokeTest {
36  
37      /**
38       * Test the SCXML documents, usage of &lt;invoke&gt;
39       */    
40      @Test
41      public void testInvoke01Sample() throws Exception {
42          SCXML scxml = SCXMLReader.read(SCXMLTestHelper.getResource("org/apache/commons/scxml2/invoke/invoker-01.xml"));
43          SCXMLExecutor exec = new SCXMLExecutor(null, new SimpleDispatcher(), new SimpleErrorReporter());
44          exec.setStateMachine(scxml);
45          exec.registerInvokerClass("scxml", SimpleSCXMLInvoker.class);
46          exec.go();
47          Set<EnterableState> currentStates = exec.getStatus().getStates();
48          Assert.assertEquals(1, currentStates.size());
49          Assert.assertEquals("invoker", currentStates.iterator().next().getId());
50      }
51      
52      @Test
53      public void testInvoke02Sample() throws Exception {
54          SCXML scxml = SCXMLReader.read(SCXMLTestHelper.getResource("org/apache/commons/scxml2/invoke/invoker-02.xml"));
55          SCXMLExecutor exec = new SCXMLExecutor(null, new SimpleDispatcher(), new SimpleErrorReporter());
56          exec.setStateMachine(scxml);
57          exec.registerInvokerClass("scxml", SimpleSCXMLInvoker.class);
58          exec.go();
59          Set<EnterableState> currentStates = exec.getStatus().getStates();
60          Assert.assertEquals(1, currentStates.size());
61      }
62      
63      @Test
64      public void testInvoke03Sample() throws Exception {
65          SCXML scxml = SCXMLReader.read(SCXMLTestHelper.getResource("org/apache/commons/scxml2/invoke/invoker-03.xml"));
66          SCXMLExecutor exec = new SCXMLExecutor(null, new SimpleDispatcher(), new SimpleErrorReporter());
67          exec.setStateMachine(scxml);
68          exec.registerInvokerClass("scxml", SimpleSCXMLInvoker.class);
69          exec.go();
70          Set<EnterableState> currentStates = exec.getStatus().getStates();
71          Assert.assertEquals(1, currentStates.size());
72          SCXMLTestHelper.fireEvent(exec, "s1.next");
73          SCXMLTestHelper.fireEvent(exec, "state1.next");
74      }
75  }
76