From ddc72ed48058565e6501fb30fbf07805dd4df3ee Mon Sep 17 00:00:00 2001 From: amsga <49681949+amsga@users.noreply.github.com> Date: Sat, 11 Apr 2026 07:56:27 +0800 Subject: [PATCH] Added additional test cases for ReadJson. --- .../ReadJsonTestData.cs | 38 ++++++++++++++ .../UuidJsonNetConverterTests.cs | 50 +++++++------------ 2 files changed, 55 insertions(+), 33 deletions(-) create mode 100644 TensionDev.UUID.Serialization.JsonNet.Tests/ReadJsonTestData.cs diff --git a/TensionDev.UUID.Serialization.JsonNet.Tests/ReadJsonTestData.cs b/TensionDev.UUID.Serialization.JsonNet.Tests/ReadJsonTestData.cs new file mode 100644 index 0000000..6db2f65 --- /dev/null +++ b/TensionDev.UUID.Serialization.JsonNet.Tests/ReadJsonTestData.cs @@ -0,0 +1,38 @@ +using Newtonsoft.Json; +using System; +using Xunit; + +namespace TensionDev.UUID.Serialization.JsonNet.Tests +{ + public class ReadJsonTestData : TheoryData + { + public ReadJsonTestData() + { + Add(JsonToken.String, "00000000-0000-0000-0000-000000000000", false); + Add(JsonToken.String, "ffffffff-ffff-ffff-ffff-ffffffffffff", false); + Add(JsonToken.String, "164a714c-0c79-11ec-82a8-0242ac130003", false); + Add(JsonToken.String, "550e8400-e29b-41d4-a716-446655440000", false); + Add(JsonToken.String, "1bf6935b-49e6-54cf-a9c8-51fb21c41b46", false); + + Add(JsonToken.Boolean, "550e8400-e29b-41d4-a716-446655440000", true); + Add(JsonToken.Bytes, "550e8400-e29b-41d4-a716-446655440000", true); + Add(JsonToken.Date, "550e8400-e29b-41d4-a716-446655440000", true); + Add(JsonToken.Float, "550e8400-e29b-41d4-a716-446655440000", true); + Add(JsonToken.Integer, "550e8400-e29b-41d4-a716-446655440000", true); + Add(JsonToken.Null, "550e8400-e29b-41d4-a716-446655440000", true); + Add(JsonToken.Raw, "550e8400-e29b-41d4-a716-446655440000", true); + Add(JsonToken.Undefined, "550e8400-e29b-41d4-a716-446655440000", 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.UUID.Serialization.JsonNet.Tests/UuidJsonNetConverterTests.cs b/TensionDev.UUID.Serialization.JsonNet.Tests/UuidJsonNetConverterTests.cs index 3f2fb42..19023a8 100644 --- a/TensionDev.UUID.Serialization.JsonNet.Tests/UuidJsonNetConverterTests.cs +++ b/TensionDev.UUID.Serialization.JsonNet.Tests/UuidJsonNetConverterTests.cs @@ -17,48 +17,32 @@ public UuidJsonNetConverterTests() } [Theory] - [InlineData("00000000-0000-0000-0000-000000000000")] - [InlineData("ffffffff-ffff-ffff-ffff-ffffffffffff")] - [InlineData("164a714c-0c79-11ec-82a8-0242ac130003")] - [InlineData("550e8400-e29b-41d4-a716-446655440000")] - [InlineData("1bf6935b-49e6-54cf-a9c8-51fb21c41b46")] - public void TestReadJson(string validUuidString) + [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)validUuidString); + readerMock.SetupGet(r => r.TokenType).Returns(jsonToken); + readerMock.SetupGet(r => r.Value).Returns(value); // existingValue must be non-nullable; obtain an instance via Parse to satisfy parameter constraints. - Uuid existingValue = Uuid.Parse(validUuidString); + Uuid existingValue = Uuid.Max; var serializer = new JsonSerializer(); - // Act - Uuid result = _converter.ReadJson(readerMock.Object, typeof(Uuid), existingValue, hasExistingValue: false, serializer: serializer); - - // Assert - Assert.NotNull(result); - Assert.Equal(validUuidString, result.ToString()); - } - - [Fact] - public void TestReadJsonInvalidType() - { - // Arrange - const string validUuidString = "00000000-0000-0000-0000-000000000000"; - var readerMock = new Mock(MockBehavior.Strict); - readerMock.SetupGet(r => r.TokenType).Returns(JsonToken.Undefined); - readerMock.SetupGet(r => r.Value).Returns((object)validUuidString); - - // existingValue must be non-nullable; obtain an instance via Parse to satisfy parameter constraints. - Uuid existingValue = Uuid.Parse(validUuidString); - var serializer = new JsonSerializer(); - - Assert.Throws(() => + if (throwsException) + { + // Act and Assert + Assert.Throws(() => _converter.ReadJson(readerMock.Object, typeof(Uuid), existingValue, hasExistingValue: false, serializer: serializer)); + } + else { // Act - _converter.ReadJson(readerMock.Object, typeof(Uuid), existingValue, hasExistingValue: false, serializer: serializer); - }); + Uuid result = _converter.ReadJson(readerMock.Object, typeof(Uuid), existingValue, hasExistingValue: false, serializer: serializer); + + // Assert + Assert.NotNull(result); + Assert.Equal(value.ToString(), result.ToString()); + } } [Theory]