diff --git a/src/Destructurama.JsonNet.Tests/JsonNetTypesDestructuringTests.cs b/src/Destructurama.JsonNet.Tests/JsonNetTypesDestructuringTests.cs index 346e7c6..470820c 100644 --- a/src/Destructurama.JsonNet.Tests/JsonNetTypesDestructuringTests.cs +++ b/src/Destructurama.JsonNet.Tests/JsonNetTypesDestructuringTests.cs @@ -28,8 +28,10 @@ internal class HasName public class JsonNetTypesDestructuringTests { - [Fact] - public void AttributesAreConsultedWhenDestructuring() + [Theory] + [InlineData(TypeNameHandling.Auto)] + [InlineData(TypeNameHandling.Objects)] + public void AttributesAreConsultedWhenDestructuring(TypeNameHandling typeNameHandling) { LogEvent evt = null!; @@ -51,7 +53,7 @@ public void AttributesAreConsultedWhenDestructuring() string ser = JsonConvert.SerializeObject(test, new JsonSerializerSettings { - TypeNameHandling = TypeNameHandling.Auto + TypeNameHandling = typeNameHandling }); var dyn = JsonConvert.DeserializeObject(ser); @@ -67,5 +69,20 @@ public void AttributesAreConsultedWhenDestructuring() props["E"].LiteralValue().ShouldBeNull(); props["ESPN"].ShouldBeOfType(); props["WSPN"].ShouldBeOfType(); + + foreach (var value in props.Values.OfType()) + { + if (typeNameHandling == TypeNameHandling.Auto) + value.TypeTag.ShouldBeNull(); + else if (typeNameHandling == TypeNameHandling.Objects) + value.TypeTag.ShouldNotBeNull(); + } + } + + [Fact] + public void TryDestructure_Should_Return_False_When_Called_With_Null() + { + var policy = new JsonNetDestructuringPolicy(); + policy.TryDestructure(null!, null!, out _).ShouldBeFalse(); } } diff --git a/src/Destructurama.JsonNet/Destructurama.JsonNet.csproj b/src/Destructurama.JsonNet/Destructurama.JsonNet.csproj index e4f857b..b37a8f5 100644 --- a/src/Destructurama.JsonNet/Destructurama.JsonNet.csproj +++ b/src/Destructurama.JsonNet/Destructurama.JsonNet.csproj @@ -11,6 +11,7 @@ +