Skip to content

Commit

Permalink
fix #68
Browse files Browse the repository at this point in the history
  • Loading branch information
Eirik Tsarpalis committed Jan 2, 2016
1 parent d78d04a commit 16acea7
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 3 deletions.
8 changes: 5 additions & 3 deletions src/FsPickler.Json/JsonReader.fs
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ type internal JsonPickleReader (jsonReader : JsonReader, omitHeader, isTopLevelS
do
jsonReader.CloseInput <- not leaveOpen
jsonReader.SupportMultipleContent <- isTopLevelSequence
jsonReader.DateParseHandling <- DateParseHandling.None

let isBsonReader = match jsonReader with :? Bson.BsonReader -> true | _ -> false

Expand Down Expand Up @@ -198,7 +199,8 @@ type internal JsonPickleReader (jsonReader : JsonReader, omitHeader, isTopLevelS
jsonReader.MoveNext()
new DateTime(ticks, kind)
else
jsonReader.ReadPrimitiveAs<DateTime> (omitTag ()) tag
let dt = jsonReader.ReadPrimitiveAs<string> (omitTag ()) tag
DateTime.Parse(dt, null, DateTimeStyles.RoundtripKind)

member __.ReadDateTimeOffset tag =
if isBsonReader then
Expand All @@ -213,8 +215,8 @@ type internal JsonPickleReader (jsonReader : JsonReader, omitHeader, isTopLevelS

new DateTimeOffset(ticks, new TimeSpan(offset))
else
let dt = jsonReader.ReadPrimitiveAs<DateTime> (omitTag ()) tag
new DateTimeOffset(dt)
let dt = jsonReader.ReadPrimitiveAs<string> (omitTag ()) tag
DateTimeOffset.Parse dt

member __.ReadBytes tag =
if not <| omitTag () then
Expand Down
1 change: 1 addition & 0 deletions tests/FsPickler.Tests/FsPickler.Tests.fsproj
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@
<Project>{3ad987bf-f0fa-40bd-9dae-4af3a5fe9cc7}</Project>
<Private>True</Private>
</ProjectReference>
<Reference Include="System.Xml" />
</ItemGroup>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
Expand Down
8 changes: 8 additions & 0 deletions tests/FsPickler.Tests/SerializerTests.fs
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,14 @@ type ``FsPickler Serializer Tests`` (format : string) as self =
let dto2' = testRoundtrip dto2
dto2' |> should equal dto1')

[<Test; Category("Primitives")>]
member __.``1. Primitive: ISO 8601 string`` () =
Check.QuickThrowOnFail<DateTime * DateTimeKind> (fun (d : DateTime, k : DateTimeKind) ->
let dt = new DateTime(d.Ticks, k)
let s = Xml.XmlConvert.ToString(dt, Xml.XmlDateTimeSerializationMode.RoundtripKind)
let s' = testRoundtrip s
s' |> should equal s)

[<Test; Category("Primitives")>]
member __.``1. Primitive: System.TimeSpan`` () = Check.QuickThrowOnFail<TimeSpan> testEquals

Expand Down

0 comments on commit 16acea7

Please sign in to comment.