示例#1
0
 public void NoConditionsInAnd_IsNotValid()
 {
     Assert.Throws <ValidationException>(() =>
                                         StateMachineBuilder.StateMachine()
                                         .StartAt("Initial")
                                         .State("Initial", StateMachineBuilder.ChoiceState()
                                                .Choice(StateMachineBuilder.Choice()
                                                        .Condition(StateMachineBuilder.And())
                                                        .Transition(StateMachineBuilder.Next("Terminal")))
                                                .DefaultStateName("Terminal"))
                                         .State("Terminal", StateMachineBuilder.SucceedState())
                                         .Build());
 }
示例#2
0
        public void ChoiceStateWithAndCondition()
        {
            var stateMachine = StateMachineBuilder.StateMachine()
                               .StartAt("InitialState")
                               .State("InitialState", StateMachineBuilder.ChoiceState()
                                      .DefaultStateName("DefaultState")
                                      .Choice(StateMachineBuilder.Choice().Transition(StateMachineBuilder.Next("NextState"))
                                              .Condition(
                                                  StateMachineBuilder.And(StateMachineBuilder.StringEquals("$.var", "value"),
                                                                          StateMachineBuilder.NumericEquals("$.other-var", 10)
                                                                          ))))
                               .State("NextState", StateMachineBuilder.SucceedState())
                               .State("DefaultState", StateMachineBuilder.SucceedState())
                               .Build();

            AssertStateMachine(stateMachine, "ChoiceStateWithAndCondition.json");
        }
示例#3
0
        public void TestAndOperator()
        {
            var c = StateMachineBuilder.ChoiceState()
                    .Choice(StateMachineBuilder.Choice()
                            .Transition(StateMachineBuilder.Next("NextState"))
                            .Condition(StateMachineBuilder.And(StateMachineBuilder.StringEquals("$.varstr", "value"),
                                                               StateMachineBuilder.BooleanEquals("$.varbool", true)))
                            )
                    .Build();

            var choices = c.Choices.ToArray();

            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 })));
            Assert.False(choices[0].Condition.Match(JObject.FromObject(new { varstr = "valuee", varbool = false })));
            Assert.False(choices[0].Condition.Match(JObject.FromObject(new { varstr = "valuee", varbool = true })));
        }
示例#4
0
        public void ChoiceStateWithComplexCondition()
        {
            var stateMachine = StateMachineBuilder.StateMachine()
                               .StartAt("InitialState")
                               .State("InitialState", StateMachineBuilder.ChoiceState()
                                      .DefaultStateName("DefaultState")
                                      .Choice(StateMachineBuilder.Choice().Transition(StateMachineBuilder.Next("NextState"))
                                              .Condition(StateMachineBuilder.And(
                                                             StateMachineBuilder.StringGreaterThanEquals("$.var", "value"),
                                                             StateMachineBuilder.StringLessThanEquals("$.other-var", "foo"),
                                                             StateMachineBuilder.Or(
                                                                 StateMachineBuilder.NumericLessThan("$.numeric", 9000.1),
                                                                 StateMachineBuilder.Not(StateMachineBuilder.NumericGreaterThanEquals("$.numeric", 42))
                                                                 )
                                                             ))))
                               .State("NextState", StateMachineBuilder.SucceedState())
                               .State("DefaultState", StateMachineBuilder.SucceedState())
                               .Build();

            AssertStateMachine(stateMachine, "ChoiceStateWithComplexCondition.json");
        }
示例#5
0
        public void ChoiceStateWithAllPrimitiveConditions()
        {
            var date         = DateTime.Parse("2016-03-14T01:59:00.000Z").ToUniversalTime();
            var stateMachine = StateMachineBuilder.StateMachine()
                               .StartAt("InitialState")
                               .State("InitialState", StateMachineBuilder.ChoiceState()
                                      .DefaultStateName("DefaultState")
                                      .Choice(StateMachineBuilder.Choice().Transition(StateMachineBuilder.Next("NextState"))
                                              .Condition(StateMachineBuilder.And(
                                                             StateMachineBuilder.StringEquals("$.string", "value"),
                                                             StateMachineBuilder.StringGreaterThan("$.string", "value"),
                                                             StateMachineBuilder.StringGreaterThanEquals("$.string", "value"),
                                                             StateMachineBuilder.StringLessThan("$.string", "value"),
                                                             StateMachineBuilder.StringLessThanEquals("$.string", "value"),
                                                             StateMachineBuilder.NumericEquals("$.integral", 42),
                                                             StateMachineBuilder.NumericGreaterThan("$.integral", 42),
                                                             StateMachineBuilder.NumericGreaterThanEquals("$.integral", 42),
                                                             StateMachineBuilder.NumericLessThan("$.integral", 42),
                                                             StateMachineBuilder.NumericLessThanEquals("$.integral", 42),
                                                             StateMachineBuilder.NumericEquals("$.double", 9000.1),
                                                             StateMachineBuilder.NumericGreaterThan("$.double", 9000.1),
                                                             StateMachineBuilder.NumericGreaterThanEquals("$.double", 9000.1),
                                                             StateMachineBuilder.NumericLessThan("$.double", 9000.1),
                                                             StateMachineBuilder.NumericLessThanEquals("$.double", 9000.1),
                                                             StateMachineBuilder.TimestampEquals("$.timestamp", date),
                                                             StateMachineBuilder.TimestampGreaterThan("$.timestamp", date),
                                                             StateMachineBuilder.TimestampGreaterThanEquals("$.timestamp", date),
                                                             StateMachineBuilder.TimestampLessThan("$.timestamp", date),
                                                             StateMachineBuilder.TimestampLessThanEquals("$.timestamp", date),
                                                             StateMachineBuilder.BooleanEquals("$.boolean", true),
                                                             StateMachineBuilder.BooleanEquals("$.boolean", false)
                                                             ))))
                               .State("NextState", StateMachineBuilder.SucceedState())
                               .State("DefaultState", StateMachineBuilder.SucceedState())
                               .Build();

            AssertStateMachine(stateMachine, "ChoiceStateWithAllPrimitiveCondition.json");
        }