From 2dd26baa770528f30331e0a07e7f639b3e78c1a8 Mon Sep 17 00:00:00 2001 From: JamesNK Date: Fri, 10 Feb 2012 23:49:46 +0000 Subject: [PATCH] -Fixed unit test failing because of timezones -Added IsValid overload that returns a list of error messages --- Src/Newtonsoft.Json.Tests/PerformanceTests.cs | 4 ++-- .../Schema/ExtensionsTests.cs | 9 ++++++++- .../Serialization/TypeNameHandlingTests.cs | 3 ++- Src/Newtonsoft.Json/Schema/Extensions.cs | 19 +++++++++++++++++++ 4 files changed, 31 insertions(+), 4 deletions(-) diff --git a/Src/Newtonsoft.Json.Tests/PerformanceTests.cs b/Src/Newtonsoft.Json.Tests/PerformanceTests.cs index b8fa9f4d..5b1d8ed3 100644 --- a/Src/Newtonsoft.Json.Tests/PerformanceTests.cs +++ b/Src/Newtonsoft.Json.Tests/PerformanceTests.cs @@ -39,8 +39,8 @@ namespace Newtonsoft.Json.Tests public class PerformanceTests : TestFixtureBase { - //private const int Iterations = 100; - private const int Iterations = 5000; + private const int Iterations = 100; + //private const int Iterations = 5000; #region Data diff --git a/Src/Newtonsoft.Json.Tests/Schema/ExtensionsTests.cs b/Src/Newtonsoft.Json.Tests/Schema/ExtensionsTests.cs index 1314733a..99f3a5b3 100644 --- a/Src/Newtonsoft.Json.Tests/Schema/ExtensionsTests.cs +++ b/Src/Newtonsoft.Json.Tests/Schema/ExtensionsTests.cs @@ -47,8 +47,15 @@ namespace Newtonsoft.Json.Tests.Schema JToken stringToken = JToken.FromObject("pie"); JToken integerToken = JToken.FromObject(1); - Assert.AreEqual(false, stringToken.IsValid(schema)); + IList errorMessages; Assert.AreEqual(true, integerToken.IsValid(schema)); + Assert.AreEqual(true, integerToken.IsValid(schema, out errorMessages)); + Assert.AreEqual(0, errorMessages.Count); + + Assert.AreEqual(false, stringToken.IsValid(schema)); + Assert.AreEqual(false, stringToken.IsValid(schema, out errorMessages)); + Assert.AreEqual(1, errorMessages.Count); + Assert.AreEqual("Invalid type. Expected Integer but got String.", errorMessages[0]); } [Test] diff --git a/Src/Newtonsoft.Json.Tests/Serialization/TypeNameHandlingTests.cs b/Src/Newtonsoft.Json.Tests/Serialization/TypeNameHandlingTests.cs index e256e0d1..9d52d820 100644 --- a/Src/Newtonsoft.Json.Tests/Serialization/TypeNameHandlingTests.cs +++ b/Src/Newtonsoft.Json.Tests/Serialization/TypeNameHandlingTests.cs @@ -856,6 +856,7 @@ namespace Newtonsoft.Json.Tests.Serialization public void ByteArrays() { Car testerObject = new Car(); + testerObject.Year = new DateTime(2000, 10, 5, 1, 1, 1, DateTimeKind.Utc); byte[] data = new byte[] {75, 65, 82, 73, 82, 65}; testerObject.Objects = new object[] { data, "prueba" }; @@ -869,7 +870,7 @@ namespace Newtonsoft.Json.Tests.Serialization Assert.AreEqual(output, @"{ ""$type"": """ + carClassRef + @""", - ""Year"": ""\/Date(-62135596800000+1300)\/"", + ""Year"": ""\/Date(970707661000)\/"", ""Objects"": { ""$type"": ""System.Object[], mscorlib"", ""$values"": [ diff --git a/Src/Newtonsoft.Json/Schema/Extensions.cs b/Src/Newtonsoft.Json/Schema/Extensions.cs index 054d42d6..a93e8f28 100644 --- a/Src/Newtonsoft.Json/Schema/Extensions.cs +++ b/Src/Newtonsoft.Json/Schema/Extensions.cs @@ -52,6 +52,25 @@ namespace Newtonsoft.Json.Schema return valid; } + /// + /// Determines whether the is valid. + /// + /// The source to test. + /// The schema to test with. + /// When this method returns, contains any error messages generated while validating. + /// + /// true if the specified is valid; otherwise, false. + /// + public static bool IsValid(this JToken source, JsonSchema schema, out IList errorMessages) + { + IList errors = new List(); + + source.Validate(schema, (sender, args) => errors.Add(args.Message)); + + errorMessages = errors; + return (errorMessages.Count == 0); + } + /// /// Validates the specified . ///