public void FParallelStateTest() { FHFSM machine = new FHFSM(null); FParallelState s1 = new FParallelState("s1"); FDummyState s11 = new FDummyState("s11", s1); FDummyState s111 = new FDummyState("s111", s11); FDummyState s112 = new FDummyState("s112", s11); s11.SetInitialState(s111); s111.AddTransition("GoToS112", s112); FDummyState s12 = new FDummyState("s12", s1); FDummyState s121 = new FDummyState("s121", s12); FDummyState s122 = new FDummyState("s122", s12); s12.SetInitialState(s121); s121.AddTransition("GoToS122", s122); FDummyState s2 = new FDummyState("s2"); s1.AddTransition("GoToS2", s2); machine.AddState(s1); machine.AddState(s2); machine.SetInitialState(s1); machine.Start(); Assert.IsTrue(machine.ActiveStates.Count == 5); Assert.IsTrue(machine.ActiveStates.Contains(s1)); Assert.IsTrue(machine.ActiveStates.Contains(s11)); Assert.IsTrue(machine.ActiveStates.Contains(s111)); Assert.IsTrue(machine.ActiveStates.Contains(s12)); Assert.IsTrue(machine.ActiveStates.Contains(s121)); machine.PushTrigger("GoToS112"); Assert.IsTrue(machine.ActiveStates.Count == 5); Assert.IsTrue(machine.ActiveStates.Contains(s1)); Assert.IsTrue(machine.ActiveStates.Contains(s11)); Assert.IsTrue(machine.ActiveStates.Contains(s112)); Assert.IsTrue(machine.ActiveStates.Contains(s12)); Assert.IsTrue(machine.ActiveStates.Contains(s121)); machine.PushTrigger("GoToS122"); Assert.IsTrue(machine.ActiveStates.Count == 5); Assert.IsTrue(machine.ActiveStates.Contains(s1)); Assert.IsTrue(machine.ActiveStates.Contains(s11)); Assert.IsTrue(machine.ActiveStates.Contains(s112)); Assert.IsTrue(machine.ActiveStates.Contains(s12)); Assert.IsTrue(machine.ActiveStates.Contains(s122)); machine.PushTrigger("GoToS2"); Assert.IsTrue(machine.ActiveStates.Count == 1); Assert.IsTrue(machine.ActiveStates[0] == s2); }