From 586c62ac1003297f1ff0c93c45709cbc5e94878b Mon Sep 17 00:00:00 2001 From: amsga <49681949+amsga@users.noreply.github.com> Date: Sat, 11 Apr 2026 07:37:52 +0800 Subject: [PATCH] Added additional test cases for ReadJson. --- .../ReadJsonTestData.cs | 40 +++++++++++++++++++ .../UlidJsonNetConverterTests.cs | 30 ++++++++------ ...nsionDev.ULID.Serialization.JsonNet.csproj | 2 +- 3 files changed, 59 insertions(+), 13 deletions(-) create mode 100644 TensionDev.ULID.Serialization.JsonNet.Tests/ReadJsonTestData.cs diff --git a/TensionDev.ULID.Serialization.JsonNet.Tests/ReadJsonTestData.cs b/TensionDev.ULID.Serialization.JsonNet.Tests/ReadJsonTestData.cs new file mode 100644 index 0000000..48dff00 --- /dev/null +++ b/TensionDev.ULID.Serialization.JsonNet.Tests/ReadJsonTestData.cs @@ -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 + { + 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); + } + } +} diff --git a/TensionDev.ULID.Serialization.JsonNet.Tests/UlidJsonNetConverterTests.cs b/TensionDev.ULID.Serialization.JsonNet.Tests/UlidJsonNetConverterTests.cs index c487266..0795a99 100644 --- a/TensionDev.ULID.Serialization.JsonNet.Tests/UlidJsonNetConverterTests.cs +++ b/TensionDev.ULID.Serialization.JsonNet.Tests/UlidJsonNetConverterTests.cs @@ -17,28 +17,34 @@ public UlidJsonNetConverterTests() } [Theory] - [InlineData("00000000000000000000000000")] - [InlineData("7ZZZZZZZZZZZZZZZZZZZZZZZZZ")] - [InlineData("01ARZ3NDEKTSV4RRFFQ69G5FAV")] - public void TestReadJson(string validUlidString) + [ClassData(typeof(ReadJsonTestData))] + public void TestReadJson(JsonToken jsonToken, object value, bool throwsException) { // Arrange var readerMock = new Mock(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(() => 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] diff --git a/TensionDev.ULID.Serialization.JsonNet/TensionDev.ULID.Serialization.JsonNet.csproj b/TensionDev.ULID.Serialization.JsonNet/TensionDev.ULID.Serialization.JsonNet.csproj index 2ab4c73..6ab49b5 100644 --- a/TensionDev.ULID.Serialization.JsonNet/TensionDev.ULID.Serialization.JsonNet.csproj +++ b/TensionDev.ULID.Serialization.JsonNet/TensionDev.ULID.Serialization.JsonNet.csproj @@ -10,7 +10,7 @@ true true TensionDev.ULID.Serialization.JsonNet - 1.0.0-alpha + 1.0.0 TensionDev amsga TensionDev TensionDev.ULID.Serialization.JsonNet