diff --git a/Src/Newtonsoft.Json.Tests/Converters/XmlNodeConverterTest.cs b/Src/Newtonsoft.Json.Tests/Converters/XmlNodeConverterTest.cs index c0a529ec..0c9b3dfb 100644 --- a/Src/Newtonsoft.Json.Tests/Converters/XmlNodeConverterTest.cs +++ b/Src/Newtonsoft.Json.Tests/Converters/XmlNodeConverterTest.cs @@ -916,6 +916,16 @@ namespace Newtonsoft.Json.Tests.Converters Assert.AreEqual(doc.InnerXml, deserializedDoc.InnerXml); } + [Test] + public void FailOnIncomplete() + { + string json = @"{'Row' : "; + + ExceptionAssert.Throws( + () => JsonConvert.DeserializeXmlNode(json, "ROOT"), + "Unexpected end when reading JSON. Path 'Row', line 1, position 9."); + } + [Test] public void DocumentDeserialize() { diff --git a/Src/Newtonsoft.Json.Tests/Schema/JsonSchemaGeneratorTests.cs b/Src/Newtonsoft.Json.Tests/Schema/JsonSchemaGeneratorTests.cs index eea1b403..160417bb 100644 --- a/Src/Newtonsoft.Json.Tests/Schema/JsonSchemaGeneratorTests.cs +++ b/Src/Newtonsoft.Json.Tests/Schema/JsonSchemaGeneratorTests.cs @@ -367,109 +367,6 @@ namespace Newtonsoft.Json.Tests.Schema return c; } } - - [Test] - public void GenerateSchemaForDirectoryInfo() - { - JsonSchemaGenerator generator = new JsonSchemaGenerator(); - generator.UndefinedSchemaIdHandling = UndefinedSchemaIdHandling.UseTypeName; - generator.ContractResolver = new CustomDirectoryInfoMapper - { -#if !(PORTABLE || DNXCORE50) - IgnoreSerializableAttribute = true -#endif - }; - - JsonSchema schema = generator.Generate(typeof(DirectoryInfo), true); - - string json = schema.ToString(); - - StringAssert.AreEqual(@"{ - ""id"": ""System.IO.DirectoryInfo"", - ""required"": true, - ""type"": [ - ""object"", - ""null"" - ], - ""additionalProperties"": false, - ""properties"": { - ""Name"": { - ""required"": true, - ""type"": [ - ""string"", - ""null"" - ] - }, - ""Parent"": { - ""$ref"": ""System.IO.DirectoryInfo"" - }, - ""Exists"": { - ""required"": true, - ""type"": ""boolean"" - }, - ""FullName"": { - ""required"": true, - ""type"": [ - ""string"", - ""null"" - ] - }, - ""Extension"": { - ""required"": true, - ""type"": [ - ""string"", - ""null"" - ] - }, - ""CreationTime"": { - ""required"": true, - ""type"": ""string"" - }, - ""CreationTimeUtc"": { - ""required"": true, - ""type"": ""string"" - }, - ""LastAccessTime"": { - ""required"": true, - ""type"": ""string"" - }, - ""LastAccessTimeUtc"": { - ""required"": true, - ""type"": ""string"" - }, - ""LastWriteTime"": { - ""required"": true, - ""type"": ""string"" - }, - ""LastWriteTimeUtc"": { - ""required"": true, - ""type"": ""string"" - }, - ""Attributes"": { - ""required"": true, - ""type"": ""integer"" - } - } -}", json); - - DirectoryInfo temp = new DirectoryInfo(@"c:\temp"); - - JTokenWriter jsonWriter = new JTokenWriter(); - JsonSerializer serializer = new JsonSerializer(); - serializer.Converters.Add(new IsoDateTimeConverter()); - serializer.ContractResolver = new CustomDirectoryInfoMapper - { -#if !(PORTABLE || DNXCORE50) - IgnoreSerializableInterface = true -#endif - }; - serializer.Serialize(jsonWriter, temp); - - List errors = new List(); - jsonWriter.Token.Validate(schema, (sender, args) => errors.Add(args.Message)); - - Assert.AreEqual(0, errors.Count); - } #endif [Test] diff --git a/Src/Newtonsoft.Json/Converters/XmlNodeConverter.cs b/Src/Newtonsoft.Json/Converters/XmlNodeConverter.cs index 5fa6bd9a..d18b848a 100644 --- a/Src/Newtonsoft.Json/Converters/XmlNodeConverter.cs +++ b/Src/Newtonsoft.Json/Converters/XmlNodeConverter.cs @@ -1667,7 +1667,7 @@ namespace Newtonsoft.Json.Converters } else { - reader.Read(); + reader.ReadAndAssert(); DeserializeNode(reader, document, manager, rootNode); } @@ -1979,7 +1979,7 @@ namespace Newtonsoft.Json.Converters } attributeName = attributeName.Substring(1); - reader.Read(); + reader.ReadAndAssert(); attributeValue = ConvertTokenToXmlValue(reader); attributeNameValues.Add(attributeName, attributeValue); @@ -2027,7 +2027,7 @@ namespace Newtonsoft.Json.Converters } attributeName = attributeName.Substring(1); - reader.Read(); + reader.ReadAndAssert(); if (!JsonTokenUtils.IsPrimitiveToken(reader.TokenType)) { @@ -2082,15 +2082,15 @@ namespace Newtonsoft.Json.Converters switch (reader.Value.ToString()) { case "@version": - reader.Read(); + reader.ReadAndAssert(); version = ConvertTokenToXmlValue(reader); break; case "@encoding": - reader.Read(); + reader.ReadAndAssert(); encoding = ConvertTokenToXmlValue(reader); break; case "@standalone": - reader.Read(); + reader.ReadAndAssert(); standalone = ConvertTokenToXmlValue(reader); break; default: @@ -2120,19 +2120,19 @@ namespace Newtonsoft.Json.Converters switch (reader.Value.ToString()) { case "@name": - reader.Read(); + reader.ReadAndAssert(); name = ConvertTokenToXmlValue(reader); break; case "@public": - reader.Read(); + reader.ReadAndAssert(); publicId = ConvertTokenToXmlValue(reader); break; case "@system": - reader.Read(); + reader.ReadAndAssert(); systemId = ConvertTokenToXmlValue(reader); break; case "@internalSubset": - reader.Read(); + reader.ReadAndAssert(); internalSubset = ConvertTokenToXmlValue(reader); break; default: @@ -2168,7 +2168,7 @@ namespace Newtonsoft.Json.Converters } string propertyName = reader.Value.ToString(); - reader.Read(); + reader.ReadAndAssert(); if (reader.TokenType == JsonToken.StartArray) {