示例#1
0
        public void Rewrite_NullableWithHasValueAndPropertyEquality_RewritesHasValue()
        {
            Expression <Func <LdapGroup, bool> > input = e => e.PhoneNumber.HasValue && e.PhoneNumber == 1234567890;
            // ReSharper disable once RedundantLogicalConditionalExpressionOperand
            Expression <Func <LdapGroup, bool> > expected = e => true && e.PhoneNumber == 1234567890;

            Expression rewritten = new BooleanRewriter().Visit(input);

            Assert.AreEqual(expected.ToString(), rewritten?.ToString());
        }
示例#2
0
        public void Rewrite_Conditional_RewritesCorrectly()
        {
            Expression <Func <LdapGroup, bool> > input = e =>
                                                         ("test".Equals("test")
                    ? e.DistinguishedName == "cn=fakegroup,dc=example,dc=com"
                    : e.PhoneNumber == 1234567890);
            Expression <Func <LdapGroup, bool> > expected = e => e.DistinguishedName == "cn=fakegroup,dc=example,dc=com";

            Expression rewritten = new BooleanRewriter().Visit(input);

            Assert.AreEqual(expected.ToString(), rewritten?.ToString());
        }
        public void Rewrite_NullableWithHasValueAndPropertyEquality_RewritesHasValue()
        {
            //prepare
            DateTime?now         = DateTime.Now;
            var      expression1 = _queryContext.Query <BooleanRewriterTest>().Where(e => now.HasValue && e.Property1 == now.Value).Expression;

            var expression2 = _queryContext.Query <BooleanRewriterTest>().Where(e => true && e.Property1 == now.Value).Expression;

            //act
            var rewritten = new BooleanRewriter().Rewrite(expression1);

            //assert
            expression2.ToString().Should().Be.EqualTo(rewritten.ToString());
        }
        public void Rewrite_HasValueAndMethodAndPropertyEquality_RewritesHasValueAndMethodToSingleTrue()
        {
            //prepare
            DateTime?now = DateTime.Now;

            _queryContext.Query <BooleanRewriterTest>().Where(e => now.HasValue && e.Property1 == now.Value && !"true".Equals("true"));
            var expression1 = _queryContext.ActiveProvider.CurrentExpression;

            _queryContext.Query <BooleanRewriterTest>().Where(e => true && e.Property1 == now.Value && false);
            var expression2 = _queryContext.ActiveProvider.CurrentExpression;

            var rewritten = new BooleanRewriter().Rewrite(expression1);

            expression2.ToString().Should().Be.EqualTo(rewritten.ToString());
        }
        public void Rewrite_NullableWithHasValueAndPropertyEqualityAndBoolCast_RewritesHasValue()
        {
            //prepare
            DateTime?now = DateTime.Now;

            _queryContext.Query <BooleanRewriterTest>().Where(e => (e.Property2 == "test") || (e.Property1 == now.Value && now.HasValue is bool && (bool)(now.HasValue as object) == true));
            var expression1 = _queryContext.ActiveProvider.CurrentExpression;

            _queryContext.Query <BooleanRewriterTest>().Where(e => e.Property2 == "test" || (e.Property1 == now.Value && true && true));
            var expression2 = _queryContext.ActiveProvider.CurrentExpression;

            //act
            var rewritten = new BooleanRewriter().Rewrite(expression1);

            //assert
            expression2.ToString().Should().Be.EqualTo(rewritten.ToString());
        }
        public void Rewrite_Conditional_RewritesCorrectly()
        {
            //prepare
            DateTime?now = DateTime.Now;

            _queryContext.Query <BooleanRewriterTest>().Where(e => "test".Equals("test") ? e.Property2 == "test" : e.Property1 == now.Value);
            var expression1 = _queryContext.ActiveProvider.CurrentExpression;

            _queryContext.Query <BooleanRewriterTest>().Where(e => e.Property2 == "test");
            var expression2 = _queryContext.ActiveProvider.CurrentExpression;

            //act
            var rewritten = new BooleanRewriter().Rewrite(expression1);

            //assert
            expression2.ToString().Should().Be.EqualTo(rewritten.ToString());
        }
        public void Rewrite_HasValueAndMethodWithParameterAndPropertyEquality_RewritesHasValueAndMethod()
        {
            //prepare
            DateTime?now  = DateTime.Now;
            var      list = new [] { "test" };

            _queryContext.Query <BooleanRewriterTest>().Where(e => list.Length > 0 && list.Contains(e.Property2) && now.HasValue && e.Property1 == now.Value);
            var expression1 = _queryContext.ActiveProvider.CurrentExpression;

            _queryContext.Query <BooleanRewriterTest>().Where(e => true && list.Contains(e.Property2) && true && e.Property1 == now.Value);
            var expression2 = _queryContext.ActiveProvider.CurrentExpression;

            //act
            var rewritten = new BooleanRewriter().Rewrite(expression1);

            //assert
            expression2.ToString().Should().Be.EqualTo(rewritten.ToString());
        }
        public void Rewrite_HasValueAndCollectionContainsWithOrCondition_RewritesHasValue()
        {
            //prepare
            DateTime?now  = DateTime.Now;
            var      list = new List <string> {
                "test"
            };

            _queryContext.Query <BooleanRewriterTest>().Where(e => (list.Contains(e.Property2) && !e.Property3 && e.Property1 == now.Value) || now.HasValue);
            var expression1 = _queryContext.ActiveProvider.CurrentExpression;

            _queryContext.Query <BooleanRewriterTest>().Where(e => (list.Contains(e.Property2) && !e.Property3 && e.Property1 == now.Value) || true);
            var expression2 = _queryContext.ActiveProvider.CurrentExpression;

            //act
            var rewritten = new BooleanRewriter().Rewrite(expression1);

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