Example #1
0
        /*
         *  if name starts with s
         *     if name=so
         *         return sonam;
         *     else
         *          if name = sa
         *              return sarah
         *          else
         *              return suk
         *  else
         *      if name starts with p
         *          return peter
         *      else
         *          if name=k
         *              return kapil;
         *  return noname
         */
        private static void RuleStatement()
        {
            for (var i = 0; i <= 6; i++)
            {
                var name         = Console.ReadLine();
                var nameInAction = string.Empty;

                var saRule = new RuleStatement <string>(() => name == "sa",
                                                        new StopWithFuncRule <string>(() => "sarah"),
                                                        new StopWithFuncRule <string>(() => "suk")
                                                        );

                var soRule = new RuleStatement <string>(() => name == "so",
                                                        new StopWithFuncRule <string>(() => "sonam"),
                                                        saRule
                                                        );

                var kRule = new RuleStatement <string>(() => name == "k",
                                                       new StopWithFuncRule <string>(() => { nameInAction = "Kapil in action"; return("kapil"); }),
                                                       new StopWithFuncRule <string>(() => { nameInAction = "No name in action"; return("no name"); })
                                                       );

                var prule = new RuleStatement <string>(() => name.StartsWith("p"),
                                                       new StopWithFuncRule <string>(() => "peter"),
                                                       kRule
                                                       );

                var sRule = new RuleStatement <string>(() => name.StartsWith("s"), soRule, prule);

                Console.Write($"{sRule.Process()}==={name}");
                Console.WriteLine(Environment.NewLine);
                Console.WriteLine(nameInAction);
                Console.ReadLine();
            }
        }
Example #2
0
        public void IsSatisfiedRuleSetNullTest()
        {
            var vehicle = new VehicleModelProxy
            {
                Plate   = "123-abc",
                TransSN = "2343678",
                OMBYear = 3000
            };
            var service     = new RuleValidationService(vehicle);
            var rsBracketNo = new List <int> {
                0
            };
            var ruleConnectors = new List <int> {
                BoolOperator.AND
            };
            var target = new RuleStatement()
            {
                RsBracketNo    = String.Join(",", rsBracketNo),
                RuleConnectors = String.Join(",", ruleConnectors)
            };

            const bool expected = false;
            var        actual   = target.IsSatisfied(service);

            Assert.AreEqual(expected, actual);
        }
Example #3
0
        public void IsSatisfiedTwoRuleSetsTandTandTTrueTest()
        {
            var vehicle = new VehicleModelProxy
            {
                Plate   = "123-abc",
                TransSN = "2343678",
                OMBYear = 3000
            };
            var ruleConnectors = new List <int> {
                BoolOperator.AND, BoolOperator.AND
            };
            var rsBracketNo = new List <int> {
                0, 0, 0
            };

            var ruleList = new List <Rule> {
                new Rule
                {
                    RuleType           = Convert.ToInt32(RuleType.UnaryRule),
                    LeftPropertyName   = "Plate",
                    ComparisonOperator = LogicOperator.Equal,
                    ExpectedValue      = "123-abc"
                }
            };
            var ruleSet = new RuleSet {
                tblRules = ruleList, Operation = BoolOperator.AND
            };
            var ruleList1 = new List <Rule>
            {
                new Rule
                {
                    RuleType           = RuleType.UnaryRule,
                    LeftPropertyName   = "TransSN",
                    ComparisonOperator = LogicOperator.NotEqual,
                    ExpectedValue      = "23483678"
                }
            };
            var ruleSet1 = new RuleSet {
                tblRules = ruleList1, Operation = BoolOperator.AND
            };
            var ruleSets = new List <RuleSet> {
                ruleSet, ruleSet1, ruleSet1
            };

            var service   = new RuleValidationService(vehicle);
            var statement = new RuleStatement()
            {
                tblRuleSets    = ruleSets,
                RsBracketNo    = String.Join(",", rsBracketNo),
                RuleConnectors = String.Join(",", ruleConnectors)
            };
            const bool expected = true;
            var        actual   = statement.IsSatisfied(service);

            Assert.AreEqual(expected, actual);
        }
