public void ShouldNotBePossibleEvaluateRuleWithEqualsConstraintAndMissingProperty()
        {
            var constraint = new EqualsConstraint("Name", "John");
            var result     = constraint.Evaluate(ObjectHelper.ToDictionary(new { }));

            Assert.False(result);
        }
        public void ShouldEvaluatePrimitiveDate()
        {
            var fakeData = new Dictionary <string, object>()
            {
                { "myProperty", new DateTime(2016, 12, 21) }
            };
            var sut = new EqualsConstraint("myProperty", new DateTime(2016, 12, 21));

            var result = sut.Evaluate(fakeData);

            Assert.True(result);
        }
        public void ShouldEvaluateDecimalValue()
        {
            var fakeData = new Dictionary <string, object>()
            {
                { "myProperty", -18.4m }
            };
            var sut = new EqualsConstraint("myProperty", -18.4m);

            var result = sut.Evaluate(fakeData);

            Assert.True(result);
        }
        public void ShouldEvaluatePrimitiveInteger()
        {
            var fakeData = new Dictionary <string, object>()
            {
                { "myProperty", 18 }
            };
            var sut = new EqualsConstraint("myProperty", 18);

            var result = sut.Evaluate(fakeData);

            Assert.True(result);
        }
        public void ShouldEvaluateByValueComplexTypeWithEqualsOverrided()
        {
            var fakeData = new Dictionary <string, object>()
            {
                { "myProperty", new Money(12.3m, Currency.DOLAR) }
            };

            var sut = new EqualsConstraint("myProperty", new Money(12.3m, Currency.REAL));

            Assert.False(sut.Evaluate(fakeData));

            sut = new EqualsConstraint("myProperty", new Money(12.3m, Currency.DOLAR));
            Assert.True(sut.Evaluate(fakeData));
        }
        public void ShouldEvaluateByReferenceComplexTypeWithoutEqualsOverrided()
        {
            var aComplexTypeWithNoEquals = new DummyClass(21);
            var fakeData = new Dictionary <string, object>()
            {
                { "myProperty", aComplexTypeWithNoEquals }
            };

            var sut = new EqualsConstraint("myProperty", new DummyClass(21));

            Assert.False(sut.Evaluate(fakeData));

            sut = new EqualsConstraint("myProperty", aComplexTypeWithNoEquals);
            Assert.True(sut.Evaluate(fakeData));
        }