示例#1
0
        public void Reduce_OrElseWithTrueAtEnd_RemovesRedundantTrue()
        {
            Expression <Func <BooleanReducerTest, bool> > expression1 = e => e.Property1 == DateTime.Now || true;
            Expression <Func <BooleanReducerTest, bool> > expression2 = e => true;

            var rewritten = new BooleanReducer().Reduce(expression1);

            expression2.ToString().Should().Be.EqualTo(rewritten.ToString());
        }
示例#2
0
        public void Reduce_OrElseWithLeftTrue_ReturnsTrue()
        {
            Expression <Func <BooleanReducerTest, bool> > expression1 = e => true || e.Property1 == DateTime.Now;
            Expression <Func <BooleanReducerTest, bool> > expression2 = e => true;

            var rewritten = new BooleanReducer().Reduce(expression1);

            expression2.ToString().Should().Be.EqualTo(rewritten.ToString());
        }
示例#3
0
        public void Reduce_ComplexAndAlsoWithIrreducableOrElseAtFront_ReturnsCorrectExpression()
        {
            Expression <Func <BooleanReducerTest, bool> > expression1 = e => (false || e.Property1 == DateTime.Now) && true && e.Property1 == DateTime.Now;
            Expression <Func <BooleanReducerTest, bool> > expression2 = e => e.Property1 == DateTime.Now && e.Property1 == DateTime.Now;

            var rewritten = new BooleanReducer().Reduce(expression1);

            expression2.ToString().Should().Be.EqualTo(rewritten.ToString());
        }
示例#4
0
        public void Reduce_BoolAtFrontAndEndWithFalseInMiddle_ReturnsFalse()
        {
            Expression <Func <BooleanReducerTest, bool> > expression1 = e => true && e.Property1 == DateTime.Now && false && true;
            Expression <Func <BooleanReducerTest, bool> > expression2 = e => false;

            var rewritten = new BooleanReducer().Reduce(expression1);

            expression2.ToString().Should().Be.EqualTo(rewritten.ToString());
        }
示例#5
0
        public void Reduce_MultipleOrElseTrueAtFront_ReturnsTrue()
        {
            Expression <Func <BooleanReducerTest, bool> > expression1 = e => true || false || false || true || true;
            Expression <Func <BooleanReducerTest, bool> > expression2 = e => true;

            var rewritten = new BooleanReducer().Reduce(expression1);

            expression2.ToString().Should().Be.EqualTo(rewritten.ToString());
        }
        public void Reduce_MultipleAndAlsoTrueAndNestedFalseAndAlso_ReturnsFalse()
        {
            Expression <Func <LdapUser, bool> > input    = e => true && true && (false && true);
            Expression <Func <LdapUser, bool> > expected = e => false;

            Expression rewritten = new BooleanReducer().Reduce(input);

            Assert.AreEqual(expected.ToString(), rewritten.ToString());
        }
        public void Reduce_MultipleOrElseFalseAtFront_ReturnsTrue()
        {
            Expression <Func <LdapUser, bool> > input    = e => false || false || false || false || true;
            Expression <Func <LdapUser, bool> > expected = e => true;

            Expression rewritten = new BooleanReducer().Reduce(input);

            Assert.AreEqual(expected.ToString(), rewritten.ToString());
        }
