public static void CastToBinary(object value, SqlTypeCode typeCode, int size)
        {
            var type     = SqlTypeUtil.FromValue(value);
            var destType = PrimitiveTypes.Binary(typeCode, size);

            Assert.NotNull(type);
            Assert.IsType <SqlNumericType>(type);

            var number = (SqlNumber)SqlValueUtil.FromObject(value);

            Assert.True(type.CanCastTo(number, destType));
            var result = type.Cast(number, destType);

            Assert.IsAssignableFrom <ISqlBinary>(result);

            var binary = (ISqlBinary)result;

            var memStream = new MemoryStream();

            binary.GetInput().CopyTo(memStream);

            var bytes = memStream.ToArray();

            Assert.NotEmpty(bytes);

            var back = new SqlNumber(bytes);

            Assert.Equal(number, back);
        }
        public static void IsInstanceOf(SqlTypeCode typeCode, int?precision, byte?scale, object value, bool expected)
        {
            var type   = new SqlNumericType(typeCode, precision ?? -1, scale ?? -1);
            var number = SqlValueUtil.FromObject(value);

            Assert.Equal(expected, type.IsInstanceOf(number));
        }
        public static void SingleValueKeyEqual(object value1, object value2, bool expected)
        {
            var key1 = new IndexKey(SqlObject.New(SqlValueUtil.FromObject(value1)));
            var key2 = new IndexKey(SqlObject.New(SqlValueUtil.FromObject(value2)));

            Assert.Equal(expected, key1.Equals(key2));
        }
示例#4
0
        public static void SubtractNumber(string value1, object value2, string expected)
        {
            var a = SqlYearToMonth.Parse(value1);
            var b = SqlValueUtil.FromObject(value2);

            Binary(type => type.Subtract, a, b, expected);
        }
        public static void CompareSingleValue(object value1, object value2, int expetced)
        {
            var key1 = new IndexKey(SqlObject.New(SqlValueUtil.FromObject(value1)));
            var key2 = new IndexKey(SqlObject.New(SqlValueUtil.FromObject(value2)));

            Assert.Equal(expetced, key1.CompareTo(key2));
        }
        public static void ParseStringWithNamedParameter(string s, string funcName, string paramName, string paramType, object paramValue)
        {
            var exp = SqlExpression.Parse(s);

            Assert.NotNull(exp);
            Assert.Equal(SqlExpressionType.Function, exp.ExpressionType);
            Assert.IsType <SqlFunctionExpression>(exp);

            var function = (SqlFunctionExpression)exp;

            Assert.Equal(ObjectName.Parse(funcName), function.FunctionName);
            Assert.NotEmpty(function.Arguments);
            Assert.Equal(1, function.Arguments.Length);

            var param = function.Arguments[0];

            Assert.NotNull(param);
            Assert.True(param.IsNamed);
            Assert.Equal(paramName, param.ParameterName);
            Assert.IsType <SqlConstantExpression>(param.Value);

            var type  = SqlType.Parse(paramType);
            var value = new SqlObject(type, SqlValueUtil.FromObject(paramValue));

            Assert.Equal(value, ((SqlConstantExpression)param.Value).Value);
        }
        public static void ParseStringWithAnonParameter(string s, string funcName, string param1Type, object paramValue1, string param2Type, object paramValue2)
        {
            var exp = SqlExpression.Parse(s);

            Assert.NotNull(exp);
            Assert.Equal(SqlExpressionType.Function, exp.ExpressionType);
            Assert.IsType <SqlFunctionExpression>(exp);

            var function = (SqlFunctionExpression)exp;

            Assert.Equal(ObjectName.Parse(funcName), function.FunctionName);
            Assert.NotEmpty(function.Arguments);
            Assert.Equal(2, function.Arguments.Length);

            var param1 = function.Arguments[0];
            var param2 = function.Arguments[1];

            Assert.NotNull(param1);
            Assert.NotNull(param2);

            Assert.False(param1.IsNamed);
            Assert.False(param2.IsNamed);

            Assert.IsType <SqlConstantExpression>(param1.Value);
            Assert.IsType <SqlConstantExpression>(param2.Value);

            var pType1 = SqlType.Parse(param1Type);
            var pType2 = SqlType.Parse(param2Type);

            var value1 = new SqlObject(pType1, SqlValueUtil.FromObject(paramValue1));
            var value2 = new SqlObject(pType2, SqlValueUtil.FromObject(paramValue2));

            Assert.Equal(value1, ((SqlConstantExpression)param1.Value).Value);
            Assert.Equal(value2, ((SqlConstantExpression)param2.Value).Value);
        }
示例#8
0
        public static void CreateConstant(object value)
        {
            var obj = SqlObject.New(SqlValueUtil.FromObject(value));
            var exp = SqlExpression.Constant(obj);

            Assert.NotNull(exp.Value);
            Assert.Equal(obj, exp.Value);
        }
