예제 #1
0
        private static bool IsValidStringRule(StringDataUnit validStringDataUnit, StringValueRule stringValueRule)
        {
            RuleToApply ruleToApply = RuleToApply.NOTEQUALTO;

            if (!string.IsNullOrEmpty(stringValueRule.ShouldBeGreaterThan) || !string.IsNullOrEmpty(stringValueRule.ShouldBeLessThan))
            {
                ruleToApply = RuleToApply.GREATERORLESSER;
            }
            else if (!string.IsNullOrEmpty(stringValueRule.ShouldBeEqualTo))
            {
                ruleToApply = RuleToApply.EQUALTO;
            }
            else if (!string.IsNullOrEmpty(stringValueRule.ShouldNotBeEqualTo))
            {
                ruleToApply = RuleToApply.NOTEQUALTO;
            }
            else
            {
                throw new Exception($"String Value rule needs to have a proper value");
            }

            switch (ruleToApply)
            {
            case RuleToApply.GREATERORLESSER:
                if (!string.IsNullOrEmpty(stringValueRule.ShouldBeGreaterThan) &&
                    !string.IsNullOrEmpty(stringValueRule.ShouldBeLessThan))
                {
                    if (validStringDataUnit.Value.CompareTo(stringValueRule.ShouldBeGreaterThan) >= 0 &&
                        validStringDataUnit.Value.CompareTo(stringValueRule.ShouldBeLessThan) <= 0)
                    {
                        return(true);
                    }
                    return(false);
                }
                else if (!string.IsNullOrEmpty(stringValueRule.ShouldBeGreaterThan) && validStringDataUnit.Value.CompareTo(stringValueRule.ShouldBeGreaterThan) >= 0)
                {
                    return(true);
                }
                else if (!string.IsNullOrEmpty(stringValueRule.ShouldBeLessThan) && validStringDataUnit.Value.CompareTo(stringValueRule.ShouldBeLessThan) <= 0)
                {
                    return(true);
                }

                return(false);

            case RuleToApply.EQUALTO:
                return(validStringDataUnit.Value == stringValueRule.ShouldBeEqualTo);

            case RuleToApply.NOTEQUALTO:
                return(validStringDataUnit.Value != stringValueRule.ShouldNotBeEqualTo);

            default:
                throw new NotSupportedException("The given type is not valid");
            }
        }
예제 #2
0
        private static StringValueRule GetStringValueRule(Rules rules)
        {
            if (StringValueRule != null)
            {
                return(StringValueRule);
            }


            StringValueRule = new StringValueRule(
                rules.StringValueRule.ShouldBeGreaterThan,
                rules.StringValueRule.ShouldBeLessThan,
                rules.StringValueRule.ShouldBeEqualTo,
                rules.StringValueRule.ShouldNotBeEqualTo);

            return(StringValueRule);
        }
        public async Task GetValidationLogicShouldReturnRuleThatUsesCorrectInterfaceWhenOriginalLogicWasAmbiguousBetweenRuleAndValueRule([Frozen] IResolvesRule ruleResolver,
                                                                                                                                         ValidationLogicFactory sut,
                                                                                                                                         string str,
                                                                                                                                         [RuleContext] RuleContext context)
        {
            var value = new ManifestValue {
                ValidatedType = typeof(string)
            };
            var rule = new ManifestRule(value, new ManifestRuleIdentifier(value, typeof(StringValueRule)));

            value.Rules.Add(rule);
            var ruleBody = new StringValueRule();

            Mock.Get(ruleResolver).Setup(x => x.ResolveRule(typeof(StringValueRule))).Returns(ruleBody);

            var result = sut.GetValidationLogic(rule);
            await result.GetResultAsync(str, null, context);

            Assert.That(ruleBody.ExecutedAsRule, Is.True);
        }
        public async Task GetValidationLogicShouldReturnWorkingLogicForValueRule([Frozen] IResolvesRule ruleResolver,
                                                                                 ValidationLogicFactory sut,
                                                                                 string str,
                                                                                 [RuleContext] RuleContext context)
        {
            var value = new ManifestValue {
                ValidatedType = typeof(string), Parent = new ManifestValue {
                    ValidatedType = typeof(ComplexObject)
                }
            };
            var rule = new ManifestRule(value, new ManifestRuleIdentifier(value, typeof(StringValueRule)));

            value.Rules.Add(rule);
            var ruleBody = new StringValueRule();

            Mock.Get(ruleResolver).Setup(x => x.ResolveRule(typeof(StringValueRule))).Returns(ruleBody);

            var result = sut.GetValidationLogic(rule);
            await result.GetResultAsync(str, null, context);

            Assert.That(ruleBody.ExecutedAsValueRule, Is.True);
        }
