public IEnumerable <string> GetFailingRules(string jsonObject, IEnumerable <string> easyRules) { var dymeRules = easyRules.Select(r => _easyRuleDymeRuleSvc.ConvertEasyRuleToDymeRule(r)).ToList(); var failingDymeRules = dymeRules.Where(r => !_ruleEvaluatorSvc.IsTrueIn(r, jsonObject)).ToList(); var failingEasyRules = failingDymeRules.Select(r => _easyRuleDymeRuleSvc.ConvertDymeRuleToEasyRule(r)).ToList(); return(failingEasyRules); }
public void ConjunctionEquals_Given2EqualConjunctionsCreatedByDifferentMeans_ExpectEqual() { // Arrange... var parser = new EasyRuleDymeRuleConverter(); var compareItem1 = parser.ConvertEasyRuleToDymeRule("(sky) IS (blue) AND (weather) IS (sunny)"); var compareItem2 = All.Of(ItsAFact.That("sky").Is("blue")).And(ItsAFact.That("weather").Is("sunny")).IsTrue(); // Assert... Assert.AreEqual(compareItem1, compareItem2); }
public void ImplicationEquals_Given2EqualImplicationsCreatedByDifferentMeans_ExpectEqual() { // Arrange... var parser = new EasyRuleDymeRuleConverter(); var compareItem1 = parser.ConvertEasyRuleToDymeRule("IF (sky) IS (blue) THEN (weather) IS (sunny)"); var compareItem2 = If.When(ItsAFact.That("sky").Is("blue")).Then(ItsAFact.That("weather").Is("sunny")); // Assert... Assert.AreEqual(compareItem1, compareItem2); }
public void EasyRuleDymeParser_GivenEasyRules_ExpectDymeRules() { // Arrange... var sut = new EasyRuleDymeRuleConverter(); var inputEasyRule = "IF (Age) IS (18) THEN (Movie) IS (Visible)"; var expectDymeRule = If.When(ItsAFact.That("Age").Is("18")).Then(ItsAFact.That("Movie").Is("Visible")); // Act... var result = sut.ConvertEasyRuleToDymeRule(inputEasyRule); Assert.AreEqual(expectDymeRule, result); }
public void ImplicationEquals_GivenEqualImplicationsListDistinctified_Expect1Item() { // Arrange... var parser = new EasyRuleDymeRuleConverter(); var compareItemList = new List <IEvaluatable>(); compareItemList.Add(parser.ConvertEasyRuleToDymeRule("IF (sky) IS (blue) THEN (weather) IS (sunny)")); compareItemList.Add(If.When(ItsAFact.That("sky").Is("blue")).Then(ItsAFact.That("weather").Is("sunny"))); // Act... compareItemList = compareItemList.Distinct().ToList(); // Assert... Assert.AreEqual(1, compareItemList.Count()); }
public void ValidateRulesAgainstWorld_GivenRuleAndworld_ExpectPass(string inputRule, string inputWorld, bool inputResult) { // Arrange ... var parser = new EasyRuleDymeRuleConverter(); var stateOfTheWorld = GetWorldFromFlatWorld(inputWorld); var evaluatableRule = parser.ConvertEasyRuleToDymeRule(inputRule); bool expectedResult = inputResult; // Act ... var result = sut.IsTrueIn(evaluatableRule, stateOfTheWorld); // Assert ... Assert.AreEqual(expectedResult, result); }
public void ValidateRulesAgainstWorld_GivenComplexRule2AndWorld_ExpectPass(string inputWorld, bool inputResult) { // Arrange ... var inputRule = @"IF ((weather) IS (sunny) AND (wind) IS (mild)) OR ((sky) IS (blue)) THEN (destination) IS (beach)"; var parser = new EasyRuleDymeRuleConverter(); var stateOfTheWorld = GetWorldFromFlatWorld(inputWorld); var evaluatableRule = parser.ConvertEasyRuleToDymeRule(inputRule); bool expectedResult = inputResult; // Act ... var result = sut.IsTrueIn(evaluatableRule, stateOfTheWorld); // Assert ... Assert.AreEqual(expectedResult, result); }
public void ValidateRulesAgainstWorld_GivenRuleAndworld_ExpectPass() { // Arrange ... var parser = new EasyRuleDymeRuleConverter(); var stateOfTheWorld = new Dictionary <string, string>(); stateOfTheWorld.Add("weather", "sunny"); stateOfTheWorld.Add("destination", "beach"); var inputRule = "IF (weather) IS (sunny) THEN (destination) IS (beach)"; var evaluatableRule = parser.ConvertEasyRuleToDymeRule(inputRule); // Act ... var result = sut.IsTrueIn(evaluatableRule, stateOfTheWorld); // Assert ... Assert.AreEqual(true, result); }
public void ConjunctionEquals_Given2EqualConjunctionsWith3ArgumentsCreatedByDifferentMeans_ExpectSimilarHashes() { // Arrange... var parser = new EasyRuleDymeRuleConverter(); var compareItem1 = parser.ConvertEasyRuleToDymeRule("(sky) IS (blue) AND (weather) IS (sunny) AND (water) IS (warm)"); var compareItem2 = All.Of( ItsAFact.That("sky").Is("blue")) .And(ItsAFact.That("weather").Is("sunny")) .And(ItsAFact.That("water").Is("warm")) .IsTrue(); // Act... var result1 = compareItem1.GetHashCode(); var result2 = compareItem2.GetHashCode(); // Assert... Assert.AreEqual(result1, result2); }
public void MtricSvc_GivenRuleAndworld_ExpectPass() { // Arrange ... var parser = new EasyRuleDymeRuleConverter(); var stateOfTheWorld = new Dictionary <string, string>(); stateOfTheWorld.Add("weather", "sunny"); stateOfTheWorld.Add("destination", "beach"); var inputRule = "IF (weather) IS (sunny) THEN (destination) IS (beach)"; var evaluatableRule = parser.ConvertEasyRuleToDymeRule(inputRule); var expectedResult = new Dictionary <string, int>(); expectedResult.Add("EvaluateImplication", 1); expectedResult.Add("EvaluateProposition", 2); expectedResult.Add("GetValueFromWorld", 2); // Act ... sut.IsTrueIn(evaluatableRule, stateOfTheWorld); var result = (metricSvc as DefaultMetricService).metrics; // Assert ... CollectionAssert.AreEquivalent(expectedResult, result); }