Exemplo n.º 1
0
        public static void PrepareNamedParameters(string paramName1, object value1, string paramName2, object value2)
        {
            var input1 = SqlObject.New(SqlValueUtil.FromObject(value1));
            var input2 = SqlObject.New(SqlValueUtil.FromObject(value2));

            var query = new SqlCommand($"SELECT * FROM a WHERE a.col1 = {paramName1} AND a.col2 = {paramName2}", SqlParameterNaming.Named);

            query.Parameters.Add(new SqlParameter(paramName1, input1));
            query.Parameters.Add(new SqlParameter(paramName2, input2));

            var preparer = query.ExpressionPreparer;

            Assert.NotNull(preparer);

            var param1 = SqlExpression.Variable(paramName1);
            var param2 = SqlExpression.Variable(paramName2);

            Assert.True(preparer.CanPrepare(param1));
            Assert.True(preparer.CanPrepare(param2));

            var exp1 = preparer.Prepare(param1);
            var exp2 = preparer.Prepare(param2);

            Assert.NotNull(exp1);
            Assert.NotNull(exp2);

            Assert.IsType <SqlConstantExpression>(exp1);
            Assert.IsType <SqlConstantExpression>(exp2);

            Assert.Equal(input1, ((SqlConstantExpression)exp1).Value);
            Assert.Equal(input2, ((SqlConstantExpression)exp2).Value);
        }
Exemplo n.º 2
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);
        }
Exemplo n.º 3
0
        public static void PrepareMarkerParameters(object value1, object value2)
        {
            var input1 = SqlObject.New(SqlValueUtil.FromObject(value1));
            var input2 = SqlObject.New(SqlValueUtil.FromObject(value2));

            var query = new SqlCommand("SELECT * FROM a WHERE a.col1 = ? AND a.col2 = ?", SqlParameterNaming.Marker);

            query.Parameters.Add(new SqlParameter("?", input1));
            query.Parameters.Add(new SqlParameter("?", input2));

            var preparer = query.ExpressionPreparer;

            Assert.NotNull(preparer);

            var param1 = SqlExpression.Parameter();
            var param2 = SqlExpression.Parameter();

            Assert.True(preparer.CanPrepare(param1));
            Assert.True(preparer.CanPrepare(param2));

            var exp1 = preparer.Prepare(param1);
            var exp2 = preparer.Prepare(param2);

            Assert.NotNull(exp1);
            Assert.NotNull(exp2);

            Assert.IsType <SqlConstantExpression>(exp1);
            Assert.IsType <SqlConstantExpression>(exp2);

            Assert.Equal(input1, ((SqlConstantExpression)exp1).Value);
            Assert.Equal(input2, ((SqlConstantExpression)exp2).Value);
        }
