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)); }