示例#1
0
        static void Main(string[] args)
        {
            // ----------------- SETUP -----------------------------------------
            // create Easy-Rules...
            var rule = "if (sky) is (blue) then (planet) must be (Earth)";

            // create configs...
            var config1 = "{ 'planet': 'Earth', 'sky': 'blue' }";
            var config2 = "{ 'planet': 'Mars',  'sky': 'blue' }";

            // ----------------- EXECUTION ------------------------------------
            // Check configs against rule, return bad configs...
            var failingConfigs = JsonEasyRuleEvaluator.ReturnFailingWorlds(new[] { config1, config2 }, rule);


            // ----------------- REPORTING -------------------------------------
            // Output any bad configs...
            Console.WriteLine("The following configs contain errors:");
            foreach (var config in failingConfigs)
            {
                Console.WriteLine(config);
            }
            Console.ReadLine();


            // ----------------- OUTPUT ----------------------------------------
            // The following configs contain errors:
            // { 'planet': 'Mars',  'sky': 'blue' }
        }
示例#2
0
        static void Main(string[] args)
        {
            // ----------------- SETUP -----------------------------------------
            // Create some configs...
            var config1 = "{ 'planet': 'Earth',  'sky': 'blue', 'air': 'breathable' }";
            var config2 = "{ 'planet': 'Mars',   'sky': 'red', 'air': 'toxic' }";
            var config3 = "{ 'planet': 'Mercury','sky': 'red', 'air': 'toxic' }";
            var config4 = "{ 'planet': 'Mars',   'sky': 'orange', 'air': 'toxic' }";
            var config5 = "{ 'planet': 'Jupiter','sky': 'orange', 'air': 'toxic' }";


            // ----------------- EXECUTION -------------------------------------
            // Infer some rules...
            var newRules = JsonEasyRuleEvaluator.ReturnInferredEasyRules(new[] { config1, config2, config3, config4, config5 });


            // ----------------- REPORTING -------------------------------------
            // Output inferred rules...
            Console.WriteLine("The following rules were generated:");
            foreach (var rule in newRules)
            {
                Console.WriteLine(rule);
            }
            Console.ReadLine();


            // ----------------- OUTPUT ----------------------------------------
            // The following rules were generated:
            // IF (planet) IS (Mars) THEN (air) IS (toxic)
            // IF (sky) IS (red) THEN (air) IS (toxic)
            // IF (sky) IS (orange) THEN (air) IS (toxic)
        }
        public void IsTrueIn_GivenJsonObjectsAndEasyRule_ValidReturn(string easyRule, bool expectedResult = true)
        {
            // Arrange...
            var jsonWorld = @"{
              'Stores': [
                'Lambton Quay',
                'Willis Street'
              ],
              'Prices': [
                10,
                10
              ],
              'MaxPrice': 10,
              'Buyers': [
                'John',
                'Sam'
              ],
              'Seller': 'John',
              'Owners': [
                'Sam',
                'Steve'
              ],
              'Manufacturers': [
                {
                  'Name': 'Acme Co',
                  'Products': [
                    {
                      'Name': 'Anvil',
                      'Price': 50
                    }
                  ]
                },
                {
                  'Name': 'Contoso',
                  'Products': [
                    {
                      'Name': 'Elbow Grease',
                      'Price': 99.95
                    },
                    {
                      'Name': 'Headlight Fluid',
                      'Price': 4
                    }
                  ]
                }
              ]
            }";

            var sut = JsonEasyRuleEvaluator.CreateEvaluator();
            // Act...
            var result = sut.IsTrueIn(easyRule, jsonWorld);

            // Assert...
            Assert.AreEqual(expectedResult, result);
        }
        public void JsonWorldsToRules_SubmitJsonObjects_ExpectInferredRules()
        {
            // Arrange...
            var jsonWorlds = new List <string>();

            jsonWorlds.Add("{'Name':'Bob', 'Age':'40', 'Year': '2040'}");
            jsonWorlds.Add("{'Name':'Bob', 'Age':'30', 'Year': '2030'}");
            jsonWorlds.Add("{'Name':'Sam', 'Age':'30', 'Year': '2030'}");
            jsonWorlds.Add("{'Name':'Tom', 'Age':'30', 'Year': '2010'}");
            var expectedRules = new List <string>();

            expectedRules.Add("IF (Year) IS (2030) THEN (Age) IS (30)");

            var sut = JsonEasyRuleEvaluator.CreateEvaluator();
            // Act...
            var result = sut.InferEasyRules(jsonWorlds);

            // Assert...
            Assert.AreEqual(expectedRules, result);
        }