Example #1
0
 public ToStep(CodeStateMachineBuilder <TState, TAction> codeStateMachineBuilder, TState from, TAction action, FromStep <TState, TAction> step1)
 {
     this.codeStateMachineBuilder = codeStateMachineBuilder;
     this.from   = from;
     this.action = action;
     this.step1  = step1;
 }
Example #2
0
        private void Event_Finished(TestActions[] actions)
        {
            var builder = new CodeStateMachineBuilder <TestStates, TestActions>();

            builder
            .StartWith(TestStates.Default)
            .Move(TestStates.Default, TestActions.Save, TestStates.Draft)
            .Move(TestStates.Draft, TestActions.Check, TestStates.Checked)
            .Move(TestStates.Draft, TestActions.Delete, TestStates.Deleted)
            .Move(TestStates.Checked, TestActions.Check, TestStates.DoubleChecked)
            .Move(TestStates.Checked, TestActions.Recall, TestStates.Recalled)
            .StopWith(TestStates.Deleted, TestStates.DoubleChecked, TestStates.Recalled)
            ;
            var  machine    = builder.Build();
            bool isFinished = false;

            machine.Stoped += (sender, e) =>
            {
                isFinished = true;
            };
            foreach (var a in actions)
            {
                machine.Push(a);
            }
            Assert.IsTrue(isFinished, actions.Join(",", x => x.ToString()));
        }
Example #3
0
        public void BuildTest()
        {
            var builder = new CodeStateMachineBuilder <TestStates, TestActions>();

            builder
            .StartWith(TestStates.Default)
            .Move(TestStates.Default, TestActions.Save, TestStates.Draft)
            .Move(TestStates.Draft, TestActions.Check, TestStates.Checked)
            .Move(TestStates.Draft, TestActions.Delete, TestStates.Deleted)
            .Move(TestStates.Checked, TestActions.Check, TestStates.DoubleChecked)
            .Move(TestStates.Checked, TestActions.Recall, TestStates.Recalled)
            .Move(TestStates.DoubleChecked, TestActions.Recall, TestStates.Recalled)
            ;
            var        machine = builder.Build();
            TestStates ts      = TestStates.Default;

            machine.Pushed += (sender, e) =>
            {
                ts = e.NewState;
            };
            machine.Push(TestActions.Save);
            Assert.AreEqual(TestStates.Draft, ts);
            machine.Push(TestActions.Check);
            Assert.AreEqual(TestStates.Checked, ts);
            machine.Push(TestActions.Check);
            Assert.AreEqual(TestStates.DoubleChecked, ts);
        }
Example #4
0
        public void TryPush()
        {
            var builder = new CodeStateMachineBuilder <TestStates, TestActions>();

            builder
            .StartWith(TestStates.Default)
            .Move(TestStates.Default, TestActions.Save, TestStates.Draft)
            .Move(TestStates.Draft, TestActions.Check, TestStates.Checked)
            .Move(TestStates.Draft, TestActions.Delete, TestStates.Deleted)
            .Move(TestStates.Checked, TestActions.Check, TestStates.DoubleChecked)
            .Move(TestStates.Checked, TestActions.Recall, TestStates.Recalled)
            .Move(TestStates.DoubleChecked, TestActions.Recall, TestStates.Recalled)
            ;
            var machine = builder.Build();

            Assert.IsFalse(machine.TryPush(TestActions.Check));
            Assert.IsTrue(machine.TryPush(TestActions.Save));
        }
        public void TestGetListener()
        {
            var builder = new CodeStateMachineBuilder <TestStates, TestActions>();

            builder.StartWith(TestStates.Default)
            .From(TestStates.Default)
            .When(TestActions.Save).To(TestStates.Draft)
            .From(TestStates.Draft)
            .When(TestActions.Check).To(TestStates.Checked)
            .When(TestActions.Delete).To(TestStates.Deleted)
            .From(TestStates.Checked)
            .When(TestActions.Check).To(TestStates.DoubleChecked)
            .When(TestActions.Recall).To(TestStates.Recalled);
            var machine = builder.Build();
            int i       = 0;

            machine.GetStateListener(TestStates.Draft).Entered
                += (sender, e) =>
                {
                i++;
                };
            machine.Push(TestActions.Save);
            Assert.AreEqual(1, i);
        }
 public static FromStep <TState, TAction> From <TState, TAction>(this CodeStateMachineBuilder <TState, TAction> builder, TState state)
     where TState : struct
     where TAction : struct
 {
     return(new FromStep <TState, TAction>(builder, state));
 }
Example #7
0
 public FromStep(CodeStateMachineBuilder <TState, TAction> codeStateMachineBuilder, TState from)
 {
     this.codeStateMachineBuilder = codeStateMachineBuilder;
     this.from = from;
 }