Пример #1
0
            public async Task When_become_stacked()
            {
                Behavior behavior = new BehaviorTester(events)
                                    .Initial("Initial")
                                    .State("Initial")
                                    .State("A")
                                    .State("B")
                                    .State("C");

                await behavior.BecomeStacked("A");

                await behavior.BecomeStacked("B");

                await behavior.BecomeStacked("C");

                Assert.That(behavior.Current.Name, Is.EqualTo("C"));

                await behavior.Unbecome();

                Assert.That(behavior.Current.Name, Is.EqualTo("B"));

                await behavior.Unbecome();

                Assert.That(behavior.Current.Name, Is.EqualTo("A"));

                await behavior.Unbecome();

                Assert.That(behavior.Current.Name, Is.EqualTo("Initial"));

                Assert.ThrowsAsync <InvalidOperationException>(() => behavior.Unbecome());
            }
Пример #2
0
            public async Task When_become_with_arguments()
            {
                string passedArg = null;

                Task <object> Receive(object message)
                {
                    if (message is Become <string> m)
                    {
                        passedArg = m.Argument;
                    }

                    return(TaskResult.Done);
                };

                Behavior behavior = new BehaviorTester(events)
                                    .State("A", Receive)
                                    .State("B", Receive)
                                    .Initial("A");

                await behavior.Become("B", "arg1");

                Assert.That(passedArg, Is.EqualTo("arg1"));

                await behavior.BecomeStacked("A", "arg2");

                Assert.That(passedArg, Is.EqualTo("arg2"));
            }