public void ChangeState_GivenPartialAsync_TransitionIsAsync() { var uut = Behavioral.StateMachineFactory.CreateTriggerAsync <DummyState>("Demo StateMachine", _logger); var harness = new StateMachineTestHarness <DummyState>(uut, DummyState.One.ToString()); TestBuilder.BuildOneWayMachineWithTriggers(harness.Machine, harness); Assert.IsTrue(harness.WaitUntilAsyncTransitionSuccess(TimeSpan.FromSeconds(1)), "Waited too long for a state transition."); }
public void ChangeState_GivenPartialSync_WhereBehaviorIsAsync_TransitionIsNotAsync() { var uut = Behavioral.StateMachineFactory.CreateBehaviorAsync <DummyState>("Demo StateMachine", _logger); var harness = new StateMachineTestHarness <DummyState>(uut, DummyState.One.ToString()); TestBuilder.BuildOneWayMachineWithTriggers(harness.Machine, harness); // The transition should be blocked from completing its work because the transition happens on the current thread. Assert.IsFalse(harness.WaitUntilAsyncTransitionSuccess(TimeSpan.FromSeconds(1)), "Transition executed asynchronously."); }
public void ChangeState_GivenFullyAsync_TransitionIsAsync() { var uut = Behavioral.StateMachineFactory.CreateAsync <DummyState>("Demo StateMachine", _logger); var harness = new StateMachineTestHarness <DummyState>(uut, DummyState.One.ToString()); TestBuilder.BuildOneWayMachineWithTriggers(harness.Machine, harness); // The transition should be able to complete its work and signal success independent of the current waiting thread. Assert.IsTrue(harness.WaitUntilAsyncTransitionSuccess(TimeSpan.FromSeconds(1)), "Waited too long for a state transition."); }