@@ -16,31 +16,58 @@ public UuidJsonNetConverterTests()
1616 _converter = new UuidJsonNetConverter ( ) ;
1717 }
1818
19- [ Fact ]
20- public void TestReadJson ( )
19+ [ Theory ]
20+ [ InlineData ( "00000000-0000-0000-0000-000000000000" ) ]
21+ [ InlineData ( "ffffffff-ffff-ffff-ffff-ffffffffffff" ) ]
22+ [ InlineData ( "164a714c-0c79-11ec-82a8-0242ac130003" ) ]
23+ [ InlineData ( "550e8400-e29b-41d4-a716-446655440000" ) ]
24+ [ InlineData ( "1bf6935b-49e6-54cf-a9c8-51fb21c41b46" ) ]
25+ public void TestReadJson ( string validUuidString )
2126 {
2227 // Arrange
23- const string validUuidString = "00000000-0000-0000-0000-000000000000" ;
2428 var readerMock = new Mock < JsonReader > ( MockBehavior . Strict ) ;
2529 readerMock . SetupGet ( r => r . TokenType ) . Returns ( JsonToken . String ) ;
2630 readerMock . SetupGet ( r => r . Value ) . Returns ( ( object ) validUuidString ) ;
2731
28- var converter = new UuidJsonNetConverter ( ) ;
29-
3032 // existingValue must be non-nullable; obtain an instance via Parse to satisfy parameter constraints.
3133 Uuid existingValue = Uuid . Parse ( validUuidString ) ;
3234 var serializer = new JsonSerializer ( ) ;
3335
3436 // Act
35- Uuid result = converter . ReadJson ( readerMock . Object , typeof ( Uuid ) , existingValue , hasExistingValue : false , serializer : serializer ) ;
37+ Uuid result = _converter . ReadJson ( readerMock . Object , typeof ( Uuid ) , existingValue , hasExistingValue : false , serializer : serializer ) ;
3638
3739 // Assert
3840 Assert . NotNull ( result ) ;
3941 Assert . Equal ( validUuidString , result . ToString ( ) ) ;
4042 }
4143
4244 [ Fact ]
43- public void TestWriteJson ( )
45+ public void TestReadJsonInvalidType ( )
46+ {
47+ // Arrange
48+ const string validUuidString = "00000000-0000-0000-0000-000000000000" ;
49+ var readerMock = new Mock < JsonReader > ( MockBehavior . Strict ) ;
50+ readerMock . SetupGet ( r => r . TokenType ) . Returns ( JsonToken . Undefined ) ;
51+ readerMock . SetupGet ( r => r . Value ) . Returns ( ( object ) validUuidString ) ;
52+
53+ // existingValue must be non-nullable; obtain an instance via Parse to satisfy parameter constraints.
54+ Uuid existingValue = Uuid . Parse ( validUuidString ) ;
55+ var serializer = new JsonSerializer ( ) ;
56+
57+ Assert . Throws < JsonSerializationException > ( ( ) =>
58+ {
59+ // Act
60+ _converter . ReadJson ( readerMock . Object , typeof ( Uuid ) , existingValue , hasExistingValue : false , serializer : serializer ) ;
61+ } ) ;
62+ }
63+
64+ [ Theory ]
65+ [ InlineData ( "00000000-0000-0000-0000-000000000000" ) ]
66+ [ InlineData ( "ffffffff-ffff-ffff-ffff-ffffffffffff" ) ]
67+ [ InlineData ( "164a714c-0c79-11ec-82a8-0242ac130003" ) ]
68+ [ InlineData ( "550e8400-e29b-41d4-a716-446655440000" ) ]
69+ [ InlineData ( "1bf6935b-49e6-54cf-a9c8-51fb21c41b46" ) ]
70+ public void TestWriteJson ( string validUuidString )
4471 {
4572 var writerMock = new Mock < JsonWriter > ( MockBehavior . Strict ) ;
4673 object ? capturedValue = null ;
@@ -51,28 +78,7 @@ public void TestWriteJson()
5178
5279 var serializerMock = new Mock < JsonSerializer > ( MockBehavior . Loose ) ;
5380
54- // Attempt to create an instance of the Uuid type.
55- // This will succeed for structs and for classes with a public parameterless constructor.
56- // If it fails, mark test inconclusive because we cannot safely fabricate the dependency.
57- TensionDev . UUID . Uuid value ;
58- try
59- {
60- var instance = Activator . CreateInstance ( typeof ( TensionDev . UUID . Uuid ) ) ;
61- if ( instance == null )
62- {
63- // This can happen if the type is a non-instantiable class (abstract) or Activator returns null.
64- Assert . Fail ( "Could not create an instance of TensionDev.UUID.Uuid (Activator.CreateInstance returned null). Provide a parameterless constructor or update the test environment." ) ;
65- return ;
66- }
67-
68- value = ( TensionDev . UUID . Uuid ) instance ;
69- }
70- catch ( Exception ex )
71- {
72- // xUnit does not provide Assert.Inconclusive; use Assert.Fail to report the diagnostic and stop the test.
73- Assert . Fail ( "Could not create an instance of TensionDev.UUID.Uuid: " + ex . Message ) ;
74- return ;
75- }
81+ TensionDev . UUID . Uuid value = TensionDev . UUID . Uuid . Parse ( validUuidString ) ;
7682
7783 // Act
7884 _converter . WriteJson ( writerMock . Object , value , serializerMock . Object ) ;
0 commit comments