예제 #5
0
        public void RulesService_IsValidRule_StringDataUnitTests()
        {
            var             actual          = false;
            Rules           rules           = new Rules();
            InputDataUnit   dataUnit        = new InputDataUnit(SignalName, StringType, "HIGH");
            StringValueRule stringValueRule = new StringValueRule(null, null, null, null);

            rules.StringValueRule = stringValueRule;

            //Negative Tests :
            stringValueRule.ShouldBeGreaterThan = "B";
            dataUnit.Value = "A";
            RulesService.RulesService.StringValueRule = null;
            actual = RulesService.RulesService.IsValidRule(dataUnit, rules);
            Assert.IsFalse(actual);

            stringValueRule.ShouldBeGreaterThan = null;
            stringValueRule.ShouldBeLessThan    = "A";
            dataUnit.Value = "B";
            RulesService.RulesService.StringValueRule = null;
            actual = RulesService.RulesService.IsValidRule(dataUnit, rules);
            Assert.IsFalse(actual);

            stringValueRule.ShouldBeGreaterThan = "C";
            stringValueRule.ShouldBeLessThan    = "F";
            dataUnit.Value = "B";
            RulesService.RulesService.StringValueRule = null;
            actual = RulesService.RulesService.IsValidRule(dataUnit, rules);
            Assert.IsFalse(actual);

            dataUnit.Value = "G";
            RulesService.RulesService.StringValueRule = null;
            actual = RulesService.RulesService.IsValidRule(dataUnit, rules);
            Assert.IsFalse(actual);

            stringValueRule.ShouldBeGreaterThan = null;
            stringValueRule.ShouldBeLessThan    = null;
            stringValueRule.ShouldBeEqualTo     = "AA";
            dataUnit.Value = "BB";
            RulesService.RulesService.StringValueRule = null;
            actual = RulesService.RulesService.IsValidRule(dataUnit, rules);
            Assert.IsFalse(actual);

            stringValueRule.ShouldBeEqualTo    = null;
            stringValueRule.ShouldNotBeEqualTo = "AA";
            dataUnit.Value = "AA";
            RulesService.RulesService.StringValueRule = null;
            actual = RulesService.RulesService.IsValidRule(dataUnit, rules);
            Assert.IsFalse(actual);

            //Postitive test cases
            //Resetting to null
            stringValueRule.ShouldBeGreaterThan = null;
            stringValueRule.ShouldNotBeEqualTo  = null;
            stringValueRule.ShouldBeEqualTo     = null;
            stringValueRule.ShouldNotBeEqualTo  = null;

            stringValueRule.ShouldBeGreaterThan = "A";
            dataUnit.Value = "B";
            RulesService.RulesService.StringValueRule = null;
            actual = RulesService.RulesService.IsValidRule(dataUnit, rules);
            Assert.IsTrue(actual);

            stringValueRule.ShouldBeGreaterThan = null;
            stringValueRule.ShouldBeLessThan    = "B";
            dataUnit.Value = "A";
            RulesService.RulesService.StringValueRule = null;
            actual = RulesService.RulesService.IsValidRule(dataUnit, rules);
            Assert.IsTrue(actual);

            stringValueRule.ShouldBeGreaterThan = "A";
            stringValueRule.ShouldBeLessThan    = "C";
            dataUnit.Value = "B";
            RulesService.RulesService.StringValueRule = null;
            actual = RulesService.RulesService.IsValidRule(dataUnit, rules);
            Assert.IsTrue(actual);

            stringValueRule.ShouldBeGreaterThan = null;
            stringValueRule.ShouldBeLessThan    = null;
            stringValueRule.ShouldBeEqualTo     = "AAA";
            dataUnit.Value = "AAA";
            RulesService.RulesService.StringValueRule = null;
            actual = RulesService.RulesService.IsValidRule(dataUnit, rules);
            Assert.IsTrue(actual);

            stringValueRule.ShouldBeEqualTo    = null;
            stringValueRule.ShouldNotBeEqualTo = "ABC";
            dataUnit.Value = "BCA";
            RulesService.RulesService.StringValueRule = null;
            actual = RulesService.RulesService.IsValidRule(dataUnit, rules);
            Assert.IsTrue(actual);
        }