Skip to content

Commit

Permalink
Merge pull request #5 from svpetry/patch-1
Browse files Browse the repository at this point in the history
Fixed wrong index comparison.
  • Loading branch information
DSilence authored Feb 13, 2020
2 parents 43b225a + 2db9c36 commit 3598b6c
Show file tree
Hide file tree
Showing 2 changed files with 84 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
using DS.NodaTime.Serialization.Utf8Json;
using Utf8Json;
using Utf8Json.Resolvers;
using Xunit;

namespace NodaTime.Serialization.Utf8Json.Tests
{
public class NodaPeriodTest
{
private static readonly IJsonFormatterResolver Resolver = CompositeResolver.Create(new IJsonFormatter[]
{
NodaFormatters.NormalizingIsoPeriodFormatter
}, new[] { StandardResolver.Default });

[Fact]
public void Days_InObject()
{
var testObj = new PeriodTestObj
{
Str = "abcdefghijklmnopqrstuvwxyz",
Period = Period.FromDays(3)
};
var json = JsonSerializer.ToJsonString(testObj, Resolver);

var deserializedObj = JsonSerializer.Deserialize<PeriodTestObj>(json, Resolver);

Assert.Equal(testObj.Period, deserializedObj.Period);
}

[Fact]
public void Months_InObject()
{
var testObj = new PeriodTestObj
{
Str = "abcdefghijklmnopqrstuvwxyz",
Period = Period.FromMonths(6)
};
var json = JsonSerializer.ToJsonString(testObj, Resolver);

var deserializedObj = JsonSerializer.Deserialize<PeriodTestObj>(json, Resolver);

Assert.Equal(testObj.Period, deserializedObj.Period);
}

[Fact]
public void Years_InObject()
{
var testObj = new PeriodTestObj
{
Str = "abcdefghijklmnopqrstuvwxyz",
Period = Period.FromYears(10)
};
var json = JsonSerializer.ToJsonString(testObj, Resolver);

var deserializedObj = JsonSerializer.Deserialize<PeriodTestObj>(json, Resolver);

Assert.Equal(testObj.Period, deserializedObj.Period);
}

[Fact]
public void Hours_InObject()
{
var testObj = new PeriodTestObj
{
Str = "abcdefghijklmnopqrstuvwxyz",
Period = Period.FromHours(8)
};
var json = JsonSerializer.ToJsonString(testObj, Resolver);

var deserializedObj = JsonSerializer.Deserialize<PeriodTestObj>(json, Resolver);

Assert.Equal(testObj.Period, deserializedObj.Period);
}
}

public class PeriodTestObj
{
public string Str { get; set; }

public Period Period { get; set; }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ public Period Deserialize(ref JsonReader reader, IJsonFormatterResolver formatte
Exceptions.ThrowInvalidPeriodFormat(str);
}

while (str.Array[i] != 'T' && i < str.Count)
while (str.Array[i] != 'T' && i - str.Offset < str.Count)
{
var amount = NumberConverter.ReadInt32(str.Array, i, out var readCount);
i += readCount;
Expand All @@ -106,7 +106,7 @@ public Period Deserialize(ref JsonReader reader, IJsonFormatterResolver formatte

if (str.Array[i++] == 'T')
{
while (i < str.Count)
while (i - str.Offset < str.Count)
{
var amount = NumberConverter.ReadInt64(str.Array, i, out var readCount);
i += readCount;
Expand Down

0 comments on commit 3598b6c

Please sign in to comment.