예제 #1
0
        public static void RoundtripSerialize___Should_roundtrip_TestModelWithOptionalConstructorParameters_and_include_all_properties_in_payload___When_model_constructed_with_all_default_T_values_of_nullable_underlying_type()
        {
            // Arrange
            string   stringValue1       = null;
            string   stringValue2       = null;
            string   stringValue3       = null;
            var      intValue1          = 0;
            var      intValue2          = 0;
            var      nullableIntValue1  = 0;
            var      nullableIntValue2  = 0;
            var      nullableIntValue3  = 0;
            var      enumValue1         = TestEnum.First;
            var      enumValue2         = TestEnum.First;
            TestEnum?nullableEnumValue1 = TestEnum.First;
            TestEnum?nullableEnumValue2 = TestEnum.First;
            TestEnum?nullableEnumValue3 = TestEnum.First;
            Dictionary <string, string> dictionaryValue = null;

            var expected = new TestModelWithOptionalConstructorParameters(stringValue1, stringValue2, stringValue3, intValue1, intValue2, nullableIntValue1, nullableIntValue2, nullableIntValue3, enumValue1, enumValue2, nullableEnumValue1, nullableEnumValue2, nullableEnumValue3, dictionaryValue);

            void VerificationCallback(DescribedSerializationBase describedSerialization, TestModelWithOptionalConstructorParameters deserialized)
            {
                deserialized.AsTest().Must().BeEqualTo(expected);

                if (describedSerialization is StringDescribedSerialization stringDescribedSerialization)
                {
                    stringDescribedSerialization.SerializedPayload.AsTest().Must().BeEqualTo("{\r\n  \"stringValue1\": null,\r\n  \"stringValue2\": null,\r\n  \"stringValue3\": null,\r\n  \"intValue1\": 0,\r\n  \"intValue2\": 0,\r\n  \"nullableIntValue1\": 0,\r\n  \"nullableIntValue2\": 0,\r\n  \"nullableIntValue3\": 0,\r\n  \"enumValue1\": \"first\",\r\n  \"enumValue2\": \"first\",\r\n  \"nullableEnumValue1\": \"first\",\r\n  \"nullableEnumValue2\": \"first\",\r\n  \"nullableEnumValue3\": \"first\",\r\n  \"dictionaryValue\": null\r\n}");
                }
            }

            // Act, Assert
            expected.RoundtripSerializeViaJsonWithCallbackVerification(VerificationCallback, typeof(TypesToRegisterJsonSerializationConfiguration <TestModelWithOptionalConstructorParameters>));
        }
예제 #2
0
        public static void RoundtripSerialize___Should_roundtrip_TestModelWithOptionalConstructorParameters_and_include_all_properties_in_payload___When_model_constructed_with_all_non_default_values()
        {
            // Arrange
            var stringValue1       = "my-string-value-1";
            var stringValue2       = "my-string-value-2";
            var stringValue3       = "my-string-value-3";
            var intValue1          = -39;
            var intValue2          = 4;
            var nullableIntValue1  = 22;
            var nullableIntValue2  = 28;
            var nullableIntValue3  = 32;
            var enumValue1         = TestEnum.Second;
            var enumValue2         = TestEnum.Third;
            var nullableEnumValue1 = TestEnum.Second;
            var nullableEnumValue2 = TestEnum.Third;
            var nullableEnumValue3 = TestEnum.Fourth;
            var dictionaryValue    = new Dictionary <string, string>
            {
                { "abc", "def" },
                { "ghi", "jkl" },
            };

            var expected = new TestModelWithOptionalConstructorParameters(stringValue1, stringValue2, stringValue3, intValue1, intValue2, nullableIntValue1, nullableIntValue2, nullableIntValue3, enumValue1, enumValue2, nullableEnumValue1, nullableEnumValue2, nullableEnumValue3, dictionaryValue);

            void VerificationCallback(DescribedSerializationBase describedSerialization, TestModelWithOptionalConstructorParameters deserialized)
            {
                deserialized.AsTest().Must().BeEqualTo(expected);

                if (describedSerialization is StringDescribedSerialization stringDescribedSerialization)
                {
                    stringDescribedSerialization.SerializedPayload.AsTest().Must().BeEqualTo("{\r\n  \"stringValue1\": \"my-string-value-1\",\r\n  \"stringValue2\": \"my-string-value-2\",\r\n  \"stringValue3\": \"my-string-value-3\",\r\n  \"intValue1\": -39,\r\n  \"intValue2\": 4,\r\n  \"nullableIntValue1\": 22,\r\n  \"nullableIntValue2\": 28,\r\n  \"nullableIntValue3\": 32,\r\n  \"enumValue1\": \"second\",\r\n  \"enumValue2\": \"third\",\r\n  \"nullableEnumValue1\": \"second\",\r\n  \"nullableEnumValue2\": \"third\",\r\n  \"nullableEnumValue3\": \"fourth\",\r\n  \"dictionaryValue\": {\r\n    \"abc\": \"def\",\r\n    \"ghi\": \"jkl\"\r\n  }\r\n}");
                }
            }

            // Act, Assert
            expected.RoundtripSerializeViaJsonWithCallbackVerification(VerificationCallback, typeof(TypesToRegisterJsonSerializationConfiguration <TestModelWithOptionalConstructorParameters>));
        }