Exemple #1
0
        public async Task Should_properly_handle_the_state_property()
        {
            State        True  = null;
            State        False = null;
            Event <Data> Thing = null;

            var instance = new Instance();
            var machine  = AutomatonymousStateMachine <Instance>
                           .New(builder => builder
                                .State("True", out True)
                                .State("False", out False)
                                .Event("Thing", out Thing)
                                .During(builder.Initial)
                                .When(Thing, context => context.Data.Condition, b => b.TransitionTo(True))
                                .When(Thing, context => !context.Data.Condition, b => b.TransitionTo(False))
                                );

            await machine.RaiseEvent(instance, Thing, new Data
            {
                Condition = true
            });

            Assert.AreEqual(True, instance.CurrentState);

            var serializer = new JsonStateSerializer <StateMachine <Instance>, Instance>(machine);

            string body = serializer.Serialize(instance);

            Console.WriteLine("Body: {0}", body);
            var reInstance = serializer.Deserialize <Instance>(body);

            Assert.AreEqual(True, reInstance.CurrentState);
        }
        public SaleBetStateMachine(IProcessingService processingService)
        {
            ProcessingService   = processingService;
            ReceiptProvider     = processingService?.BetReceiptProvider;
            JsonStateSerializer = new JsonStateSerializer <SaleBetStateMachine, SaleBetSaga>(this);

            BuildStateMachine();
        }