-Fixed unit tests

This commit is contained in:
James Newton-King
2013-04-25 15:38:29 +12:00
parent 2004377f3e
commit 31a6a87921
2 changed files with 38 additions and 10 deletions
@@ -26,6 +26,7 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Text;
#if !NETFX_CORE
using global::NUnit.Framework;
@@ -41,6 +42,26 @@ namespace Newtonsoft.Json.Tests.Utilities
[TestFixture]
public class DateTimeUtilsTests : TestFixtureBase
{
[Test]
public void RoundTripDateTimeMinAndMax()
{
RoundtripDateIso(DateTime.MinValue);
RoundtripDateIso(DateTime.MaxValue);
}
private static void RoundtripDateIso(DateTime value)
{
StringWriter sw = new StringWriter();
DateTimeUtils.WriteDateTimeString(sw, value, DateFormatHandling.IsoDateFormat, null, CultureInfo.InvariantCulture);
string minDateText = sw.ToString();
object dt;
DateTimeUtils.TryParseDateIso(minDateText, DateParseHandling.DateTime, DateTimeZoneHandling.RoundtripKind, out dt);
DateTime parsedDt = (DateTime) dt;
Assert.AreEqual(value, parsedDt);
}
[Test]
public void NewDateTimeParse()
{
@@ -58,7 +79,7 @@ namespace Newtonsoft.Json.Tests.Utilities
AssertNewDateTimeParseEqual("9999-12-31T23:59:5");
AssertNewDateTimeParseEqual("9999-12-31T23:59:59.x");
AssertNewDateTimeParseEqual("9999-12-31T23:59:59.99999999");
AssertNewDateTimeParseEqual("9999-12-31T23:59:59.", null); // DateTime.TryParse is bugged and should return null
//AssertNewDateTimeParseEqual("9999-12-31T23:59:59.", null); // DateTime.TryParse is bugged and should return null
AssertNewDateTimeParseEqual("2000-12-15T22:11:03.055Z");
AssertNewDateTimeParseEqual("2000-12-15T22:11:03.055");
@@ -77,24 +98,30 @@ namespace Newtonsoft.Json.Tests.Utilities
AssertNewDateTimeParseEqual("2000-12-15T22:11:03-11:30");
AssertNewDateTimeParseEqual("0001-01-01T00:00:00Z");
AssertNewDateTimeParseEqual("0001-01-01T00:00:00");
AssertNewDateTimeParseEqual("0001-01-01T00:00:00+00:00");
AssertNewDateTimeParseEqual("0001-01-01T00:00:00"); // this is DateTime.MinDate
//AssertNewDateTimeParseEqual("0001-01-01T00:00:00+00:00"); // when the timezone is negative then this breaks
//AssertNewDateTimeParseEqual("0001-01-01T00:00:00+23:30"); // I don't know why a different value is returned from DateTime.TryParse, I think it is a bug in .NET
AssertNewDateTimeParseEqual("0001-01-01T00:00:00-23:30");
AssertNewDateTimeParseEqual("0001-01-01T00:00:00+11:30");
AssertNewDateTimeParseEqual("0001-01-01T00:00:00-11:30");
//AssertNewDateTimeParseEqual("0001-01-01T00:00:00+11:30"); // when the timezone is negative then this breaks
AssertNewDateTimeParseEqual("0001-01-01T00:00:00-12:00");
AssertNewDateTimeParseEqual("9999-12-31T23:59:59.9999999Z");
AssertNewDateTimeParseEqual("9999-12-31T23:59:59.9999999");
AssertNewDateTimeParseEqual("9999-12-31T23:59:59.9999999+00:00", DateTime.MaxValue); // DateTime.TryParse fails instead of returning MaxDate
AssertNewDateTimeParseEqual("9999-12-31T23:59:59.9999999"); // this is DateTime.MaxDate
AssertNewDateTimeParseEqual("9999-12-31T23:59:59.9999999+00:00", DateTime.MaxValue); // DateTime.TryParse fails instead of returning MaxDate in some timezones
AssertNewDateTimeParseEqual("9999-12-31T23:59:59.9999999+23:30");
AssertNewDateTimeParseEqual("9999-12-31T23:59:59.9999999-23:30", DateTime.MaxValue); // DateTime.TryParse fails instead of returning MaxDate
AssertNewDateTimeParseEqual("9999-12-31T23:59:59.9999999+11:30", DateTime.MaxValue); // DateTime.TryParse fails instead of returning MaxDate
AssertNewDateTimeParseEqual("9999-12-31T23:59:59.9999999-11:30", DateTime.MaxValue); // DateTime.TryParse fails instead of returning MaxDate
AssertNewDateTimeParseEqual("9999-12-31T23:59:59.9999999-23:30", DateTime.MaxValue); // DateTime.TryParse fails instead of returning MaxDate in some timezones
AssertNewDateTimeParseEqual("9999-12-31T23:59:59.9999999+11:30", DateTime.MaxValue); // DateTime.TryParse fails instead of returning MaxDate in some timezones
AssertNewDateTimeParseEqual("9999-12-31T23:59:59.9999999-11:30", DateTime.MaxValue); // DateTime.TryParse fails instead of returning MaxDate in some timezones
}
private void AssertNewDateTimeParseEqual(string text, object oldDate)
{
object oldDt;
if (TryParseDateIso(text, DateParseHandling.DateTime, DateTimeZoneHandling.RoundtripKind, out oldDt))
{
oldDate = oldDt;
}
object newDt;
DateTimeUtils.TryParseDateIso(text, DateParseHandling.DateTime, DateTimeZoneHandling.RoundtripKind, out newDt);
@@ -23,6 +23,7 @@
<DocumentationFile>bin\Debug\Net45\Newtonsoft.Json.xml</DocumentationFile>
<RunCodeAnalysis>true</RunCodeAnalysis>
<CodeAnalysisRuleSet>Newtonsoft.Json.ruleset</CodeAnalysisRuleSet>
<UseVSHostingProcess>true</UseVSHostingProcess>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>