Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions TensionDev.ULID.Serialization.JsonNet.Tests/ReadJsonTestData.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xunit;

namespace TensionDev.ULID.Serialization.JsonNet.Tests
{
public class ReadJsonTestData : TheoryData<JsonToken, Object, Boolean>
{
public ReadJsonTestData()
{
Add(JsonToken.String, "00000000000000000000000000", false);
Add(JsonToken.String, "7ZZZZZZZZZZZZZZZZZZZZZZZZZ", false);
Add(JsonToken.String, "01ARZ3NDEKTSV4RRFFQ69G5FAV", false);

Add(JsonToken.Boolean, "01ARZ3NDEKTSV4RRFFQ69G5FAV", true);
Add(JsonToken.Bytes, "01ARZ3NDEKTSV4RRFFQ69G5FAV", true);
Add(JsonToken.Date, "01ARZ3NDEKTSV4RRFFQ69G5FAV", true);
Add(JsonToken.Float, "01ARZ3NDEKTSV4RRFFQ69G5FAV", true);
Add(JsonToken.Integer, "01ARZ3NDEKTSV4RRFFQ69G5FAV", true);
Add(JsonToken.Null, "01ARZ3NDEKTSV4RRFFQ69G5FAV", true);
Add(JsonToken.Raw, "01ARZ3NDEKTSV4RRFFQ69G5FAV", true);
Add(JsonToken.Undefined, "01ARZ3NDEKTSV4RRFFQ69G5FAV", true);

Add(JsonToken.String, Int16.MaxValue, true);
Add(JsonToken.String, Int32.MaxValue, true);
Add(JsonToken.String, Int64.MaxValue, true);
Add(JsonToken.String, Single.MaxValue, true);
Add(JsonToken.String, Double.MaxValue, true);
Add(JsonToken.String, DateTime.MinValue, true);
Add(JsonToken.String, DateTime.MaxValue, true);
Add(JsonToken.String, Guid.Empty, true);

Add(JsonToken.Raw, new Object(), true);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,28 +17,34 @@
}

[Theory]
[InlineData("00000000000000000000000000")]
[InlineData("7ZZZZZZZZZZZZZZZZZZZZZZZZZ")]
[InlineData("01ARZ3NDEKTSV4RRFFQ69G5FAV")]
public void TestReadJson(string validUlidString)
[ClassData(typeof(ReadJsonTestData))]

Check warning on line 20 in TensionDev.ULID.Serialization.JsonNet.Tests/UlidJsonNetConverterTests.cs

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

The type argument object might not be serializable, which may cause Test Explorer to not enumerate individual data rows. Consider using a type that is known to be serializable.

See more on https://sonarcloud.io/project/issues?id=TensionDev_ULID.Serialization.JsonNet&issues=AZ15xPl2XISY38E62Meo&open=AZ15xPl2XISY38E62Meo&pullRequest=3
public void TestReadJson(JsonToken jsonToken, object value, bool throwsException)
{
// Arrange
var readerMock = new Mock<JsonReader>(MockBehavior.Strict);
readerMock.SetupGet(r => r.TokenType).Returns(JsonToken.String);
readerMock.SetupGet(r => r.Value).Returns((object)validUlidString);
readerMock.SetupGet(r => r.TokenType).Returns(jsonToken);
readerMock.SetupGet(r => r.Value).Returns(value);

var converter = new UlidJsonNetConverter();

// existingValue must be non-nullable; obtain an instance via Parse to satisfy parameter constraints.
Ulid existingValue = Ulid.Parse(validUlidString);
Ulid existingValue = Ulid.Max;
var serializer = new JsonSerializer();

// Act
Ulid result = converter.ReadJson(readerMock.Object, typeof(Ulid), existingValue, hasExistingValue: false, serializer: serializer);
if (throwsException)
{
// Act and Assert
Assert.Throws<JsonSerializationException>(() => converter.ReadJson(readerMock.Object, typeof(Ulid), existingValue, hasExistingValue: false, serializer: serializer));
}
else
{
// Act
Ulid result = converter.ReadJson(readerMock.Object, typeof(Ulid), existingValue, hasExistingValue: false, serializer: serializer);

// Assert
Assert.NotNull(result);
Assert.Equal(validUlidString, result.ToString());
// Assert
Assert.NotNull(result);
Assert.Equal(value.ToString(), result.ToString());
}
}

[Theory]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
<PackageId>TensionDev.ULID.Serialization.JsonNet</PackageId>
<Version>1.0.0-alpha</Version>
<Version>1.0.0</Version>
<Authors>TensionDev amsga</Authors>
<Company>TensionDev</Company>
<Product>TensionDev.ULID.Serialization.JsonNet</Product>
Expand Down
Loading