public void ItParsesSeveralStringAdditionsIntoASingleConcat(Expression <Func <Person, Car, object> > testcase)
        {
            var tableRefs = new[]
            {
                (ITableReference)Types.TableReferenceFromType <Person>(),
                (ITableReference)Types.TableReferenceFromType <Car>(),
            };
            var ev = ExpressionVisitor.Visit(
                ExpressionVisitor.VisitableExpression.NewLinqExpression(testcase),
                tableRefs.ToContext());
            var expected =
                S.BinExp(
                    S.Func(AST.FunctionType.Concat, new[] { S.Col <Person>("Name"), S.Col <Car>("Brand"), S.Col <Person>("Name"), S.Col <Car>("Brand"), }),
                    BinaryOperation.Equal,
                    S.Const("'KalleSaab'")).ToOption();

            Assert.That(ev, Is.EqualTo(expected));
        }
        public void ItCanParseToLower()
        {
            Expression <Func <Person, object> > func = (Person p) => p.Name.ToLower() == "kalle";
            var tableRefs = new[]
            {
                Types.TableReferenceFromType <Person>(),
            };
            var ev = ExpressionVisitor.Visit(
                ExpressionVisitor.VisitableExpression.NewLinqExpression(func),
                tableRefs.ToContext());
            var expected =
                S.BinExp(
                    S.Func(AST.FunctionType.Lower, new[] { S.Col <Person>("Name") }),
                    BinaryOperation.Equal,
                    S.Const("'kalle'")).ToOption();

            Assert.That(ev, Is.EqualTo(expected));
        }
        public void ItParsesStringAdditionAsConcat()
        {
            Expression <Func <Person, Car, object> > func = (Person p, Car c) => (p.Name + c.Brand) == "KalleSaab";
            var tableRefs = new []
            {
                (ITableReference)Types.TableReferenceFromType <Person>(),
                (ITableReference)Types.TableReferenceFromType <Car>(),
            };
            var ev = ExpressionVisitor.Visit(
                ExpressionVisitor.VisitableExpression.NewLinqExpression(func),
                tableRefs.ToContext());
            var expected =
                S.BinExp(
                    S.Func(AST.FunctionType.Concat, new[] { S.Col <Person>("Name"), S.Col <Car>("Brand"), }),
                    BinaryOperation.Equal,
                    S.Const("'KalleSaab'")).ToOption();

            Assert.That(ev, Is.EqualTo(expected));
        }