示例#8
0
        public void Reduce_MultipleAndAlsoTrueAndNestedAndAlso_ReturnsTrue()
        {
            Expression <Func <BooleanReducerTest, bool> > expression1 = e => true && true && (true && true);
            Expression <Func <BooleanReducerTest, bool> > expression2 = e => true;

            var rewritten = new BooleanReducer().Reduce(expression1);

            expression2.ToString().Should().Be.EqualTo(rewritten.ToString());
        }
        public void Reduce_OrElseWithTrueAtEnd_RemovesRedundantTrue()
        {
            Expression <Func <LdapUser, bool> > input    = e => e.CommonName == "gosho" || true;
            Expression <Func <LdapUser, bool> > expected = e => true;

            Expression rewritten = new BooleanReducer().Reduce(input);

            Assert.AreEqual(expected.ToString(), rewritten.ToString());
        }
        public void Reduce_Duplicate_True_RemovesDuplicates()
        {
            Expression <Func <bool, bool> > input    = e => true && true;
            Expression <Func <bool, bool> > expected = e => true;

            Expression rewritten = new BooleanReducer().Reduce(input);

            Assert.AreEqual(expected.ToString(), rewritten.ToString());
        }
        public void Reduce_OrElseWithLeftTrue_ReturnsTrue()
        {
            Expression <Func <LdapUser, bool> > input    = e => true || e.CommonName == "gosho";
            Expression <Func <LdapUser, bool> > expected = e => true;

            Expression rewritten = new BooleanReducer().Reduce(input);

            Assert.AreEqual(expected.ToString(), rewritten.ToString());
        }
示例#12
0
        public void Reduce_MultipleAndAlsoFalse_ReturnsFalse()
        {
            Expression <Func <BooleanReducerTest, bool> > expression1 = e => false && false && false && false;
            Expression <Func <BooleanReducerTest, bool> > expression2 = e => false;

            var rewritten = new BooleanReducer().Reduce(expression1);

            expression2.ToString().Should().Be.EqualTo(rewritten.ToString());
        }
        public void Reduce_BoolAtEnd_RemovesDuplicates()
        {
            Expression <Func <LdapUser, bool> > input = e => e.CommonName == "gosho" && true && true;

            Expression <Func <LdapUser, bool> > expected = e => e.CommonName == "gosho";

            Expression rewritten = new BooleanReducer().Reduce(input);

            Assert.AreEqual(expected.ToString(), rewritten.ToString());
        }
        public void Reduce_ComplexAndAlsoWithOrElseAtFront_ReturnsCorrectExpression()
        {
            Expression <Func <LdapUser, bool> > input = e =>
                                                        (true || e.CommonName == "gosho") && true && e.CommonName == "gosho";
            Expression <Func <LdapUser, bool> > expected = e => e.CommonName == "gosho";

            Expression rewritten = new BooleanReducer().Reduce(input);

            Assert.AreEqual(expected.ToString(), rewritten.ToString());
        }
        public void Reduce_BoolAtFrontAndEndWithFalseInMiddle_ReturnsFalse()
        {
            Expression <Func <LdapUser, bool> > input = e =>
                                                        true && e.CommonName == "gosho" && false && true;
            Expression <Func <LdapUser, bool> > expected = e => false;

            Expression rewritten = new BooleanReducer().Reduce(input);

            Assert.AreEqual(expected.ToString(), rewritten.ToString());
        }
示例#16
0
        public void Reduce_BoolAtEnd_RemovesDuplicates()
        {
            //prepare
            _queryContext.Query <BooleanReducerTest>().Where(e => e.Property1 == DateTime.Now && true && true).Select(e => new { Prop2 = e.Property3 ? "test" : "go" });
            var expression1 = _queryContext.ActiveProvider.CurrentExpression;

            _queryContext.Query <BooleanReducerTest>().Where(e => e.Property1 == DateTime.Now).Select(e => new { Prop2 = e.Property3 ? "test" : "go" });
            var expression2 = _queryContext.ActiveProvider.CurrentExpression;

            //act
            var rewritten = new BooleanReducer().Reduce(expression1);

            //assert
            expression2.ToString().Should().Be.EqualTo(rewritten.ToString());
        }
示例#17
0
        public void Reduce_Duplicate_True_RemovesDuplicates()
        {
            //prepare
            _queryContext.Query <BooleanReducerTest>().Where(e => true && true);
            var expression1 = _queryContext.ActiveProvider.CurrentExpression;

            _queryContext.Query <BooleanReducerTest>().Where(e => true);
            var expression2 = _queryContext.ActiveProvider.CurrentExpression;

            //act
            var rewritten = new BooleanReducer().Reduce(expression1);

            //assert
            expression2.ToString().Should().Be.EqualTo(rewritten.ToString());
        }