public void ParallelSiblingsTest() { FHFSM machine = new FHFSM(null); FDummyState s1 = new FDummyState("s1"); FParallelState s11 = new FParallelState("s11", s1); FParallelState s12 = new FParallelState("s12", s1); FDummyState s111 = new FDummyState("s111", s11); FDummyState s112 = new FDummyState("s112", s11); s11.SetInitialState(s111); FDummyState s121 = new FDummyState("s121", s12); FDummyState s122 = new FDummyState("s122", s12); s12.SetInitialState(s121); FDummyState s2 = new FDummyState("s2"); s2.AddTransition("GoToS111", s111); s111.AddTransition("GoToS121", s121); s122.AddTransition("GoToS112", s112); s112.AddTransition("GoToS11", s2); machine.AddState(s1); machine.AddState(s2); machine.SetInitialState(s2); machine.Start(); Assert.IsTrue(machine.ActiveStates.Count == 1); Assert.IsTrue(machine.ActiveStates.Contains(s2)); machine.PushTrigger("GoToS111"); Assert.IsTrue(machine.ActiveStates.Count == 4); Assert.IsTrue(machine.ActiveStates.Contains(s1)); Assert.IsTrue(machine.ActiveStates.Contains(s11)); Assert.IsTrue(machine.ActiveStates.Contains(s111)); Assert.IsTrue(machine.ActiveStates.Contains(s112)); machine.PushTrigger("GoToS121"); Assert.IsTrue(machine.ActiveStates.Count == 4); Assert.IsTrue(machine.ActiveStates.Contains(s1)); Assert.IsTrue(machine.ActiveStates.Contains(s12)); Assert.IsTrue(machine.ActiveStates.Contains(s121)); Assert.IsTrue(machine.ActiveStates.Contains(s122)); machine.PushTrigger("GoToS112"); Assert.IsTrue(machine.ActiveStates.Count == 4); Assert.IsTrue(machine.ActiveStates.Contains(s1)); Assert.IsTrue(machine.ActiveStates.Contains(s11)); Assert.IsTrue(machine.ActiveStates.Contains(s111)); Assert.IsTrue(machine.ActiveStates.Contains(s112)); machine.PushTrigger("GoToS11"); Assert.IsTrue(machine.ActiveStates.Count == 1); Assert.IsTrue(machine.ActiveStates.Contains(s2)); }