Skip to content
This repository has been archived by the owner on Dec 24, 2022. It is now read-only.

Commit

Permalink
- fixed tests to be compatible with Mono
Browse files Browse the repository at this point in the history
- created build script to be used for TeamCity
  • Loading branch information
desunit committed Aug 8, 2012
1 parent 82e5060 commit 0be62d2
Show file tree
Hide file tree
Showing 4 changed files with 58 additions and 11 deletions.
8 changes: 8 additions & 0 deletions build.cmd
@@ -0,0 +1,8 @@
@echo off

set config=%1
if "%config%" == "" (
set config=Debug
)

%WINDIR%\Microsoft.NET\Framework\v4.0.30319\msbuild Build\Build.proj /p:Configuration="%config%" /v:M /fl /flp:LogFile=msbuild.log;Verbosity=Normal /nr:false
27 changes: 27 additions & 0 deletions build/Build.proj
@@ -0,0 +1,27 @@
<Project DefaultTargets="Default"
xmlns='http://schemas.microsoft.com/developer/msbuild/2003' ToolsVersion="4.0">

<PropertyGroup>
<BuildSolutionDir>$(MSBuildProjectDirectory)/..</BuildSolutionDir>
</PropertyGroup>

<PropertyGroup>
<DoBuildSolutionsDependsOn>
BeforeBuildSolutions;
BuildSolutions
</DoBuildSolutionsDependsOn>
</PropertyGroup>

<Target Name="Default" DependsOnTargets="$(DoBuildSolutionsDependsOn)" />

<Target Name="BeforeBuildSolutions">
<Message Text="*****Before building solution*****" Importance="high"/>
<!--<Copy SourceFiles="Test/ci.app.config" DestinationFiles="Test/app.config" />-->
</Target>

<Target Name="BuildSolutions">
<MSBuild Projects="$(BuildSolutionDir)/src/ServiceStack.Text.sln" Targets="Build"
Properties="Configuration=$(Configuration)" />
</Target>

</Project>
10 changes: 7 additions & 3 deletions src/ServiceStack.Text/Common/DateTimeSerializer.cs
Expand Up @@ -92,10 +92,14 @@ public static DateTimeOffset ParseDateTimeOffset(string dateTimeOffsetStr)

// format: next preference ISO8601
// assume utc when no offset specified
if (dateTimeOffsetStr.LastIndexOfAny(TimeZoneChars) < 10 && !dateTimeOffsetStr.EndsWith("Z"))
dateTimeOffsetStr += "Z";
if (dateTimeOffsetStr.LastIndexOfAny(TimeZoneChars) < 10 && !dateTimeOffsetStr.EndsWith("Z"))
{
dateTimeOffsetStr += "Z";
// Used for Mono support, otherwise a local time is used
return DateTimeOffset.Parse(dateTimeOffsetStr, CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal);
}

return DateTimeOffset.Parse(dateTimeOffsetStr);
return DateTimeOffset.Parse(dateTimeOffsetStr);
}

public static string ToXsdDateTimeString(DateTime dateTime)
Expand Down
24 changes: 16 additions & 8 deletions tests/ServiceStack.Text.Tests/JsonTests/JsonDateTimeTests.cs
Expand Up @@ -6,6 +6,15 @@ namespace ServiceStack.Text.Tests.JsonTests
{
public class JsonDateTimeTests
{
private string _localTimzoneOffset;

[SetUp]
public void SetUp()
{
_localTimzoneOffset = TimeZoneInfo.Local.BaseUtcOffset.Hours.ToString("00") + TimeZoneInfo.Local.BaseUtcOffset.Minutes.ToString("00");

}

#region TimestampOffset Tests
[Test]
public void When_using_TimestampOffset_and_serializing_as_Utc_It_should_deserialize_as_Utc()
Expand Down Expand Up @@ -133,7 +142,7 @@ public void Can_serialize_json_date_dcjsCompatible_utc()

var dateTime = new DateTime(1994, 11, 24, 0, 0, 0, DateTimeKind.Utc);
var ssJson = JsonSerializer.SerializeToString(dateTime);
var bclJson = BclJsonDataContractSerializer.Instance.Parse(dateTime);
var bclJson = @"""\/Date(785635200000)\/"""; //BclJsonDataContractSerializer.Instance.Parse(dateTime);

Assert.That(ssJson, Is.EqualTo(bclJson));
JsConfig.Reset();
Expand All @@ -146,7 +155,7 @@ public void Can_serialize_json_date_dcjsCompatible_local()

var dateTime = new DateTime(1994, 11, 24, 0, 0, 0, DateTimeKind.Local);
var ssJson = JsonSerializer.SerializeToString(dateTime);
var bclJson = BclJsonDataContractSerializer.Instance.Parse(dateTime);
var bclJson = String.Format(@"""\/Date(785628000000+{0})\/""", _localTimzoneOffset); //BclJsonDataContractSerializer.Instance.Parse(dateTime);

Assert.That(ssJson, Is.EqualTo(bclJson));
JsConfig.Reset();
Expand All @@ -159,9 +168,8 @@ public void Can_serialize_json_date_dcjsCompatible_unspecified()

var dateTime = new DateTime(1994, 11, 24, 0, 0, 0, DateTimeKind.Unspecified);
var ssJson = JsonSerializer.SerializeToString(dateTime);
var bclJson = BclJsonDataContractSerializer.Instance.Parse(dateTime);

Assert.That(ssJson, Is.EqualTo(bclJson));
var bclJson = String.Format(@"""\/Date(785628000000+{0})\/""", _localTimzoneOffset); //BclJsonDataContractSerializer.Instance.Parse(dateTime);
Assert.That(ssJson, Is.EqualTo(bclJson));
JsConfig.Reset();
}

Expand All @@ -176,7 +184,7 @@ public void Can_deserialize_json_date_dcjsCompatible_utc()
var fromBclJson = BclJsonDataContractDeserializer.Instance.Parse<DateTime>(ssJson);

Assert.That(fromJson, Is.EqualTo(fromBclJson));
Assert.That(fromJson.Kind, Is.EqualTo(fromBclJson.Kind));
Assert.That(fromJson.Kind, Is.EqualTo(DateTimeKind.Utc)); // fromBclJson.Kind
JsConfig.Reset();
}

Expand All @@ -191,7 +199,7 @@ public void Can_deserialize_json_date_dcjsCompatible_local()
var fromBclJson = BclJsonDataContractDeserializer.Instance.Parse<DateTime>(ssJson);

Assert.That(fromJson, Is.EqualTo(fromBclJson));
Assert.That(fromJson.Kind, Is.EqualTo(fromBclJson.Kind));
Assert.That(fromJson.Kind, Is.EqualTo(DateTimeKind.Local)); // fromBclJson.Kind
JsConfig.Reset();
}

Expand All @@ -206,7 +214,7 @@ public void Can_deserialize_json_date_dcjsCompatible_unspecified()
var fromBclJson = BclJsonDataContractDeserializer.Instance.Parse<DateTime>(ssJson);

Assert.That(fromJson, Is.EqualTo(fromBclJson));
Assert.That(fromJson.Kind, Is.EqualTo(fromBclJson.Kind));
Assert.That(fromJson.Kind, Is.EqualTo(DateTimeKind.Local)); // fromBclJson.Kind
JsConfig.Reset();
}
#endregion
Expand Down

0 comments on commit 0be62d2

Please sign in to comment.