Пример #1
0
        public void MultipleAND()
        {
            BooleanCondition bc = new BooleanCondition();

            bc.AddCondition(new MockCondition(true), BooleanCondition.ConditionType.AND);
            bc.AddCondition(new MockCondition(true), BooleanCondition.ConditionType.AND);

            bool isMet = bc.IsMet(null);

            Assert.IsTrue(isMet);
        }
Пример #2
0
        public void MultipleANDFail2()
        {
            var bc = new BooleanCondition();

            bc.AddCondition(new MockCondition(true), BooleanCondition.ConditionType.AND);
            bc.AddCondition(new MockCondition(false), BooleanCondition.ConditionType.AND);

            var isMet = bc.IsMet(null);

            Assert.IsFalse(isMet);
        }
Пример #3
0
        public void LastORPass()
        {
            var bc = new BooleanCondition();

            bc.AddCondition(new MockCondition(false), BooleanCondition.ConditionType.AND);
            bc.AddCondition(new MockCondition(false), BooleanCondition.ConditionType.AND);
            bc.AddCondition(new MockCondition(true), BooleanCondition.ConditionType.OR);

            var isMet = bc.IsMet(null);

            Assert.IsTrue(isMet);
        }
Пример #4
0
        public void ShortCircuitOR()
        {
            var bc = new BooleanCondition();

            bc.AddCondition(new MockCondition(true), BooleanCondition.ConditionType.OR);
            bc.AddCondition(new MockCondition(true), BooleanCondition.ConditionType.OR);
            bc.AddCondition(new MockCondition(false), BooleanCondition.ConditionType.OR);

            var isMet = bc.IsMet(null);

            Assert.IsTrue(isMet, "Expected the second or to short circuit the condition list");
        }
Пример #5
0
        public void MiddleORFail()
        {
            BooleanCondition bc = new BooleanCondition();

            bc.AddCondition(new MockCondition(false), BooleanCondition.ConditionType.AND);
            bc.AddCondition(new MockCondition(true), BooleanCondition.ConditionType.OR);
            bc.AddCondition(new MockCondition(false), BooleanCondition.ConditionType.AND);

            bool isMet = bc.IsMet(null);

            Assert.IsFalse(isMet);
        }
Пример #6
0
        public void Not()
        {
            var bc = new BooleanCondition();

            bc.AddCondition(new MockCondition(false), BooleanCondition.ConditionType.AND | BooleanCondition.ConditionType.NOT);

            var isMet = bc.IsMet(null);

            Assert.IsTrue(isMet);
        }
Пример #7
0
        private IUpdateCondition ReadCondition(XmlNode cnd)
        {
            IUpdateCondition conditionObject = null;

            if (cnd.ChildNodes.Count > 0 || "GroupCondition".Equals(cnd.Name))
            {
                var bc = new BooleanCondition();
                foreach (XmlNode child in cnd.ChildNodes)
                {
                    var childCondition = ReadCondition(child);
                    if (childCondition != null)
                    {
                        bc.AddCondition(childCondition,
                                        BooleanCondition.ConditionTypeFromString(child.Attributes != null && child.Attributes["type"] != null
                                                                ? child.Attributes["type"].Value
                                                                : null));
                    }
                }
                if (bc.ChildConditionsCount > 0)
                {
                    conditionObject = bc.Degrade();
                }
            }
            else if (_updateConditions.ContainsKey(cnd.Name))
            {
                conditionObject = (IUpdateCondition)Activator.CreateInstance(_updateConditions[cnd.Name]);

                if (cnd.Attributes != null)
                {
                    var dict = new Dictionary <string, string>();

                    // Store all other attributes, to be used by the condition object later
                    foreach (XmlAttribute att in cnd.Attributes)
                    {
                        if ("type".Equals(att.Name))
                        {
                            continue;
                        }

                        dict.Add(att.Name, att.Value);
                    }
                    if (dict.Count > 0)
                    {
                        Reflection.SetNauAttributes(conditionObject, dict);
                    }
                }
            }
            return(conditionObject);
        }
        public void BooleanCondition_AddCondition_IncreasesSubConditionsCount(BooleanOperator booleanOpeartor)
        {
            //Arrange
            var contex = Mock.Of <IExecutionContext>();
            var initialContidionList = new List <ICondition>()
            {
                Mock.Of <ICondition>(), Mock.Of <ICondition>()
            };
            var conditionToAdd = Mock.Of <ICondition>();

            //Action
            var booleanCondition       = new BooleanCondition(booleanOpeartor, initialContidionList);
            int initialConditionsCount = booleanCondition.subConditions.Count;

            booleanCondition.AddCondition(conditionToAdd);

            //Assert
            bool isIncreasedByOne = booleanCondition.subConditions.Count == initialConditionsCount + 1;

            Assert.True(isIncreasedByOne, $"should true");
        }