public void DynamicBaseClassCollectionNotInTest() { DynamicBaseClass person = new DynamicBaseClass() { Name = "Person", ReferenceName = "person", Type = ObjectType.Object }; person.Fields.Add(new { Name = "Joe", Country = "Ireland", Age = 25 }); DynamicBaseClass collection = new DynamicBaseClass() { Name = "CollectionPerson", ReferenceName = "collectionperson", Type = ObjectType.Collection }; collection.Fields.Add(new { Name = "Joe", Country = "Ireland", Age = 20 }); collection.Fields.Add(new { Name = "Bert", Country = "USA", Age = 40 }); collection.Fields.Add(new { Name = "Carl", Country = "USA", Age = 50 }); collection.Fields.Add(new { Name = "Carol", Country = "Germany", Age = 60 }); ExpressionRuleLoader expressionRuleLoader = new ExpressionRuleLoader(); Rule rule1 = new Rule(" person[Age] notin collectionperson[Age] "); RuleValidator ruleValidator = new RuleValidator(); var result = ruleValidator.ValidateExpressionRulesAll( new DynamicBaseClass[] { person, collection }, new Rule[] { rule1 }); Assert.AreEqual(result, true); }
public void SimpleRuleLoaderPersonValidateExpressionRules() { Person person1 = new Person() { Name = "Mathias", Age = 35, Children = 2 }; Person person2 = new Person() { Name = "Anna", Age = 32, Children = 2 }; ExpressionRuleLoader expressionRuleLoader = new ExpressionRuleLoader(); // new Rule(" Name = 'mathias' "); Rule rule1 = expressionRuleLoader.Load(1); // new Rule(" Age = 35 "); Rule rule2 = expressionRuleLoader.Load(2); RuleValidator ruleValidator = new RuleValidator(); var result = ruleValidator.ValidateExpressionRules(new Person[] { person1, person2 }, new Rule[] { rule1, rule2 }); foreach (var item in result) { if (item.Item3) { Debug.WriteLine("Value: " + item.Item1.Name + " with ProcessingRule: " + item.Item2.ProcessingRule + item.Item2.Value + " passed."); } else { Debug.WriteLine("Value: " + item.Item1.Name + " with ProcessingRule: " + item.Item2.ProcessingRule + item.Item2.Value + " failed."); } } }
public void DynamicBaseClassSimpleTest() { DynamicBaseClass person = new DynamicBaseClass() { Name = "Person", ReferenceName = "person", Type = ObjectType.Object }; person.Fields.Add(new { Name = "Joe", Country = "Ireland", Age = 25 }); DynamicBaseClass collection = new DynamicBaseClass() { Name = "PersonCollection", ReferenceName = "personcollection", Type = ObjectType.Object }; collection.Fields.Add(new { Total = 100, AverageAge = 99, Min = 1, Max = 100 }); ExpressionRuleLoader expressionRuleLoader = new ExpressionRuleLoader(); Rule rule1 = new Rule( " (person[Name].lower = 'joe' && " + "person[Age] <= personcollection[AverageAge]) "); RuleValidator ruleValidator = new RuleValidator(); var result = ruleValidator.ValidateExpressionRulesAll( new DynamicBaseClass[] { person, collection }, new Rule[] { rule1 }); Assert.AreEqual(result, true); }
public void DynamicObjectFieldTest() { dynamic person1 = new { Name = "Mathias", Age = 35, Children = 2 }; ExpressionRuleLoader expressionRuleLoader = new ExpressionRuleLoader(); Rule rule1 = new Rule(" Field[Name] = 'Mathias' "); RuleValidator ruleValidator = new RuleValidator(); bool result = ruleValidator.ValidateExpressionRulesDynamic(person1, rule1); Assert.AreEqual(result, true); }
public void DynamicObjectCollectionAverageTest() { dynamic person1 = new { Name = "Mathias", Age = 35, Children = 2 }; dynamic person2 = new { Name = "Anna", Age = 32, Children = 2 }; dynamic pet1 = new { Name = "lucky", Age = 5, Type = "cat" }; dynamic pet2 = new { Name = "wuffy", Age = 5, Type = "dog" }; ExpressionRuleLoader expressionRuleLoader = new ExpressionRuleLoader(); Rule rule1 = new Rule(" Field[Age] > Collection[Age].Average "); RuleValidator ruleValidator = new RuleValidator(); var result = ruleValidator.ValidateExpressionRules(person1, new dynamic[] { person2, pet1, pet2 }, rule1); Assert.AreEqual(result, true); }
public void DynamicObjectCollectionInAndConstantTest() { dynamic person1 = new { Name = "Mathias", Age = 35, Children = 2 }; dynamic person2 = new { Name = "Mathias", Age = 32, Children = 2 }; dynamic pet1 = new { Name = "lucky", Age = 5, Type = "cat" }; dynamic pet2 = new { Name = "wuffy", Age = 5, Type = "dog" }; ExpressionRuleLoader expressionRuleLoader = new ExpressionRuleLoader(); Rule rule1 = new Rule(" Field[Age] > 40 && Field[Name] in Collection[Name] "); RuleValidator ruleValidator = new RuleValidator(); var result = ruleValidator.ValidateExpressionRules(person1, new dynamic[] { person2, pet1, pet2 }, rule1); Assert.AreEqual(result, false); }
public void DynamicObjectTest() { dynamic person1 = new { Name = "Mathias", Age = 35, Children = 2 }; dynamic person2 = new { Name = "Anna", Age = 32, Children = 2 }; dynamic pet1 = new { Name = "lucky", Age = 5, Type = "cat" }; dynamic pet2 = new { Name = "wuffy", Age = 5, Type = "dog" }; ExpressionRuleLoader expressionRuleLoader = new ExpressionRuleLoader(); Rule rule1 = expressionRuleLoader.Load(1); Rule rule2 = expressionRuleLoader.Load(2); RuleValidator ruleValidator = new RuleValidator(); var result = ruleValidator.ValidateExpressionRulesAll(new dynamic[] { person1, person2, pet1, pet2 }, new Rule[] { rule1, rule2 }); Assert.AreEqual(result, false); }
public void SimpleRuleLoaderPersonEvaluateExpression() { Person person1 = new Person() { Name = "Mathias", Age = 35, Children = 2 }; ExpressionRuleLoader expressionRuleLoader = new ExpressionRuleLoader(); // new Rule(" Name = 'mathias' "); Rule rule1 = expressionRuleLoader.Load(1); // new Rule(" Age = 35 "); Rule rule2 = expressionRuleLoader.Load(2); RuleValidator ruleValidator = new RuleValidator(); var result = ruleValidator.ValidateExpressionRules(person1, rule1); Assert.AreEqual(result, true); result = ruleValidator.ValidateExpressionRules(person1, rule2); Assert.AreEqual(result, true); }
public void SimpleRuleLoaderPersonEvaluateExpressionAll() { Person person1 = new Person() { Name = "Mathias", Age = 35, Children = 2 }; Person person2 = new Person() { Name = "Anna", Age = 32, Children = 2 }; ExpressionRuleLoader expressionRuleLoader = new ExpressionRuleLoader(); // new Rule(" Name = 'mathias' "); Rule rule1 = expressionRuleLoader.Load(1); // new Rule(" Age = 35 "); Rule rule2 = expressionRuleLoader.Load(2); RuleValidator ruleValidator = new RuleValidator(); var result = ruleValidator.ValidateExpressionRulesAll(new Person[] { person1, person2 }, new Rule[] { rule1, rule2 }); Assert.AreEqual(result, false); }
public void DynamicBaseClassFilterCountTest() { DynamicBaseClass collection = new DynamicBaseClass() { Name = "CollectionPerson", ReferenceName = "collectionperson", Type = ObjectType.Collection }; collection.Fields.Add(new { Name = "Joe", Country = "Ireland", Age = 25 }); collection.Fields.Add(new { Name = "Bert", Country = "USA", Age = 60 }); collection.Fields.Add(new { Name = "Carl", Country = "USA", Age = 30 }); collection.Fields.Add(new { Name = "Eric", Country = "Sweden", Age = 30 }); ExpressionRuleLoader expressionRuleLoader = new ExpressionRuleLoader(); Rule rule1 = new Rule(" collectionperson.Filter[Age > 30].Count >= 1 "); RuleValidator ruleValidator = new RuleValidator(); var result = ruleValidator.ValidateExpressionRulesAll( new DynamicBaseClass[] { collection }, new Rule[] { rule1 }); Assert.AreEqual(result, true); }
public void DynamicBaseClassComplexTest() { DynamicBaseClass person = new DynamicBaseClass() { Name = "Person", ReferenceName = "person", Type = ObjectType.Object }; person.Fields.Add(new { Name = "Joe", Country = "Ireland", Age = 25 }); DynamicBaseClass collection = new DynamicBaseClass() { Name = "CollectionPerson", ReferenceName = "collectionperson", Type = ObjectType.Object }; collection.Fields.Add(new { Total = 100, AverageAge = 99, Min = 1, Max = 100 }); DynamicBaseClass averagePerson = new DynamicBaseClass() { Name = "AveragePerson", ReferenceName = "averageperson", Type = ObjectType.Object }; averagePerson.Fields.Add(new { AverageAge = 30, StandardDeviation = 7 }); ExpressionRuleLoader expressionRuleLoader = new ExpressionRuleLoader(); Rule rule1 = new Rule( " (person[Name] = 'Joei' && " + "person[Age] <= averageperson[AverageAge]) " + "|| (person[Age] > collectionperson[Total]) " + "|| collectionperson[Total] = 100 "); RuleValidator ruleValidator = new RuleValidator(); var result = ruleValidator.ValidateExpressionRulesAll( new DynamicBaseClass[] { person, collection, averagePerson }, new Rule[] { rule1 }); Assert.AreEqual(result, true); }