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()); }
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"); }
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 }))); }
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"); }
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"); }