Esempio n. 1
0
        public static void Serializer_throws_JsonSerializationException_when_a_constructor_parameter_is_missing_in_json_and_that_parameter_is_a_property_on_the_child_type()
        {
            var catJson1 = "{\"numberOfLives\":9,\"name\":\"Cleo\"}";
            var catJson2 = "{\"numberOfLives\":9,\"age\":3}";

            var jsonSerializer = new NaosJsonSerializer(typeof(GenericDiscoveryJsonConfiguration <Animal>));

            var ex1 = Assert.Throws <JsonSerializationException>(() => jsonSerializer.Deserialize <Animal>(catJson1));
            var ex2 = Assert.Throws <JsonSerializationException>(() => jsonSerializer.Deserialize <Animal>(catJson2));

            ex1.Message.Should().StartWith("The json payload could not be deserialized into any of the candidate types.");
            ex2.Message.Should().StartWith("The json payload could not be deserialized into any of the candidate types.");
        }
Esempio n. 2
0
        public static void Serializer_deserialize_to_only_child_type_that_strictly_matches_json_when_json_can_deserialize_into_multiple_child_types()
        {
            var noLightingJson   = "{}";
            var incandescentJson = "{\"watts\":60}";

            var jsonSerializer = new NaosJsonSerializer(typeof(GenericDiscoveryJsonConfiguration <Lighting>));

            var noLighting   = jsonSerializer.Deserialize <Lighting>(noLightingJson) as NoLighting;
            var incandescent = jsonSerializer.Deserialize <Lighting>(incandescentJson) as Incandescent;

            noLighting.Should().NotBeNull();

            incandescent.Should().NotBeNull();
            incandescent.Watts.Should().Be(60);
        }
Esempio n. 3
0
        public static void Deserialize___Should_return_object_of_type_CalendarYearAccountingPeriodSystem___When_an_object_of_that_type_is_serialized_to_json_and_deserialized_as_AccountingPeriodSystem()
        {
            // Arrange
            var serializer = new NaosJsonSerializer();
            var originalAccountingPeriodSystem = new CalendarYearAccountingPeriodSystem();
            var serializedJsonBytes            = serializer.SerializeToBytes(originalAccountingPeriodSystem);
            var serializedJsonString           = serializer.SerializeToString(originalAccountingPeriodSystem);

            // Act
            var systemUnderTest1 = serializer.Deserialize <AccountingPeriodSystem>(serializedJsonBytes);
            var systemUnderTest2 = serializer.Deserialize <AccountingPeriodSystem>(serializedJsonString);

            // Assert
            systemUnderTest1.Should().BeOfType <CalendarYearAccountingPeriodSystem>();
            systemUnderTest2.Should().BeOfType <CalendarYearAccountingPeriodSystem>();
        }
        public static void ElementTypeOfArrayIsOnlyTypeDiscovered()
        {
            // Arrange
            var bsonConfig     = typeof(GenericDiscoveryBsonConfiguration <RegisteredKey, RegisteredValue>);
            var bsonSerializer = new NaosBsonSerializer(bsonConfig);

            var jsonConfig     = typeof(GenericDiscoveryJsonConfiguration <RegisteredKey, RegisteredValue>);
            var jsonSerializer = new NaosJsonSerializer(jsonConfig);

            var expectedKey = new RegisteredKey {
                Property = A.Dummy <string>()
            };
            var expectedValue = new RegisteredValue {
                Property = A.Dummy <string>()
            };

            var expectedTuple      = new Tuple <RegisteredKey, RegisteredValue>(expectedKey, expectedValue);
            var expectedDictionary = new Dictionary <RegisteredKey, RegisteredValue> {
                { expectedKey, expectedValue }
            };
            var expectedList  = new List <RegisteredKey>(new[] { expectedKey });
            var expectedArray = new[] { expectedValue };

            // Act
            // var tupleBsonString = bsonSerializer.SerializeToString(expectedTuple);
            // var tupleBson = bsonSerializer.Deserialize<Tuple<RegisteredKey, RegisteredValue>>(tupleBsonString);

            var tupleJsonString      = jsonSerializer.SerializeToString(expectedTuple);
            var tupleJson            = jsonSerializer.Deserialize <Tuple <RegisteredKey, RegisteredValue> >(tupleJsonString);
            var dictionaryJsonString = jsonSerializer.SerializeToString(expectedDictionary);
            var dictionaryJson       = jsonSerializer.Deserialize <Dictionary <RegisteredKey, RegisteredValue> >(dictionaryJsonString);
            var listJsonString       = jsonSerializer.SerializeToString(expectedList);
            var listJson             = jsonSerializer.Deserialize <List <RegisteredKey> >(listJsonString);
            var arrayJsonString      = jsonSerializer.SerializeToString(expectedArray);
            var arrayJson            = jsonSerializer.Deserialize <RegisteredValue[]>(arrayJsonString);

            // Assert

            // tupleBson.Should().BeEquivalentTo(expectedTuple);

            tupleJson.Item1.Property.Should().Be(expectedTuple.Item1.Property);
            tupleJson.Item2.Property.Should().Be(expectedTuple.Item2.Property);
            dictionaryJson.Single().Key.Property.Should().Be(expectedDictionary.Single().Key.Property);
            dictionaryJson.Single().Value.Property.Should().Be(expectedDictionary.Single().Value.Property);
            listJson.Single().Property.Should().Be(expectedList.Single().Property);
            arrayJson.Single().Property.Should().Be(expectedArray.Single().Property);
        }
