public void StartTest()
        {
            var service = _container.GetService <ISMService>();

            var param = new SMParametersCollection();

            param.Add("int", "5");
            param.Add("str", "str");

            var sm = service.Start <StateMachine4Test>(param, Definition);

            Assert.IsNotNull(sm);
            Assert.AreEqual(sm.Context.TestPropInt, 5);
            Assert.AreEqual(sm.Context.TestPropStr, "str");

            var paramPush = new SMParametersCollection();

            paramPush.Add("TargetState", "state2");

            service.Push(sm, paramPush);

            Assert.IsTrue(sm.CurrentState.id == "state2");

            var paramPush2 = new SMParametersCollection();

            paramPush2.Add("TargetState", "state3");

            service.Push(sm, paramPush2);

            Assert.IsTrue(sm.CurrentState.id == "state3");
            Assert.AreEqual(sm.Context.TestPropInt, 15);
        }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            var serviceCollection = new ServiceCollection();

            serviceCollection.AddSingleton <ISMService, SMService>();
            serviceCollection.AddSingleton <IPersistenceService>(_ => new DataContractPersistenceService(new List <string>()
            {
                "IoC.ExampleApp"
            }, _));
            serviceCollection.AddTransient <IStateProcessor, StateProcessor>();
            serviceCollection.AddSingleton <ISMFactory, SMFactory>();
            serviceCollection.AddSingleton <IActionFabric, ActionFabric>();
            serviceCollection.AddSingleton <ITriggerFabric, TriggerFabric>();
            serviceCollection.AddTransient <IStateMachine, GuessStateMachine>();
            serviceCollection.AddTransient <GuessStateMachine>();

            serviceCollection.AddTransient <InitContext>();
            serviceCollection.AddTransient <CheckNumber>();
            serviceCollection.AddTransient <GuessOKTrigger>();

            _container = serviceCollection.BuildServiceProvider();

            var smService = _container.GetRequiredService <ISMService>();

            var sm = smService.Start <GuessStateMachine>(null, GuessStateMachine.GetDefinition());

            Console.WriteLine(sm.ToString());
            //Console.WriteLine(sm.Context.Number);
            smService.Push(sm, null);

            while (!sm.Finished)
            {
                var str = Console.ReadLine();
                int i   = -1;

                if (int.TryParse(str, out i))
                {
                    var param = new SMParametersCollection();
                    param.Add("EnteredNumber", i);

                    smService.Push(sm, param);

                    Console.WriteLine(sm.Context.Result);
                }
                else
                {
                    Console.WriteLine("Error!");
                }

                Console.WriteLine(sm.ToString());
            }


            var persistance = _container.GetRequiredService <IPersistenceService>();

            Console.WriteLine(persistance.To(sm));
            Console.ReadKey();
        }
        public void NoTrueTriggerTest()
        {
            var service = _container.GetService <ISMService>();

            var sm = service.Start <StateMachine4Test>(null, Definition);

            var paramPush = new SMParametersCollection();

            paramPush.Add("TargetState", "s200");

            service.Push(sm, paramPush);
        }