public void Serialize_NonSerializableType_Exception()
 {
     using (var subject = new DataContractJsonRoundtripSerializer<NonSerializable>())
     {
         Assert.That(() => subject.Serialize(new NonSerializable("s")), Throws.InstanceOf<InvalidDataContractException>());
     }
 }
 public void Deserialize_BeforeSerializing_Exception()
 {
     using (var subject = new DataContractJsonRoundtripSerializer<Serializable>())
     {
         Assert.That(() => subject.Deserialize(), Throws.InstanceOf<SerializationException>());
     }
 }
        public void Serialize_SerializableType_AStringRepresentationOfSerializedObject()
        {
            using (var subject = new DataContractJsonRoundtripSerializer<Serializable>())
            {
                string representation = subject.Serialize(new Serializable { S = "s", D = 3m });

                Assert.That(representation, Does.Contain("__BackingField")
                    .And.Contain(":3")
                    .And.Contain(":\"s\""));
            }
        }
        public void Deserialization_Canonical_LikeCanonicalJsonSerialization()
        {
            using (var serializer = new DataContractJsonRoundtripSerializer <Money>(dataContractSurrogate: new DataContractSurrogate()))
            {
                var    toSerialize = new Money(14.3m, CurrencyIsoCode.XTS);
                string canonical   = serializer.Serialize(toSerialize);

                _proxy.Serializer = new CanonicalMoneySerializer();

                Assert.That(BsonSerializer.Deserialize <Money>(canonical),
                            Is.EqualTo(toSerialize));
            }
        }
        public void Serialize_SerializableType_AStringRepresentationOfSerializedObject()
        {
            using (var subject = new DataContractJsonRoundtripSerializer <Serializable>())
            {
                string representation = subject.Serialize(new Serializable {
                    S = "s", D = 3m
                });

                Assert.That(representation, Does.Contain("S").And.Contain("D")
                            .And.Contain(":3")
                            .And.Contain(":\"s\""));
            }
        }
        public void Serialization_Canonical_LikeCanonicalJsonSerialization()
        {
            using (var serializer = new DataContractJsonRoundtripSerializer <Money>(dataContractSurrogate: new DataContractSurrogate()))
            {
                var    toSerialize = new Money(14.3m, CurrencyIsoCode.XTS);
                string canonical   = serializer.Serialize(toSerialize);

                _proxy.Serializer = new CanonicalMoneySerializer();

                string actual = toSerialize.ToJson().Replace(" ", string.Empty);
                Assert.That(actual, Is.EqualTo(canonical));
            }
        }
        public void Serialization_OutOfTheBox_NotLikeCanonicalJsonSerialization()
        {
            _proxy.Serializer = _proxy.Default;

            using (var serializer = new DataContractJsonRoundtripSerializer <Money>(dataContractSurrogate: new DataContractSurrogate()))
            {
                var toSerialize = new Money(14.3m, CurrencyIsoCode.XTS);

                string @default = toSerialize.ToJson();

                string canonical = serializer.Serialize(toSerialize);
                Assert.That(@default, Is.Not.EqualTo(canonical));
            }
        }
Exemple #8
0
        public void CustomCanonicalConverter_WithCamelCasing_LikeCanonicalJsonSerialization()
        {
            using (var serializer = new DataContractJsonRoundtripSerializer <Money>(dataContractSurrogate: new DataContractSurrogate()))
            {
                var    toSerialize = new Money(14.3m, CurrencyIsoCode.XTS);
                string canonical   = serializer.Serialize(toSerialize);

                using (new ConfigScope(CanonicalMoneySerializer.Serialize, JsConfig.With(emitCamelCaseNames: true)))
                {
                    string actual = JsonSerializer.SerializeToString(toSerialize);
                    Assert.That(actual, Is.EqualTo(canonical));
                }
            }
        }
        public void Deserialize_AfterSerializingSerializableType_InitialObject()
        {
            using (var subject = new DataContractJsonRoundtripSerializer<Serializable>())
            {
                var serialized = new Serializable { S = "s", D = 3m };
                subject.Serialize(serialized);

                Serializable deserialized = subject.Deserialize();

                Assert.That(deserialized, Is.Not.SameAs(serialized)
                    .And.Property("S").EqualTo("s")
                    .And.Property("D").EqualTo(3m));
            }
        }
Exemple #10
0
        public void CustomCanonicalConverter_WithCamelCaseContract_LikeCanonicalJsonSerialization()
        {
            using (var serializer = new DataContractJsonRoundtripSerializer <Money>(dataContractSurrogate: new DataContractSurrogate()))
            {
                var    toSerialize = new Money(14.3m, CurrencyIsoCode.XTS);
                string canonical   = serializer.Serialize(toSerialize);

                var settings = new JsonSerializerSettings
                {
                    ContractResolver = new CamelCasePropertyNamesContractResolver(),
                    Converters       = new[] { new CanonicalMoneyConverter() }
                };
                Assert.That(JsonConvert.DeserializeObject <Money>(canonical, settings),
                            Is.EqualTo(toSerialize));
            }
        }
        public void Deserialize_AfterSerializingSerializableType_InitialObject()
        {
            using (var subject = new DataContractJsonRoundtripSerializer <Serializable>())
            {
                var serialized = new Serializable {
                    S = "s", D = 3m
                };
                subject.Serialize(serialized);

                Serializable deserialized = subject.Deserialize();

                Assert.That(deserialized, Is.Not.SameAs(serialized)
                            .And.Property("S").EqualTo("s")
                            .And.Property("D").EqualTo(3m));
            }
        }
        public void Serialization_Canonical_SortOfLikeCanonicalJsonSerialization()
        {
            using (var serializer = new DataContractJsonRoundtripSerializer <Money>(dataContractSurrogate: new DataContractSurrogate()))
            {
                var    toSerialize = new Money(14.3m, CurrencyIsoCode.XTS);
                string canonical   = serializer.Serialize(toSerialize);

                _proxy.Serializer = new CanonicalMoneySerializer();

                string actual = toSerialize.ToJson()
                                // spacing
                                .Replace(" ", string.Empty)
                                // non-numerical figure representation
                                .Replace("NumberDecimal(\"", string.Empty)
                                .Replace("\")", string.Empty);

                Assert.That(actual, Is.EqualTo(canonical));
            }
        }