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);
 }