Esempio n. 1
0
        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());
        }
Esempio n. 2
0
        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());
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 9
0
        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());
        }
Esempio n. 10
0
        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);
            }
        }
Esempio n. 11
0
        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());
        }
Esempio n. 12
0
        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);
        }
Esempio n. 13
0
 private void changeState()
 {
     ConditionalCommand.ChangeState();
     propertyChanged();
 }