Esempio n. 5
0
        public static void Deserialize___Should_return_equivalent_object_of_type_FiscalYearAccountingPeriodSystem___When_an_object_of_that_type_is_serialized_to_json_and_deserialized_as_AccountingPeriodSystem()
        {
            // Arrange
            var serializer = new NaosJsonSerializer();
            var expectedAccountingPeriodSystem = new FiscalYearAccountingPeriodSystem(A.Dummy <MonthOfYear>().ThatIsNot(MonthOfYear.December));
            var serializedJsonBytes            = serializer.SerializeToBytes(expectedAccountingPeriodSystem);
            var serializedJsonString           = serializer.SerializeToString(expectedAccountingPeriodSystem);

            // Act
            var systemUnderTest1 = serializer.Deserialize <AccountingPeriodSystem>(serializedJsonBytes) as FiscalYearAccountingPeriodSystem;
            var systemUnderTest2 = serializer.Deserialize <AccountingPeriodSystem>(serializedJsonString) as FiscalYearAccountingPeriodSystem;

            // Assert
            systemUnderTest1.Should().NotBeNull();
            systemUnderTest1.LastMonthInFiscalYear.Should().Be(expectedAccountingPeriodSystem.LastMonthInFiscalYear);

            systemUnderTest2.Should().NotBeNull();
            systemUnderTest2.LastMonthInFiscalYear.Should().Be(expectedAccountingPeriodSystem.LastMonthInFiscalYear);
        }
        public static void JsonCanSerializeNull()
        {
            // Arrange
            var serializer = new NaosJsonSerializer();

            // Act
            var actualNullString     = serializer.SerializeToString(null);
            var actualNullBytes      = serializer.SerializeToBytes(null);
            var actualString         = serializer.SerializeToString(SerializationConfigurationBase.NullSerializedStringValue);
            var actualNullFromString = serializer.Deserialize <NullableObject>(actualNullString);
            var actualNullFromBytes  = serializer.Deserialize <NullableObject>(actualNullBytes);
            var actual = serializer.Deserialize <string>(actualString);

            // Assert
            actualNullString.Should().Be(SerializationConfigurationBase.NullSerializedStringValue);
            actualNullFromString.Should().BeNull();
            actualNullFromBytes.Should().BeNull();
            actualString.Should().NotBe(SerializationConfigurationBase.NullSerializedStringValue);
            actual.Should().Be(SerializationConfigurationBase.NullSerializedStringValue);
        }
        public static void JsonSerializeStringToBytes()
        {
            // Arrange
            var jsonSerializer = new NaosJsonSerializer <GenericDiscoveryJsonConfiguration <string> >();
            var input          = A.Dummy <string>();

            // Act
            var actualJsonBytes     = jsonSerializer.SerializeToBytes(input);
            var actualJsonFromBytes = jsonSerializer.Deserialize <string>(actualJsonBytes);

            // Assert
            actualJsonFromBytes.Should().Be(input);
        }
