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())); }
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); }
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); }