Beispiel #1
0
        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.");
        }
Beispiel #2
0
        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.");
        }
Beispiel #3
0
        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.");
        }