public static void Deserializing_constructors___When_properties_exist___Works()
        {
            // Arrange
            var serializationConfigurationType1 = typeof(IncludeVersionlessAssemblyQualifiedNamePropertyBagSerializationConfiguration <TypesToRegisterPropertyBagSerializationConfiguration <ConstructorWithProperties> >);
            var serializationConfigurationType2 = typeof(ExcludeVersionlessAssemblyQualifiedNamePropertyBagSerializationConfiguration <TypesToRegisterPropertyBagSerializationConfiguration <ConstructorWithProperties> >);

            var serializer1 = new ObcPropertyBagSerializer(serializationConfigurationType1.ToPropertyBagSerializationConfigurationType());
            var serializer2 = new ObcPropertyBagSerializer(serializationConfigurationType2.ToPropertyBagSerializationConfigurationType());

            var expected = new ConstructorWithProperties(A.Dummy <string>(), A.Dummy <int>(), A.Dummy <DateTime>());

            var serializedPropertyBag1a = serializer1.SerializeToNamedPropertyBagWithStringValues(expected);
            var serializedPropertyBag1b = serializer1.SerializeToNamedPropertyBagWithObjectValues(expected);
            var serializedPropertyBag1c = serializer1.SerializeToOrdinalPropertyBagWithStringValues(expected);
            var serializedPropertyBag1d = serializer1.SerializeToOrdinalPropertyBagWithObjectValues(expected);

            var serializedPropertyBag2a = serializer2.SerializeToNamedPropertyBagWithStringValues(expected);
            var serializedPropertyBag2b = serializer2.SerializeToNamedPropertyBagWithObjectValues(expected);
            var serializedPropertyBag2c = serializer2.SerializeToOrdinalPropertyBagWithStringValues(expected);
            var serializedPropertyBag2d = serializer2.SerializeToOrdinalPropertyBagWithObjectValues(expected);

            // Act
            void ThrowIfObjectsDiffer(DescribedSerializationBase describedSerialization, ConstructorWithProperties deserialized)
            {
                deserialized.Property1.AsTest().Must().BeEqualTo(expected.Property1);
                deserialized.Property2.AsTest().Must().BeEqualTo(expected.Property2);
                deserialized.Property3.AsTest().Must().BeEqualTo(expected.Property3);
            }

            // Act, Assert
            expected.RoundtripSerializeViaPropertyBagWithCallbackVerification(ThrowIfObjectsDiffer);

            var actualPropertyBag1a = serializer1.Deserialize <ConstructorWithProperties>(serializedPropertyBag1a);
            var actualPropertyBag1b = serializer1.Deserialize <ConstructorWithProperties>(serializedPropertyBag1b);
            var actualPropertyBag1c = serializer1.Deserialize <ConstructorWithProperties>(serializedPropertyBag1c);
            var actualPropertyBag1d = serializer1.Deserialize <ConstructorWithProperties>(serializedPropertyBag1d);

            var actualPropertyBag2a = serializer1.Deserialize <ConstructorWithProperties>(serializedPropertyBag2a);
            var actualPropertyBag2b = serializer1.Deserialize <ConstructorWithProperties>(serializedPropertyBag2b);
            var actualPropertyBag2c = serializer1.Deserialize <ConstructorWithProperties>(serializedPropertyBag2c);
            var actualPropertyBag2d = serializer1.Deserialize <ConstructorWithProperties>(serializedPropertyBag2d);

            ThrowIfObjectsDiffer(null, actualPropertyBag1a);
            ThrowIfObjectsDiffer(null, actualPropertyBag1b);
            ThrowIfObjectsDiffer(null, actualPropertyBag1c);
            ThrowIfObjectsDiffer(null, actualPropertyBag1d);

            ThrowIfObjectsDiffer(null, actualPropertyBag2a);
            ThrowIfObjectsDiffer(null, actualPropertyBag2b);
            ThrowIfObjectsDiffer(null, actualPropertyBag2c);
            ThrowIfObjectsDiffer(null, actualPropertyBag2d);
        }
示例#2
0
        public static void Deserializing_constructors___When_properties_exist___Works()
        {
            // Arrange
            var serializer = new NaosPropertyBagSerializer();
            var input      = new ConstructorWithProperties(A.Dummy <string>(), A.Dummy <string>(), A.Dummy <string>());

            // Act
            var serializedString = serializer.SerializeToString(input);
            var actual           = serializer.Deserialize <ConstructorWithProperties>(serializedString);

            // Act
            actual.PropertyGetOnly.Should().Be(input.PropertyGetOnly);
            actual.PropertyPrivateSet.Should().Be(input.PropertyPrivateSet);
            actual.PropertyPublicSet.Should().Be(input.PropertyPublicSet);
        }