diff --git a/CHANGELOG.md b/CHANGELOG.md index 897c654..4ca979c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [v2.1.0] - 2026-03-05 +[v2.1.0](https://github.com/TensionDev/UUID.Serialization.JsonNet/releases/tag/v2.1.0) + +### Changed +- Changed to reference TensionDev.UUID v2.1.0. + + ## [v2.0.0] - 2026-03-04 [v2.0.0](https://github.com/TensionDev/UUID.Serialization.JsonNet/releases/tag/v2.0.0) diff --git a/TensionDev.UUID.Serialization.JsonNet.Tests/UuidJsonNetConverterTests.cs b/TensionDev.UUID.Serialization.JsonNet.Tests/UuidJsonNetConverterTests.cs index 5bfe0cb..3f2fb42 100644 --- a/TensionDev.UUID.Serialization.JsonNet.Tests/UuidJsonNetConverterTests.cs +++ b/TensionDev.UUID.Serialization.JsonNet.Tests/UuidJsonNetConverterTests.cs @@ -16,23 +16,25 @@ public UuidJsonNetConverterTests() _converter = new UuidJsonNetConverter(); } - [Fact] - public void TestReadJson() + [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) { // Arrange - const string validUuidString = "00000000-0000-0000-0000-000000000000"; var readerMock = new Mock(MockBehavior.Strict); readerMock.SetupGet(r => r.TokenType).Returns(JsonToken.String); readerMock.SetupGet(r => r.Value).Returns((object)validUuidString); - var converter = new UuidJsonNetConverter(); - // existingValue must be non-nullable; obtain an instance via Parse to satisfy parameter constraints. Uuid existingValue = Uuid.Parse(validUuidString); var serializer = new JsonSerializer(); // Act - Uuid result = 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); @@ -40,7 +42,32 @@ public void TestReadJson() } [Fact] - public void TestWriteJson() + 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(() => + { + // Act + _converter.ReadJson(readerMock.Object, typeof(Uuid), existingValue, hasExistingValue: false, serializer: serializer); + }); + } + + [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 TestWriteJson(string validUuidString) { var writerMock = new Mock(MockBehavior.Strict); object? capturedValue = null; @@ -51,28 +78,7 @@ public void TestWriteJson() var serializerMock = new Mock(MockBehavior.Loose); - // Attempt to create an instance of the Uuid type. - // This will succeed for structs and for classes with a public parameterless constructor. - // If it fails, mark test inconclusive because we cannot safely fabricate the dependency. - TensionDev.UUID.Uuid value; - try - { - var instance = Activator.CreateInstance(typeof(TensionDev.UUID.Uuid)); - if (instance == null) - { - // This can happen if the type is a non-instantiable class (abstract) or Activator returns null. - Assert.Fail("Could not create an instance of TensionDev.UUID.Uuid (Activator.CreateInstance returned null). Provide a parameterless constructor or update the test environment."); - return; - } - - value = (TensionDev.UUID.Uuid)instance; - } - catch (Exception ex) - { - // xUnit does not provide Assert.Inconclusive; use Assert.Fail to report the diagnostic and stop the test. - Assert.Fail("Could not create an instance of TensionDev.UUID.Uuid: " + ex.Message); - return; - } + TensionDev.UUID.Uuid value = TensionDev.UUID.Uuid.Parse(validUuidString); // Act _converter.WriteJson(writerMock.Object, value, serializerMock.Object); diff --git a/TensionDev.UUID.Serialization.JsonNet/TensionDev.UUID.Serialization.JsonNet.csproj b/TensionDev.UUID.Serialization.JsonNet/TensionDev.UUID.Serialization.JsonNet.csproj index a023f59..dab49b2 100644 --- a/TensionDev.UUID.Serialization.JsonNet/TensionDev.UUID.Serialization.JsonNet.csproj +++ b/TensionDev.UUID.Serialization.JsonNet/TensionDev.UUID.Serialization.JsonNet.csproj @@ -10,7 +10,7 @@ true true TensionDev.UUID.Serialization.JsonNet - 2.0.0 + 2.1.0 TensionDev amsga TensionDev TensionDev.UUID.Serialization.JsonNet @@ -38,7 +38,7 @@ - +