Exemple #1
0
        public void ChoiceStateWithoutDefaultState()
        {
            StateMachine stateMachine = StepFunctionBuilder.StateMachine()
                                        .StartAt("InitialState")
                                        .State("InitialState", StepFunctionBuilder.ChoiceState()
                                               .Choice(StepFunctionBuilder.Choice().Transition(StepFunctionBuilder.Next("NextState"))
                                                       .Condition(
                                                           StepFunctionBuilder.Or(StepFunctionBuilder.Gt("$.var", "value"),
                                                                                  StepFunctionBuilder.Lte("$.other-var", 10)
                                                                                  ))))
                                        .State("NextState", StepFunctionBuilder.SucceedState())
                                        .State("DefaultState", StepFunctionBuilder.SucceedState())
                                        .Build();

            AssertStateMachine(stateMachine, "ChoiceStateWithoutDefault.json");
        }
        public void TestOrOperator()
        {
            var c = StepFunctionBuilder.ChoiceState()
                    .Choice(StepFunctionBuilder.Choice()
                            .Transition(StepFunctionBuilder.Next("NextState"))
                            .Condition(StepFunctionBuilder.Or(StepFunctionBuilder.Eq("$.varstr", "value"),
                                                              StepFunctionBuilder.Eq("$.varbool", false)))
                            )
                    .Build();

            var choices = c.Choices.ToArray();

            Assert.True(choices[0].Condition.Match(JObject.FromObject(new { varstr = "value", varbool = false })));
            Assert.True(choices[0].Condition.Match(JObject.FromObject(new { varstr = "valuee", varbool = false })));
            Assert.True(choices[0].Condition.Match(JObject.FromObject(new { varstr = "value", varbool = true })));
            Assert.False(choices[0].Condition.Match(JObject.FromObject(new { varstr = "valuee", varbool = true })));
        }
Exemple #3
0
        public void ChoiceStateWithComplexCondition()
        {
            StateMachine stateMachine = StepFunctionBuilder.StateMachine()
                                        .StartAt("InitialState")
                                        .State("InitialState", StepFunctionBuilder.ChoiceState()
                                               .DefaultStateName("DefaultState")
                                               .Choice(StepFunctionBuilder.Choice().Transition(StepFunctionBuilder.Next("NextState"))
                                                       .Condition(StepFunctionBuilder.And(
                                                                      StepFunctionBuilder.Gte("$.var", "value"),
                                                                      StepFunctionBuilder.Lte("$.other-var", "foo"),
                                                                      StepFunctionBuilder.Or(
                                                                          StepFunctionBuilder.Lt("$.numeric", 9000.1),
                                                                          StepFunctionBuilder.Not(StepFunctionBuilder.Gte("$.numeric", 42))
                                                                          )
                                                                      ))))
                                        .State("NextState", StepFunctionBuilder.SucceedState())
                                        .State("DefaultState", StepFunctionBuilder.SucceedState())
                                        .Build();

            AssertStateMachine(stateMachine, "ChoiceStateWithComplexCondition.json");
        }
        public void TestBadFormat()
        {
            var dt = new DateTime(2018, 10, 22, 22, 33, 11);
            var c  = StepFunctionBuilder.ChoiceState()
                     .Choice(StepFunctionBuilder.Choice()
                             .Transition(StepFunctionBuilder.Next("NextState"))
                             .Condition(StepFunctionBuilder.Or(StepFunctionBuilder.Eq("$.varint", 33),
                                                               StepFunctionBuilder.Gt("$.varint", 33),
                                                               StepFunctionBuilder.Gte("$.varint", 33),
                                                               StepFunctionBuilder.Lt("$.varint", 33),
                                                               StepFunctionBuilder.Lte("$.varint", 33))))
                     .Choice(StepFunctionBuilder.Choice()
                             .Transition(StepFunctionBuilder.Next("NextState"))
                             .Condition(StepFunctionBuilder.Or(StepFunctionBuilder.Eq("$.vardate", dt),
                                                               StepFunctionBuilder.Gt("$.vardate", dt),
                                                               StepFunctionBuilder.Gte("$.vardate", dt),
                                                               StepFunctionBuilder.Lt("$.vardate", dt),
                                                               StepFunctionBuilder.Lte("$.vardate", dt))))
                     .Choice(StepFunctionBuilder.Choice()
                             .Transition(StepFunctionBuilder.Next("NextState"))
                             .Condition(StepFunctionBuilder.Eq("$.varbool", true)))
                     .Build();

            var choices = c.Choices.ToArray();

            //Unknown prop
            Assert.False(choices[0].Condition.Match(JObject.FromObject(new { other = "value" })));
            Assert.False(choices[1].Condition.Match(JObject.FromObject(new { other = "value" })));
            Assert.False(choices[2].Condition.Match(JObject.FromObject(new { other = "value" })));

            //Assert.False(choices[0].Condition.Match(JObject.FromObject(new { varstr = "1000" })));
            //string instead of correct type
            Assert.False(choices[0].Condition.Match(JObject.FromObject(new { varint = "hello" })));
            Assert.False(choices[1].Condition.Match(JObject.FromObject(new { vardate = "hello" })));
            Assert.False(choices[2].Condition.Match(JObject.FromObject(new { varbool = "hello" })));

            //Invalid date
            Assert.False(choices[1].Condition.Match(JObject.FromObject(new { varbool = "2016-14-14T01:59:00Z" })));
        }