public void Should_Allow_Custom_Udt_Serializers() { var typeSerializer = new UdtSerializerWrapper(); var serializer = new Serializer(4, new ITypeSerializer[] { typeSerializer }); var buffer = serializer.Serialize(new object()); CollectionAssert.AreEqual(Encoding.UTF8.GetBytes("DUMMY UDT SERIALIZED"), buffer); CollectionAssert.AreEqual(buffer, (IEnumerable)serializer.Deserialize(buffer, ColumnTypeCode.Udt, new UdtColumnInfo("ks1.udt1"))); //Check that other serializers are still working CollectionAssert.AreEqual(new byte[] { 0, 0, 0, 10 }, serializer.Serialize(10)); CollectionAssert.AreEqual(new byte[] { 0x61, 0x62 }, serializer.Serialize("ab")); Assert.AreEqual(1, typeSerializer.DeserializationCounter); Assert.AreEqual(1, typeSerializer.SerializationCounter); }
public void Should_Allow_Custom_Cql_Type_Serializers() { var typeSerializer = new DummyCustomTypeSerializer(); var serializer = new Serializer(4, new ITypeSerializer[] { typeSerializer }); var value = new DummyCustomType(new byte[] { 1, 2 }); var buffer = serializer.Serialize(value); CollectionAssert.AreEqual(new byte[] { 1, 2 }, buffer); var deserializedValue = serializer.Deserialize(buffer, ColumnTypeCode.Custom, typeSerializer.TypeInfo); Assert.IsInstanceOf<DummyCustomType>(deserializedValue); var deserializedCustom = (DummyCustomType)deserializedValue; CollectionAssert.AreEqual(value.Buffer, deserializedCustom.Buffer); //Check that other serializers are still working CollectionAssert.AreEqual(new byte[] { 0, 0, 0, 10 }, serializer.Serialize(10)); CollectionAssert.AreEqual(new byte[] { 0x61 }, serializer.Serialize("a")); }
public void Should_Allow_Custom_Primitive_Serializers() { var serializer = new Serializer(4, new [] {new BigDecimalSerializer()}); var value = new BigDecimal(5, 1); var buffer = serializer.Serialize(value); CollectionAssert.AreEqual(new byte[] { 0, 0, 0, 5, 1 }, buffer); var deserializedValue = serializer.Deserialize(buffer, ColumnTypeCode.Decimal, null); Assert.IsInstanceOf<BigDecimal>(deserializedValue); var deserializedDecimal = (BigDecimal) deserializedValue; Assert.AreEqual("0.00001", deserializedDecimal.ToString()); Assert.AreEqual(value.Scale, deserializedDecimal.Scale); Assert.AreEqual(value.UnscaledValue, deserializedDecimal.UnscaledValue); //Check that other serializers are still working CollectionAssert.AreEqual(new byte[] { 0, 0, 0, 10 }, serializer.Serialize(10)); CollectionAssert.AreEqual(new byte[] { 0x61 }, serializer.Serialize("a")); }
public void PreparedStatement_Bind_SetsRoutingKey_Multiple() { const int protocolVersion = 2; var metadata = new RowSetMetadata(null) { Columns = new[] { new CqlColumn { Name = "id2" }, new CqlColumn { Name = "id1" } } }; var ps = GetPrepared("SELECT * FROM tbl1 WHERE id2 = ? and id1", metadata, protocolVersion); ps.SetPartitionKeys(new[] { new TableColumn() { Name = "id1" }, new TableColumn() { Name = "id2" } }); //The routing key is formed by the parameters at position 1 and 0 CollectionAssert.AreEqual(new[] { 1, 0 }, ps.RoutingIndexes); Assert.Null(ps.RoutingKey); var bound = ps.Bind(2001, 1001); Assert.NotNull(bound.RoutingKey); var serializer = new Serializer(protocolVersion); var expectedRoutingKey = new byte[0] .Concat(new byte[] {0, 4}) .Concat(serializer.Serialize(1001)) .Concat(new byte[] {0}) .Concat(new byte[] {0, 4}) .Concat(serializer.Serialize(2001)) .Concat(new byte[] {0}); CollectionAssert.AreEqual(expectedRoutingKey, bound.RoutingKey.RawRoutingKey); }