Example #4
0
        private static bool IsValidMethodCall(IAsyncMethodInvocation methodInvocation)
        {
            var result = new RuleStatement <bool>(
                () => methodInvocation.InstanceMethodInfo.ReturnType != typeof(void) &&
                methodInvocation.MethodInfo.GetCustomAttributes <ResolveFromCacheAttribute>() != null,
                new StopWithFuncRule <bool>(() => true), new StopWithFuncRule <bool>(() => false));

            var isValid = result.Process();

            return(isValid);
        }
Example #5
0
        public void IsSatisfied_RuleSet_OneGreaterThan_RuleConnector_Test()
        {
            var vehicle = new VehicleModelProxy
            {
                Plate   = "123-abc",
                TransSN = "2343678",
                OMBYear = 3000
            };

            var ruleConnectors = new List <int> {
                BoolOperator.AND, BoolOperator.AND
            };
            var rsBracketNo = new List <int> {
                0
            };

            var ruleList = new List <Rule> {
                new Rule
                {
                    RuleType           = RuleType.UnaryRule,
                    LeftPropertyName   = "OMBYear",
                    ComparisonOperator = LogicOperator.GreaterThan,
                    ExpectedValue      = "2000"
                },
                new Rule
                {
                    RuleType           = RuleType.UnaryRule,
                    LeftPropertyName   = "Miles",
                    ComparisonOperator = LogicOperator.GreaterThan,
                    ExpectedValue      = "2000"
                }
            };
            var ruleSet = new RuleSet {
                tblRules = ruleList, Operation = BoolOperator.AND
            };
            var ruleSets = new List <RuleSet> {
                ruleSet
            };

            var service   = new RuleValidationService(vehicle);
            var statement = new RuleStatement()
            {
                tblRuleSets    = ruleSets,
                RsBracketNo    = String.Join(",", rsBracketNo),
                RuleConnectors = String.Join(",", ruleConnectors)
            };

            const bool expected = false;
            var        actual   = statement.IsSatisfied(service);

            Assert.AreEqual(expected, actual);
            Assert.Inconclusive("Verify the correctness of this test method.");
        }
Example #6
0
        public void IsSatisfiedRuleSetNotEqualRsBracketNoTest()
        {
            var vehicle = new VehicleModelProxy
            {
                Plate   = "123-abc",
                TransSN = "2343678",
                OMBYear = 3000
            };

            var ruleConnectors = new List <int> {
                BoolOperator.AND
            };

            var rsBracketNo = new List <int>();

            var ruleList = new List <Rule> {
                new Rule
                {
                    RuleType           = RuleType.UnaryRule,
                    LeftPropertyName   = "OBMYear",
                    ComparisonOperator = LogicOperator.GreaterThan,
                    ExpectedValue      = "2000"
                },
                new Rule
                {
                    RuleType           = Convert.ToInt32(RuleType.UnaryRule),
                    LeftPropertyName   = "OBMYear",
                    ComparisonOperator = LogicOperator.GreaterThan,
                    ExpectedValue      = "2000"
                }
            };
            var ruleSet = new RuleSet {
                tblRules = ruleList, Operation = BoolOperator.AND
            };
            var ruleSets = new List <RuleSet> {
                ruleSet
            };

            var service   = new RuleValidationService(vehicle);
            var statement = new RuleStatement()
            {
                tblRuleSets    = ruleSets,
                RsBracketNo    = String.Join(",", rsBracketNo),
                RuleConnectors = String.Join(",", ruleConnectors)
            };

            const bool expected = false;
            var        actual   = statement.IsSatisfied(service);

            Assert.AreEqual(expected, actual);
        }
Example #7
0
        public void IsSatisfiedServiceNullTest()
        {
            var vehicle = new VehicleModelProxy
            {
                Plate   = "123-abc",
                TransSN = "2343678",
                OMBYear = 3000
            };
            var        target   = new RuleStatement();
            const bool expected = false;
            var        actual   = target.IsSatisfied(new RuleValidationService(vehicle));

            Assert.AreEqual(expected, actual);
        }
Example #8
0
        public void RuleStatementConstructorTest()
        {
            var vehicle = new VehicleModelProxy
            {
                Plate   = "123-abc",
                TransSN = "2343678",
                OMBYear = 3000
            };

            var service = new RuleValidationService(vehicle);
            var target  = new RuleStatement();

            Assert.IsTrue(target != null);
        }