public void ConvertEqualRuleDataAndCompile()
        {
            var ruleData = new RuleData
            {
                Field             = "Name",
                Value             = "Faenor",
                RuleOperator      = RuleOperator.Equal.ToString(),
                ValidationMessage = "Name should be equal to Faenor."
            };

            var engine         = new RuleEngine();
            var translatedRule = engine.Convert(ruleData);
            var compiledRule   = engine.CompileRules <Person>(translatedRule);

            Assert.IsNotNull(compiledRule.Rule);
            Assert.AreEqual(ruleData.Field, translatedRule.LeftNode);
            Assert.AreEqual(ruleData.Value, translatedRule.RightNode);
            Assert.AreEqual(ruleData.ValidationMessage, translatedRule.ValidationMessage);
            Assert.AreEqual("Name should be equal to Faenor.", compiledRule.ValidationMessage);
        }
        public void ExecuteEqualRuleOnFlatPropertyFailed()
        {
            const string message = "Name should be equal to Faenor.";
            var          rule    = new RuleFactory().Create(RuleOperator.Equal);

            rule.LeftNode          = "Name";
            rule.RightNode         = "Faenor";
            rule.ValidationMessage = message;

            var person = new Person {
                Name = "Finwe"
            };

            var engine       = new RuleEngine();
            var compiledRule = engine.CompileRules <Person>(rule);
            var result       = engine.Validate(person, compiledRule);

            Assert.AreEqual(false, result.Passed);
            Assert.AreNotEqual(0, result.ValidationMessageSummary.Length);
            Assert.AreEqual(message, result.ValidationMessageSummary);
        }
        public void ExecuteConvertNullObjectRuleData()
        {
            var ruleData = new RuleData
            {
                Field             = "Name",
                Value             = "Faenor",
                RuleOperator      = "",
                ValidationMessage = "Name should be equal to Faenor."
            };

            var person = new Person {
                Name = "Faenor"
            };

            var engine           = new RuleEngine();
            var translatedRule   = engine.Convert(ruleData);
            var compiledRule     = engine.CompileRules <Person>(translatedRule);
            var validationResult = engine.Validate(person, compiledRule);

            Assert.IsTrue(validationResult.Passed);
            Assert.AreEqual(string.Empty, validationResult.ValidationMessageSummary);
        }