public void IgnoredPropertyAction_WhenSetIfPossible_ReadonlyPropertyNotSet()
        {
            serializer.Settings.IgnoredPropertyAction = IgnoredPropertyOption.SetIfPossible;
            string          result = @" { Count: 22 }";
            SpecializedMock mock   = serializer.Deserialize <SpecializedMock>(result);

            Assert.AreNotEqual(22, mock.Count, "Readonly property set");
        }
        public void MissingPropertyAction_WhenIgnore_MissingPropertyIsIgnored()
        {
            serializer.Settings.MissingPropertyAction = MissingPropertyOptions.Ignore;
            string          result = @" { Foo: 'Bar', Name: 'Special' }";
            SpecializedMock mock   = serializer.Deserialize <SpecializedMock>(result);

            Assert.AreEqual("Special", mock.Name);
        }
        public void IgnoredPropertyAction_WhenSetIfPossible_WriteablePropertyIsSet()
        {
            serializer.Settings.IgnoredPropertyAction = IgnoredPropertyOption.SetIfPossible;
            string          result = @" { IgnoredProp: 'NotIgnored' }";
            SpecializedMock mock   = serializer.Deserialize <SpecializedMock>(result);

            Assert.AreEqual("NotIgnored", mock.IgnoredProp, "IgnoredProp not set");
        }
        public void IgnoredPropertyAction_WhenIgnored_PropertyNotSet()
        {
            serializer.Settings.IgnoredPropertyAction = IgnoredPropertyOption.Ignore;
            string          result = @" { IgnoredProp: 'NotIgnored' }";
            SpecializedMock mock   = serializer.Deserialize <SpecializedMock>(result);

            Assert.AreNotEqual("NotIgnored", mock.IgnoredProp, "IgnoredProp not ignored");
        }
        public void NullValueTest()
        {
            SpecializedMock expected = new SpecializedMock();

            expected.Name = null;
            Serializer      s      = new Serializer();
            string          result = s.Serialize(expected);
            SpecializedMock actual = s.Deserialize <SpecializedMock>(result);

            Assert.IsNull(actual.Name, "Null value not serialized, deserialized correctly");
        }
        public void IgnoreAttributeTest()
        {
            SpecializedMock co = new SpecializedMock(33);

            co.Name        = "ThirtyThree";
            co.IgnoredProp = "IgnoreMe";
            Serializer      s      = new Serializer();
            string          result = s.Serialize(co);
            SpecializedMock actual = s.Deserialize <SpecializedMock>(result);

            Assert.AreNotEqual(co.IgnoredProp, actual.IgnoredProp, "Ignored property not ignored");
        }
        public void GetOnlyPropertyTest()
        {
            SpecializedMock co = new SpecializedMock(33);

            co.Name = "ThirtyThree";
            Serializer      s      = new Serializer();
            string          result = s.Serialize(co);
            SpecializedMock actual = s.Deserialize <SpecializedMock>(result);

            Assert.AreEqual(co.Name, actual.Name, "Name properties don't match");
            Assert.AreNotEqual(co.Count, actual.Count, "Read only property not deserialized correctly");
        }
        public void MissingPropertyAction_WhenThrowException_MissingPropertyThrowsException()
        {
            serializer.Settings.MissingPropertyAction = MissingPropertyOptions.ThrowException;
            string result    = @" { Foo: 'Bar' }";
            bool   exception = false;

            try
            {
                SpecializedMock mock = serializer.Deserialize <SpecializedMock>(result);
            }
            catch
            {
                exception = true;
            }

            Assert.IsTrue(exception, "Exception not thrown for missing property when MissingPropertyOptions.ThrowException set");
        }
        public void IgnoredPropertyAction_WhenThrowException_IgnoredPropertyThrowsException()
        {
            serializer.Settings.IgnoredPropertyAction = IgnoredPropertyOption.ThrowException;
            string result    = @" { IgnoredProp: 'NotIgnored' }";
            bool   exception = false;

            try
            {
                SpecializedMock mock = serializer.Deserialize <SpecializedMock>(result);
            }
            catch
            {
                exception = true;
            }

            Assert.IsTrue(exception, "Exception not thrown for ignored property when ThrowException set");
        }