public static void FailConvertToBoolean(byte[] data) { var type = PrimitiveTypes.Binary(); var binary = new SqlBinary(data); Assert.Throws <InvalidCastException>(() => type.CastTo(binary, PrimitiveTypes.Boolean())); }
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 void CastToBinary(bool value, byte expected) { var type = PrimitiveTypes.Boolean(); var boolean = new SqlBoolean(value); var casted = type.CastTo(boolean, PrimitiveTypes.Binary()); var expectedArray = new[] { expected }; Assert.IsInstanceOf <SqlBinary>(casted); Assert.AreEqual(expectedArray, ((SqlBinary)casted).ToByteArray()); }
public static void ConvertToBoolean(byte[] data, bool?expectedResult) { var type = PrimitiveTypes.Binary(); var binary = new SqlBinary(data); var result = type.CastTo(binary, PrimitiveTypes.Boolean()); Assert.IsNotNull(result); Assert.IsInstanceOf <SqlBoolean>(result); var boolean = (SqlBoolean)result; Assert.AreEqual(expectedResult, (bool?)boolean); }
public static SqlType Deserialize(BinaryReader reader, ITypeResolver resolver) { var typeCode = (SqlTypeCode)reader.ReadByte(); if (BooleanType.IsBooleanType(typeCode)) { return(PrimitiveTypes.Boolean(typeCode)); } if (IntervalType.IsIntervalType(typeCode)) { return(PrimitiveTypes.Interval(typeCode)); } if (DateType.IsDateType(typeCode)) { return(PrimitiveTypes.DateTime(typeCode)); } if (StringType.IsStringType(typeCode)) { var maxSize = reader.ReadInt32(); CultureInfo locale = null; var hasLocale = reader.ReadByte() == 1; if (hasLocale) { var name = reader.ReadString(); locale = new CultureInfo(name); } // TODO: Get the encoding from the serialization... return(PrimitiveTypes.String(typeCode, maxSize, Encoding.Unicode, locale)); } if (NumericType.IsNumericType(typeCode)) { var size = reader.ReadInt32(); var scale = reader.ReadInt32(); return(PrimitiveTypes.Numeric(typeCode, size, scale)); } if (BinaryType.IsBinaryType(typeCode)) { var size = reader.ReadInt32(); return(PrimitiveTypes.Binary(typeCode, size)); } if (typeCode == SqlTypeCode.Type) { // TODO: } if (typeCode == SqlTypeCode.QueryPlan) { return(new QueryType()); } if (typeCode == SqlTypeCode.Array) { var size = reader.ReadInt32(); return(new ArrayType(size)); } if (typeCode == SqlTypeCode.Null) { return(PrimitiveTypes.Null()); } throw new NotSupportedException(); }