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' } }
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); }