Exemplo n.º 4
0
        private static SqlExpression NewExpression(object value)
        {
            var sqlValue = SqlValueUtil.FromObject(value);
            var obj      = SqlObject.New(sqlValue);

            return(SqlExpression.Constant(obj));
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        public static void Convert_GetTypeCode(object value, TypeCode expected)
        {
            var number   = (SqlNumber)SqlValueUtil.FromObject(value);
            var typeCode = Convert.GetTypeCode(number);

            Assert.Equal(expected, typeCode);
        }
Exemplo n.º 7
0
        public static void Compare(SqlTypeCode typeCode, object value1, object value2, int expected)
        {
            var type = PrimitiveTypes.Type(typeCode);
            var obj1 = new SqlObject(type, SqlValueUtil.FromObject(value1));
            var obj2 = new SqlObject(type, SqlValueUtil.FromObject(value2));

            var result = obj1.CompareTo(obj2);

            Assert.Equal(expected, result);
        }
        public static void Search(string source, string pattern, bool matches)
        {
            var s = SqlValueUtil.FromObject(source);

            Assert.IsType <SqlString>(s);

            var stringSearch = new SqlDefaultStringSearch();

            Assert.Equal(matches, stringSearch.Matches((SqlString)s, pattern, PatternSearch.EscapeCharacter));
        }
Exemplo n.º 9
0
        public static void Binary(Func <ISqlValue, ISqlValue, ISqlValue> op, object value1, object value2, object expected)
        {
            var x   = SqlValueUtil.FromObject(value1);
            var y   = SqlValueUtil.FromObject(value2);
            var exp = SqlValueUtil.FromObject(expected);

            var result = op(x, y);

            Assert.Equal(exp, result);
        }
Exemplo n.º 10
0
        public static void Binary(SqlType type, Func <SqlType, Func <ISqlValue, ISqlValue, SqlBoolean> > selector, object value1, object value2, bool expected)
        {
            var x = SqlValueUtil.FromObject(value1);
            var y = SqlValueUtil.FromObject(value2);

            var op     = selector(type);
            var result = op(x, y);

            Assert.Equal(expected, (bool)result);
        }
Exemplo n.º 11
0
        public static void Unary(SqlType type, Func <SqlType, Func <ISqlValue, ISqlValue> > selector, object value,
                                 object expected)
        {
            var x   = SqlValueUtil.FromObject(value);
            var exp = SqlValueUtil.FromObject(expected);

            var op     = selector(type);
            var result = op(x);

            Assert.Equal(exp, result);
        }
Exemplo n.º 12
0
        public void Compare(bool value1, object value2, int expected)
        {
            var a = (SqlBoolean)value1;
            var b = SqlValueUtil.FromObject(value2);

            Assert.True((a as ISqlValue).IsComparableTo(b));

            var result = a.CompareTo(b);

            Assert.Equal(expected, result);
        }
Exemplo n.º 13
0
        public static void Cast(SqlType srcType, object value, SqlType destType, object expected)
        {
            var x = SqlValueUtil.FromObject(value);

            Assert.True(srcType.CanCastTo(x, destType));

            var exp = SqlValueUtil.FromObject(expected);

            var result = srcType.Cast(x, destType);

            Assert.Equal(exp, result);
        }
Exemplo n.º 14
0
        private static void BinaryOp(Func <SqlNull, ISqlValue, bool> op, object other, bool expected)
        {
            var null1  = SqlNull.Value;
            var value1 = SqlValueUtil.FromObject(other);

            var result = op(null1, value1);

            var b = (SqlBoolean)result;
            var expectedNumber = (SqlBoolean)expected;

            Assert.Equal(expectedNumber, b);
        }
Exemplo n.º 15
0
        public static void Serialize(SqlTypeCode typeCode, int precision, int scale, object value)
        {
            var type     = PrimitiveTypes.Type(typeCode, new { precision, size = precision, maxSize = precision, scale });
            var sqlValue = SqlValueUtil.FromObject(value);

            var obj    = new SqlObject(type, sqlValue);
            var result = BinarySerializeUtil.Serialize(obj);

            Assert.Equal(obj, result);
            Assert.Equal(type, result.Type);
            Assert.Equal(sqlValue, result.Value);
        }
		public static void CastTo(SqlTypeCode srcTypeCode, bool value, SqlTypeCode destTypeCode, int p, int s, object expected) {
			var b = (SqlBoolean) value;
			var srcType = PrimitiveTypes.Boolean(srcTypeCode);
			var destType = PrimitiveTypes.Type(destTypeCode, new {precision = p, scale = s, maxSize = p});

			Assert.True(srcType.CanCastTo(b, destType));

			var result = srcType.Cast(b, destType);
			var expectedValue = SqlValueUtil.FromObject(expected);

			Assert.Equal(expectedValue, result);
		}
        public static void CastToString(string value, SqlTypeCode destTypeCode, int size, string expexted)
        {
            var dts = SqlDayToSecond.Parse(value);

            var type     = new SqlDayToSecondType();
            var destType = PrimitiveTypes.Type(destTypeCode, new { size });
            var result   = type.Cast(dts, destType);

            var exp = SqlValueUtil.FromObject(expexted);

            Assert.NotNull(result);
            Assert.Equal(exp, result);
        }
Exemplo n.º 18
0
        public static void EnumerateItems(params object[] values)
        {
            var array = new SqlArray(values.Select(NewExpression).ToArray());

            Assert.Equal(values.Length, array.Length);
            Assert.True(array.Length > 0);

            var expected = SqlObject.New(SqlValueUtil.FromObject(values[0]));
            var first    = array.First();

            Assert.IsType <SqlConstantExpression>(first);

            var itemValue = ((SqlConstantExpression)first).Value;

            Assert.Equal(expected, itemValue);
        }
Exemplo n.º 19
0
        public static void Create(params object[] values)
        {
            var array = new SqlArray(values.Select(NewExpression).ToArray());

            Assert.Equal(values.Length, array.Length);
            Assert.True(array.Length > 0);

            var expected = SqlObject.New(SqlValueUtil.FromObject(values[0]));
            var item     = array[0];

            Assert.IsType <SqlConstantExpression>(item);

            var itemValue = ((SqlConstantExpression)item).Value;

            Assert.Equal(expected, itemValue);
        }
Exemplo n.º 20
0
        private static SqlObject FromObject(object value)
        {
            if (value == null)
            {
                return(SqlObject.Null);
            }

            if (value is SqlTypeCode &&
                (SqlTypeCode)value == SqlTypeCode.Unknown)
            {
                return(SqlObject.Unknown);
            }

            var sqlValue = SqlValueUtil.FromObject(value);
            var sqlType  = SqlTypeUtil.FromValue(value);

            return(new SqlObject(sqlType, sqlValue));
        }
Exemplo n.º 21
0
        public static void CompareTo(object other, int expected)
        {
            var value = SqlValueUtil.FromObject(other);

            Assert.Equal(expected, (SqlNull.Value as IComparable <ISqlValue>).CompareTo(value));
        }
Exemplo n.º 22
0
        public static void IsComparableTo(object other, bool expected)
        {
            var value = SqlValueUtil.FromObject(other);

            Assert.Equal(expected, (SqlNull.Value as ISqlValue).IsComparableTo(value));
        }