示例#9
0
        private static SqlBinaryExpression BinaryExpression(Func <SqlExpression, SqlExpression, SqlBinaryExpression> factory,
                                                            object value1, object value2)
        {
            var left  = SqlExpression.Constant(SqlObject.New(SqlValueUtil.FromObject(value1)));
            var right = SqlExpression.Constant(SqlObject.New(SqlValueUtil.FromObject(value2)));

            return(factory(left, right));
        }
        public static void CreateUnary(SqlExpressionType expressionType, object value)
        {
            var obj     = SqlObject.New(SqlValueUtil.FromObject(value));
            var operand = SqlExpression.Constant(obj);
            var exp     = SqlExpression.Unary(expressionType, operand);

            Assert.NotNull(exp.Operand);
            Assert.IsType <SqlConstantExpression>(exp.Operand);
        }
        public async Task SimpleSelect(string column, SqlExpressionType op, object value, long expectedRowCount)
        {
            var columnName = new ObjectName(left.TableInfo.TableName, column);
            var expression = SqlExpression.Constant(SqlObject.New(SqlValueUtil.FromObject(value)));
            var result     = await left.SimpleSelectAsync(null, columnName, op, expression);

            Assert.NotNull(result);
            Assert.Equal(expectedRowCount, result.RowCount);
        }
        public void CreateInvalidQuantify(SqlExpressionType expressionType, SqlExpressionType opType)
        {
            var left  = SqlExpression.Constant(SqlObject.New(SqlValueUtil.FromObject(212)));
            var right = SqlExpression.Constant(SqlObject.New(SqlValueUtil.FromObject(array)));

            var binary = SqlExpression.Binary(opType, left, right);

            Assert.Throws <ArgumentException>(() => SqlExpression.Quantify(expressionType, binary));
        }
示例#13
0
        public static void GetCastType(object value, SqlTypeCode destTypeCode, int p, int s)
        {
            var targetType = PrimitiveTypes.Type(destTypeCode, new { precision = p, scale = s, maxSize = p, size = p });
            var obj        = SqlObject.New(SqlValueUtil.FromObject(value));
            var exp        = SqlExpression.Constant(obj);

            var cast = SqlExpression.Cast(exp, targetType);

            Assert.Equal(targetType, cast.TargetType);
        }
示例#14
0
        public void GetVarAssingString(string name, object value, string expected)
        {
            var obj = SqlObject.New(SqlValueUtil.FromObject(value));
            var exp = SqlExpression.Constant(obj);

            var varRef = SqlExpression.VariableAssign(name, exp);
            var sql    = varRef.ToString();

            Assert.Equal(expected, sql);
        }
示例#15
0
        public static void SerializeStringMatch(SqlExpressionType expressionType, string value, string pattern)
        {
            var exp = SqlExpression.StringMatch(expressionType,
                                                SqlExpression.Constant(SqlObject.New(SqlValueUtil.FromObject(value))),
                                                SqlExpression.Constant(SqlObject.New(SqlValueUtil.FromObject(pattern))), null);

            var result = BinarySerializeUtil.Serialize(exp);

            Assert.Equal(exp.ExpressionType, result.ExpressionType);
        }
        public static void GetUnaryType(SqlExpressionType expressionType, object value)
        {
            var obj     = SqlObject.New(SqlValueUtil.FromObject(value));
            var operand = SqlExpression.Constant(obj);
            var exp     = SqlExpression.Unary(expressionType, operand);

            var sqlType = exp.Type;

            Assert.Equal(obj.Type, sqlType);
        }
        public static void GetUnaryString(SqlExpressionType expressionType, object value, string expected)
        {
            var obj     = SqlObject.New(SqlValueUtil.FromObject(value));
            var operand = SqlExpression.Constant(obj);
            var exp     = SqlExpression.Unary(expressionType, operand);

            var s = exp.ToString();

            Assert.Equal(expected, s);
        }
        public static void SerializeUnary(SqlExpressionType expressionType, object value)
        {
            var obj     = SqlObject.New(SqlValueUtil.FromObject(value));
            var operand = SqlExpression.Constant(obj);
            var exp     = SqlExpression.Unary(expressionType, operand);

            var result = BinarySerializeUtil.Serialize(exp);

            Assert.Equal(exp.ExpressionType, result.ExpressionType);
        }
示例#19
0
        private static SqlExpression FormDefaultValue(object value)
        {
            if (value == null)
            {
                return(null);
            }

            var obj = SqlObject.New(SqlValueUtil.FromObject(value));

            return(SqlExpression.Constant(obj));
        }
        public async Task NonCorrelatedSelect(string column, SqlExpressionType op, SqlExpressionType subOp, object value1, object value2, long expected)
        {
            var columnName = new ObjectName(left.TableInfo.TableName, column);
            var exp1       = SqlExpression.Constant(SqlObject.New(SqlValueUtil.FromObject(value1)));
            var exp2       = SqlExpression.Constant(SqlObject.New(SqlValueUtil.FromObject(value2)));
            var array      = SqlExpression.Constant(SqlObject.Array(new SqlArray(new[] { exp1, exp2 })));
            var result     = await left.SelectNonCorrelatedAsync(null, columnName, op, subOp, array);

            Assert.NotNull(result);
            Assert.Equal(expected, result.RowCount);
        }
        public static void GetReferenceAssignString(string name, object value, string expected)
        {
            var objName = ObjectName.Parse(name);
            var obj     = SqlObject.New(SqlValueUtil.FromObject(value));
            var exp     = SqlExpression.Constant(obj);

            var refAssign = SqlExpression.ReferenceAssign(objName, exp);
            var sql       = refAssign.ToString();

            Assert.Equal(expected, sql);
        }
