Exemplo n.º 1
0
        public void FiniteStateMachineTest()
        {
            TestLauncherActor.Test(() =>
            {
                var behaviors = new FsmBehaviors <string, int>();
                behaviors
                .AddRule("StartState", i => i == 1, i => { }, "MidState")
                .AddRule("MidState", i => i == 2, i => { }, "EndState");
                var fsmActor = new FsmActor <string, int>(behaviors);

                var currentState1 = fsmActor.GetCurrentState();
                Assert.IsTrue(currentState1.Result() == "StartState");

                fsmActor.SendMessage(1);

                var currentState2 = fsmActor.GetCurrentState();
                Assert.IsTrue(currentState2.Result() == "MidState");

                fsmActor.SendMessage(2);

                var currentState3 = fsmActor.GetCurrentState();
                Assert.IsTrue(currentState3.Result() == "EndState");

                fsmActor.SendMessage(3);

                // unchanged shoud be
                var currentState4 = fsmActor.GetCurrentState();
                Assert.IsTrue(currentState4.Result() == "EndState");
            });
        }
Exemplo n.º 2
0
        public void FSMBehaviorsTest()
        {
            TestLauncherActor.Test(() =>
            {
                var behaviors = new FsmBehaviors <string, int>();
                behaviors
                .AddRule("StartState", i => i == 1, i => { }, "MidState")
                .AddRule("MidState", i => i == 2, i => { }, "EndState");

                var fsmActor = new BaseActor(behaviors);

                var currentState1 = new Future <string>();
                fsmActor.SendMessage(currentState1);
                Assert.IsTrue(currentState1.Result() == "StartState");

                fsmActor.SendMessage(1);

                var currentState2 = new Future <string>();
                fsmActor.SendMessage(currentState2);
                Assert.IsTrue(currentState2.Result() == "MidState");

                fsmActor.SendMessage(2);

                var currentState3 = new Future <string>();
                fsmActor.SendMessage(currentState3);
                Assert.IsTrue(currentState3.Result() == "EndState");

                fsmActor.SendMessage(3);

                // unchanged shoud be
                var currentState4 = new Future <string>();
                fsmActor.SendMessage(currentState4);
                Assert.IsTrue(currentState4.Result() == "EndState");
            });
        }