Esempio n. 8
0
        public static void Deserialize___Should_return_equivalent_object_of_type_CalendarDay___When_an_object_of_that_type_is_serialized_to_json_and_deserialized_as_abstract_type()
        {
            // Arrange
            var serializer           = new NaosJsonSerializer();
            var expectedUnitOfTime   = A.Dummy <CalendarDay>();
            var serializedJsonBytes  = serializer.SerializeToBytes(expectedUnitOfTime);
            var serializedJsonString = serializer.SerializeToBytes(expectedUnitOfTime);

            // Act
            var systemUnderTest1a = serializer.Deserialize <UnitOfTime>(serializedJsonBytes) as CalendarDay;
            var systemUnderTest1b = serializer.Deserialize <CalendarUnitOfTime>(serializedJsonBytes) as CalendarDay;

            var systemUnderTest2a = serializer.Deserialize <UnitOfTime>(serializedJsonString) as CalendarDay;
            var systemUnderTest2b = serializer.Deserialize <CalendarUnitOfTime>(serializedJsonString) as CalendarDay;

            // Assert
            systemUnderTest1a.Should().Be(expectedUnitOfTime);
            systemUnderTest1b.Should().Be(expectedUnitOfTime);

            systemUnderTest2a.Should().Be(expectedUnitOfTime);
            systemUnderTest2b.Should().Be(expectedUnitOfTime);
        }
Esempio n. 9
0
        public static void RoundtripSerializeDeserialize___Using_local_negative_offset___Works()
        {
            // Arrange
            var expected   = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"));
            var serializer = new NaosJsonSerializer();

            // Act
            var serialized = serializer.SerializeToString(expected);
            var actual     = serializer.Deserialize <DateTime>(serialized);

            // Assert
            actual.Kind.Should().Be(expected.Kind);
            actual.Should().Be(expected);
        }
Esempio n. 10
0
        public static void RoundtripSerializeDeserialize___Using_unspecified___Works()
        {
            // Arrange
            var expected   = DateTime.UtcNow.ToUnspecified();
            var serializer = new NaosJsonSerializer();

            // Act
            var serialized = serializer.SerializeToString(expected);
            var actual     = serializer.Deserialize <DateTime>(serialized);

            // Assert
            actual.Kind.Should().Be(expected.Kind);
            actual.Should().Be(expected);
        }
Esempio n. 11
0
        public static void Deserialize___Null_type___Throws()
        {
            // Arrange
            var    serializer = new NaosJsonSerializer();
            Action action     = () => serializer.Deserialize(string.Empty, null);

            // Act
            var exception = Record.Exception(action);

            // Assert
            exception.Should().NotBeNull();
            exception.Should().BeOfType <ArgumentNullException>();
            exception.Message.Should().Be("Parameter 'type' is null.");
        }