示例#22
0
        public static void CreateStringMatch(SqlExpressionType expressionType, string value, string pattern)
        {
            var exp = SqlExpression.StringMatch(expressionType,
                                                SqlExpression.Constant(SqlObject.New(SqlValueUtil.FromObject(value))),
                                                SqlExpression.Constant(SqlObject.New(SqlValueUtil.FromObject(pattern))), null);

            Assert.NotNull(exp);
            Assert.Equal(expressionType, exp.ExpressionType);
            Assert.NotNull(exp.Left);
            Assert.NotNull(exp.Pattern);
        }
示例#23
0
        public static void MultiValueKeyEqualToNull(object value1, object value2)
        {
            var key1 = new IndexKey(new[] {
                SqlObject.New(SqlValueUtil.FromObject(value1)),
                SqlObject.New(SqlValueUtil.FromObject(value2))
            });
            var key2 = key1.NullKey;

            Assert.NotEqual(key1, key2);
            Assert.True(key2.IsNull);
        }
示例#24
0
        public static void GetStringMatchString(SqlExpressionType expressionType, string value, string pattern,
                                                string expected)
        {
            var exp = SqlExpression.StringMatch(expressionType,
                                                SqlExpression.Constant(SqlObject.New(SqlValueUtil.FromObject(value))),
                                                SqlExpression.Constant(SqlObject.New(SqlValueUtil.FromObject(pattern))), null);

            var sql = exp.ToString();

            Assert.Equal(expected, sql);
        }
示例#25
0
        public static void GetBinaryString(SqlExpressionType expressionType, object value1, object value2, string expected)
        {
            var obj1 = SqlObject.New(SqlValueUtil.FromObject(value1));
            var obj2 = SqlObject.New(SqlValueUtil.FromObject(value2));

            var exp = SqlExpression.Binary(expressionType, SqlExpression.Constant(obj1), SqlExpression.Constant(obj2));

            var s = exp.ToString();

            Assert.Equal(expected, s);
        }
示例#26
0
        public void CreateVarAssign(string name, object value)
        {
            var obj = SqlObject.New(SqlValueUtil.FromObject(value));
            var exp = SqlExpression.Constant(obj);

            var varRef = SqlExpression.VariableAssign(name, exp);

            Assert.NotNull(varRef.Value);
            Assert.Equal(exp, varRef.Value);
            Assert.Equal(name, varRef.VariableName);
        }
示例#27
0
        public static void SerializeBinary(SqlExpressionType type, object value1, object value2)
        {
            var binary = SqlExpression.Binary(type, SqlExpression.Constant(SqlObject.New(SqlValueUtil.FromObject(value1))),
                                              SqlExpression.Constant(SqlObject.New(SqlValueUtil.FromObject(value2))));

            var result = BinarySerializeUtil.Serialize(binary);

            Assert.Equal(binary.ExpressionType, result.ExpressionType);
            Assert.Equal(binary.Left.ExpressionType, result.Left.ExpressionType);
            Assert.Equal(binary.Right.ExpressionType, result.Right.ExpressionType);
        }
示例#28
0
        public static void CreateBinary(SqlExpressionType expressionType, object value1, object value2)
        {
            var obj1 = SqlObject.New(SqlValueUtil.FromObject(value1));
            var obj2 = SqlObject.New(SqlValueUtil.FromObject(value2));

            var exp = SqlExpression.Binary(expressionType, SqlExpression.Constant(obj1), SqlExpression.Constant(obj2));

            Assert.NotNull(exp);
            Assert.NotNull(exp.Left);
            Assert.NotNull(exp.Right);
        }
示例#29
0
        public static void SerializeCast(object value, SqlTypeCode destTypeCode, int p, int s)
        {
            var targetType = PrimitiveTypes.Type(destTypeCode, new { precision = p, scale = s, maxSize = p, size = p });
            var obj        = SqlObject.New(SqlValueUtil.FromObject(value));
            var exp        = SqlExpression.Constant(obj);

            var cast   = SqlExpression.Cast(exp, targetType);
            var result = BinarySerializeUtil.Serialize(cast);

            Assert.IsType <SqlConstantExpression>(result.Value);
        }
        public void CreateQuantify(SqlExpressionType expressionType, SqlExpressionType opType)
        {
            var left  = SqlExpression.Constant(SqlObject.New(SqlValueUtil.FromObject(212)));
            var right = SqlExpression.Constant(SqlObject.New(SqlValueUtil.FromObject(array)));

            var binary = SqlExpression.Binary(opType, left, right);
            var exp    = SqlExpression.Quantify(expressionType, binary);

            Assert.Equal(expressionType, exp.ExpressionType);
            Assert.Equal(opType, exp.Expression.ExpressionType);
        }