public virtual SqlExpression VisitCondition(SqlConditionExpression expression) { var test = expression.Test; if (test != null) { test = Visit(test); } var ifTrue = expression.IfTrue; if (ifTrue != null) { ifTrue = Visit(ifTrue); } var ifFalse = expression.IfFalse; if (ifFalse != null) { ifFalse = Visit(ifFalse); } return(SqlExpression.Condition(test, ifTrue, ifFalse)); }
public static void VisitCondition() { var exp = SqlExpression.Condition(SqlExpression.Constant(SqlObject.Boolean(true)), SqlExpression.Constant(SqlObject.BigInt(902)), SqlExpression.Constant(SqlObject.Integer(433))); Visit(exp); }
public static void GetConditionString(bool test, object ifTrue, object ifFalse, string expected) { var testExp = SqlExpression.Constant(SqlObject.Boolean(test)); var ifTrueExp = SqlExpression.Constant(SqlObject.New(SqlValueUtil.FromObject(ifTrue))); var ifFalseExp = SqlExpression.Constant(SqlObject.New(SqlValueUtil.FromObject(ifFalse))); var condition = SqlExpression.Condition(testExp, ifTrueExp, ifFalseExp); var sql = condition.ToString(); Assert.Equal(expected, sql); }
public static void SerializeCondition(bool test, object ifTrue, object ifFalse) { var testExp = SqlExpression.Constant(SqlObject.Boolean(test)); var ifTrueExp = SqlExpression.Constant(SqlObject.New(SqlValueUtil.FromObject(ifTrue))); var ifFalseExp = SqlExpression.Constant(SqlObject.New(SqlValueUtil.FromObject(ifFalse))); var condition = SqlExpression.Condition(testExp, ifTrueExp, ifFalseExp); var result = BinarySerializeUtil.Serialize(condition); Assert.NotNull(result.Test); Assert.NotNull(result.IfTrue); Assert.NotNull(result.IfFalse); }
public static async Task ReduceCondition(bool test, object ifTrue, object ifFalse, object expected) { var testExp = SqlExpression.Constant(SqlObject.Boolean(test)); var ifTrueExp = SqlExpression.Constant(SqlObject.New(SqlValueUtil.FromObject(ifTrue))); var ifFalseExp = SqlExpression.Constant(SqlObject.New(SqlValueUtil.FromObject(ifFalse))); var condition = SqlExpression.Condition(testExp, ifTrueExp, ifFalseExp); var result = await condition.ReduceAsync(null); Assert.IsType <SqlConstantExpression>(result); var expectedValue = SqlObject.New(SqlValueUtil.FromObject(expected)); Assert.Equal(expectedValue, ((SqlConstantExpression)result).Value); }