public void CountOfListAsCondition() { var program = MDKFactory.CreateProgram <Program>(); var command = program.ParseCommand("if count of shipRoute[] > 0 wait"); Assert.IsTrue(command is ConditionalCommand); ConditionalCommand conditionalCommand = (ConditionalCommand)command; Assert.IsTrue(conditionalCommand.Condition is ComparisonVariable); ComparisonVariable comparison = (ComparisonVariable)conditionalCommand.Condition; Assert.IsTrue(comparison.a is ListAggregateVariable); ListAggregateVariable listAggregate = (ListAggregateVariable)comparison.a; Assert.AreEqual(PropertyAggregate.COUNT, listAggregate.aggregation); Assert.IsTrue(listAggregate.expectedList is ListIndexVariable); ListIndexVariable listIndex = (ListIndexVariable)listAggregate.expectedList; Assert.IsTrue(listIndex.expectedList is InMemoryVariable); InMemoryVariable listVariable = (InMemoryVariable)listIndex.expectedList; Assert.AreEqual("shipRoute", listVariable.variableName); Assert.IsTrue(comparison.b is StaticVariable); StaticVariable comparisonVariable = (StaticVariable)comparison.b; Assert.AreEqual(0f, comparisonVariable.GetValue().GetValue()); }
public void ImplicitSelectorUsedInAggregateCondition() { var program = MDKFactory.CreateProgram <Program>(); var command = program.ParseCommand("if any battery ratio < 0.75 turn on the generators"); Assert.IsTrue(command is ConditionalCommand); ConditionalCommand conditionalCommand = (ConditionalCommand)command; Assert.IsTrue(conditionalCommand.Condition is AggregateConditionVariable); AggregateConditionVariable condition = (AggregateConditionVariable)conditionalCommand.Condition; Assert.IsTrue(condition.entityProvider is AllEntityProvider); Assert.AreEqual(Block.BATTERY, condition.entityProvider.GetBlockType()); Assert.AreEqual(AggregationMode.ANY, condition.aggregationMode); Assert.IsTrue(condition.blockCondition is BlockPropertyCondition); BlockPropertyCondition propertyCondition = (BlockPropertyCondition)condition.blockCondition; Assert.AreEqual(Property.RATIO + "", propertyCondition.property.propertyType()); Assert.IsTrue(conditionalCommand.conditionMetCommand is BlockCommand); BlockCommand metCommand = (BlockCommand)conditionalCommand.conditionMetCommand; Assert.IsTrue(metCommand.entityProvider is AllEntityProvider); Assert.AreEqual(Block.GENERATOR, metCommand.entityProvider.GetBlockType()); }
public void BlockConditionWithProperty() { var command = ParseCommand("if the \"batteries\" are recharging set the \"rotors\" height to 5"); Assert.IsTrue(command is ConditionalCommand); ConditionalCommand conditionalCommand = (ConditionalCommand)command; Assert.IsTrue(conditionalCommand.Condition is AggregateConditionVariable); }
public void SimpleVariableCondition() { var command = ParseCommand("if {a} set the \"rotors\" height to 5"); Assert.IsTrue(command is ConditionalCommand); ConditionalCommand conditionalCommand = (ConditionalCommand)command; Assert.IsTrue(conditionalCommand.Condition is InMemoryVariable); InMemoryVariable variable = (InMemoryVariable)conditionalCommand.Condition; Assert.AreEqual("a", variable.variableName); }
public void Add(IMessage fact, string op, int value, IMessage command) { var cc = new ConditionalCommand() { Fact = Any.Pack(fact), CompareOp = op, Value = value, Command = Any.Pack(command) }; Messages.Add(cc); }
public void EmbeddedParanthesis() { var command = ParseCommand("if ( ( {a} + {b} ) > {c} ) set the \"pistons\" height to ( {a} + {b} )"); Assert.IsTrue(command is ConditionalCommand); ConditionalCommand conditionalCommand = (ConditionalCommand)command; Variable condition = conditionalCommand.Condition; Assert.IsTrue(condition is ComparisonVariable); ComparisonVariable comparison = (ComparisonVariable)condition; Assert.IsTrue(comparison.a is OperandVariable); }
public void EmbeddedParanthesis() { var program = MDKFactory.CreateProgram <Program>(); var command = program.ParseCommand("if ( ( {a} + {b} ) > {c} ) set the \"pistons\" height to ( {a} + {b} )"); Assert.IsTrue(command is ConditionalCommand); ConditionalCommand conditionalCommand = (ConditionalCommand)command; Variable condition = conditionalCommand.Condition; Assert.IsTrue(condition is ComparisonVariable); ComparisonVariable comparison = (ComparisonVariable)condition; Assert.IsTrue(comparison.a is BiOperandVariable); }
public void AdditionUsedAsBlockConditionVariable() { var command = ParseCommand("if the \"rotor\" angle > {a} + 30 set the \"rotor\" angle to {a}"); Assert.IsTrue(command is ConditionalCommand); ConditionalCommand assignment = (ConditionalCommand)command; Assert.IsTrue(assignment.Condition is AggregateConditionVariable); AggregateConditionVariable condition = (AggregateConditionVariable)assignment.Condition; Assert.IsTrue(condition.blockCondition is BlockPropertyCondition); BlockPropertyCondition blockCondition = (BlockPropertyCondition)condition.blockCondition; Assert.IsTrue(blockCondition.comparisonValue is OperandVariable); }
public void SimpleBooleanCondition() { var command = ParseCommand("if true set the \"rotors\" height to 5"); Assert.IsTrue(command is ConditionalCommand); ConditionalCommand conditionalCommand = (ConditionalCommand)command; Assert.IsTrue(conditionalCommand.Condition is StaticVariable); StaticVariable variable = (StaticVariable)conditionalCommand.Condition; Assert.IsTrue(variable.GetValue() is BooleanPrimitive); BooleanPrimitive boolean = (BooleanPrimitive)variable.GetValue(); Assert.IsTrue(boolean.GetBooleanValue()); }
public void Add(IMessage fact, string op, int value, params IMessage[] commands) { foreach (var command in commands) { var cc = new ConditionalCommand() { Fact = Any.Pack(fact), CompareOp = op, Value = value, Command = Any.Pack(command) }; Messages.Add(cc); } }
public void SimpleBooleanCondition() { var program = MDKFactory.CreateProgram <Program>(); var command = program.ParseCommand("if true set the \"rotors\" height to 5"); Assert.IsTrue(command is ConditionalCommand); ConditionalCommand conditionalCommand = (ConditionalCommand)command; Assert.IsTrue(conditionalCommand.Condition is StaticVariable); StaticVariable variable = (StaticVariable)conditionalCommand.Condition; Assert.IsTrue(variable.GetValue() is BooleanPrimitive); BooleanPrimitive boolean = (BooleanPrimitive)variable.GetValue(); Assert.IsTrue(boolean.GetTypedValue()); }
public void FalseConditionalSynchronousCommand() { var person = new Person(); var cmdConditional = new ConditionalCommand() { ExecuteWhen = Condition.False, Command = new SetPropertyValueCommand() { PropertyName = "FirstName", Value = "Dude" } }; var cmdRes = cmdConditional.Execute(this.svcProvider, person); Assert.IsTrue(cmdRes.IsSuccess); Assert.AreEqual(person.FirstName, null); }
private void changeState() { ConditionalCommand.ChangeState(); propertyChanged(); }