Пример #1
0
        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));
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }