public virtual Expression VisitSumExpression(SumExpression sumExpression) { Check.NotNull(sumExpression, nameof(sumExpression)); _sql.Append("SUM("); VisitExpression(sumExpression.Expression); _sql.Append(")"); return(sumExpression); }
private static Expression HandleSum(HandlerContext handlerContext) { if (!handlerContext.QueryModelVisitor.RequiresClientProjection) { var sumExpression = new SumExpression(handlerContext.SelectExpression.Projection.Single()); handlerContext.SelectExpression.SetProjectionExpression(sumExpression); return((Expression)_transformClientExpressionMethodInfo .MakeGenericMethod(sumExpression.Type) .Invoke(null, new object[] { handlerContext })); } return(handlerContext.EvalOnClient()); }
public void Sum_Times() { //Arrange var dollars = Money.Dollar(5); var francs = Money.Franc(10); var sut = new Bank(); sut.AddRate("CHF", "USD", 2); //Act var sum = new SumExpression(dollars, francs).Times(2); var result = sut.Reduce(sum, "USD"); result.Should().Be(Money.Dollar(20)); }
public void Sum_Plus() { //Arrange var dollars = Money.Dollar(5); var francs = Money.Franc(10); var sut = new Bank(); sut.AddRate("CHF", "USD", 2); //Act var sumPlus = new SumExpression(dollars, francs).Plus(dollars); var result = sut.Reduce(sumPlus, "USD"); //Assert result.Should().Be(Money.Dollar(15)); }
public void MathFunctionReturnsValueAndCalculatesTheSentenceWithUnknown3() { // 2 + atan(x) + x IExpression two = new Constant(2); string function = "ata(x)"; FunctionConverter f = new FunctionConverter(); IExpression value = new VariableX(); IExpression mathFun = new MathFunction(f.Translator(function), value); IExpression x = new VariableX(); IExpression result = new SumExpression(two, mathFun); result = new SumExpression(result, x); Context c = new Context(1); var y = result.Interpret(c); Assert.AreEqual(3.785, y, 4); }
public void MathFunctionReturnsValueAndCalculatesTheSentenceWithFunLog2() { // 2 + cos(-123) + x IExpression two = new Constant(2); string function = "cos(-123)"; FunctionConverter f = new FunctionConverter(); IExpression value = new Constant(f.getValue(function)); IExpression mathFun = new MathFunction(f.Translator(function), value); IExpression x = new VariableX(); IExpression result = new SumExpression(two, mathFun); result = new SumExpression(result, x); Context c = new Context(123); var y = result.Interpret(c); Assert.AreEqual(124.45, y, 2); }
public void Eval_When_Sum_OneVariableAndOneConstants5and3_MustReturn_8() { // Arrange var sut = new SumExpression(new AssignmentExpression( new VariableExpression("P"), new ConstantExpression(5)), new ConstantExpression(3)); var v = new Visitor.Visitor(); sut.Accept(v); // Act var actual = sut.Eval(); // Assert Assert.AreEqual(expected: 8, actual: actual); Assert.AreEqual("(P = 5) + 3", v.ToString()); }
public override Expression VisitSum(SumExpression sumExpression) { base.VisitSum(sumExpression); // In PostgreSQL SUM() doesn't return the same type as its argument for smallint, int and bigint. // Cast to get the same type. // http://www.postgresql.org/docs/current/static/functions-aggregate.html if (sumExpression.Type == typeof(short)) { Sql.Append("::INT2"); } else if (sumExpression.Type == typeof(int)) { Sql.Append("::INT4"); } else if (sumExpression.Type == typeof(long)) { Sql.Append("::INT8"); } return(sumExpression); }
public override Expression VisitSumExpression(SumExpression sumExpression) { base.VisitSumExpression(sumExpression); // In PostgreSQL SUM() doesn't return the same type as its argument for smallint, int and bigint. // Cast to get the same type. // http://www.postgresql.org/docs/current/static/functions-aggregate.html switch (Type.GetTypeCode(sumExpression.Expression.Type)) { case TypeCode.Int16: Sql.Append("::INT2"); break; case TypeCode.Int32: Sql.Append("::INT4"); break; case TypeCode.Int64: Sql.Append("::INT8"); break; } return(sumExpression); }
public void Resolve(SumExpression expression) { this.parent.Write(expression, this.name, this.writer, this.ticket); }
private string Sum(SumExpression exp) => $"SELECT SUM({Secondary.Serialize(exp.Selector.Body)}) FROM ({Serialize(exp.Sub)}) AS this";
public override Expression VisitSum(SumExpression sumExpression) { base.VisitSum(sumExpression); return(sumExpression); }
public void Resolve(SumExpression expression) { this.Result = false; }
public void Eval_When_Sum_TwoConstants2and3_MustReturn_5() { // Arrange var sut = new SumExpression(new ConstantExpression(2), new ConstantExpression(3)); // Act var actual = sut.Eval(); // Assert Assert.AreEqual(expected: 5, actual: actual); }