Esempio n. 12
0
        public static void Deserialize___Should_return_equivalent_object_of_type_FiftyTwoFiftyThreeWeekAccountingPeriodSystem___When_an_object_of_that_type_is_serialized_to_json_and_deserialized_as_AccountingPeriodSystem()
        {
            // Arrange
            var serializer = new NaosJsonSerializer();
            var expectedAccountingPeriodSystem = A.Dummy <FiftyTwoFiftyThreeWeekAccountingPeriodSystem>();
            var serializedJsonBytes            = serializer.SerializeToBytes(expectedAccountingPeriodSystem);
            var serializedJsonString           = serializer.SerializeToString(expectedAccountingPeriodSystem);

            // Act
            var systemUnderTest1 = serializer.Deserialize <AccountingPeriodSystem>(serializedJsonBytes) as FiftyTwoFiftyThreeWeekAccountingPeriodSystem;
            var systemUnderTest2 = serializer.Deserialize <AccountingPeriodSystem>(serializedJsonString) as FiftyTwoFiftyThreeWeekAccountingPeriodSystem;

            // Assert
            systemUnderTest1.Should().NotBeNull();
            systemUnderTest1.AnchorMonth.Should().Be(expectedAccountingPeriodSystem.AnchorMonth);
            systemUnderTest1.FiftyTwoFiftyThreeWeekMethodology.Should().Be(expectedAccountingPeriodSystem.FiftyTwoFiftyThreeWeekMethodology);
            systemUnderTest1.LastDayOfWeekInAccountingYear.Should().Be(expectedAccountingPeriodSystem.LastDayOfWeekInAccountingYear);

            systemUnderTest2.Should().NotBeNull();
            systemUnderTest2.AnchorMonth.Should().Be(expectedAccountingPeriodSystem.AnchorMonth);
            systemUnderTest2.FiftyTwoFiftyThreeWeekMethodology.Should().Be(expectedAccountingPeriodSystem.FiftyTwoFiftyThreeWeekMethodology);
            systemUnderTest2.LastDayOfWeekInAccountingYear.Should().Be(expectedAccountingPeriodSystem.LastDayOfWeekInAccountingYear);
        }
Esempio n. 13
0
        public static void Serializer_deserialize_inherited_types_with_constructors()
        {
            var dogJson   = "{\"name\":\"Barney\",\"furColor\":\"brindle\",\"age\":10,\"dogTag\":\"my name is Barney\"}";
            var catJson   = "{\"numberOfLives\":9,\"name\":\"Cleo\",\"age\":3}";
            var tigerJson = "{\"tailLength\":2,\"name\":\"Ronny\",\"numberOfTeeth\":50,\"age\":5}";
            var mouseJson = "{\"tailLength\":8,\"name\":\"Missy\",\"furColor\":\"black\",\"age\":7}";

            var jsonSerializer = new NaosJsonSerializer(typeof(GenericDiscoveryJsonConfiguration <Animal>));

            var dog   = jsonSerializer.Deserialize <Animal>(dogJson) as Dog;
            var cat   = jsonSerializer.Deserialize <Animal>(catJson) as Cat;
            var tiger = jsonSerializer.Deserialize <Animal>(tigerJson) as Tiger;
            var mouse = jsonSerializer.Deserialize <Animal>(mouseJson) as Mouse;

            dog.Should().NotBeNull();
            dog.Name.Should().Be("Barney");
            dog.Age.Should().Be(10);
            dog.FurColor.Should().Be(FurColor.Brindle);
            dog.DogTag.Should().Be("my name is Barney");

            cat.Should().NotBeNull();
            cat.Name.Should().Be("Cleo");
            cat.Age.Should().Be(3);
            cat.NumberOfLives.Should().Be(9);

            tiger.Should().NotBeNull();
            tiger.Name.Should().Be("Ronny");
            tiger.Age.Should().Be(5);
            tiger.TailLength.Should().Be(2);
            tiger.NumberOfTeeth.Should().Be(50);

            mouse.Should().NotBeNull();
            mouse.Name.Should().Be("Missy");
            mouse.Age.Should().Be(7);
            mouse.TailLength.Should().Be(8);
            mouse.FurColor.Should().Be(FurColor.Black);
        }