Esempio n. 1
0
        public void add_transition_predicate_can_succeed()
        {
            var stateA = new TestState();
            var stateB = new TestState();

            stateA.AddTransition(stateB, ctx => ctx != null);
            Assert.AreEqual(stateB, stateA.EvaluateTransitions(new object()));
            Assert.AreEqual(null, stateA.EvaluateTransitions(null));
        }
Esempio n. 2
0
        public void state_null_transition_defers_to_later_transitions()
        {
            var stateA = new TestState();
            var stateB = new TestState();

            stateA.AddTransition(ctx => null);
            stateA.AddTransition(ctx => stateB);
            Assert.AreEqual(stateB, stateA.EvaluateTransitions(new TestContext()));
        }
Esempio n. 3
0
        public void state_evaluate_transitions_prefers_earlier_transitions()
        {
            var stateA = new TestState();
            var stateB = new TestState();
            var stateC = new TestState();

            stateA.AddTransition(ctx => stateB);
            stateA.AddTransition(ctx => stateC);
            Assert.AreEqual(stateB, stateA.EvaluateTransitions(new TestContext()));
        }
Esempio n. 4
0
        public void state_evaluate_transitions_depends_on_value()
        {
            var stateA = new TestState();
            var stateB = new TestState();
            var stateC = new TestState();

            stateA.AddTransition(ctx => {
                if (ctx.A)
                {
                    return(stateA);
                }
                return(ctx.B ? stateB : null);
            });
            stateA.AddTransition(ctx => stateC);
            Assert.AreEqual(stateC, stateA.EvaluateTransitions(new TestContext()));
            Assert.AreEqual(stateA, stateA.EvaluateTransitions(new TestContext {
                A = true
            }));
            Assert.AreEqual(stateB, stateA.EvaluateTransitions(new TestContext {
                B = true
            }));
        }