public void CanDumpObjectUsingDelegateTransform() { // Arrange var input = new MyType { Name = "John Doe", Age = 21, Weight = 80.1 }; var transform = new DelegateTransform(i => i is MyType myType ? new { myType.Name, myType.Age, myType.Weight, AdditionalProperty = "Test" } : i); // Act var actual = input.Dump(transform); // Assert actual.Should().Be(@"{ ""Name"": ""John Doe"" [System.String], ""Age"": 21 [System.Int32], ""Weight"": 80.1 [System.Double], ""AdditionalProperty"": ""Test"" [System.String] } [CrossCutting.Utilities.ObjectDumper.Tests.Helpers.MyType]"); }
public void CanDumpObjectWithNullProperty() { // Arrange var input = new MyType(); // Act var actual = input.Dump(); // Assert actual.Should().Be(@"{ ""Name"": NULL [System.String], ""Age"": 0 [System.Int32], ""Weight"": 0 [System.Double] } [CrossCutting.Utilities.ObjectDumper.Tests.Helpers.MyType]"); }
public void CanDumpObjectUsingTypedDelegateTransform() { // Arrange var input = new MyType { Name = "John Doe", Age = 21, Weight = 80.1 }; var transform = new TypedDelegateTransform <MyType>(mt => mt?.ToString() ?? string.Empty); // Act var actual = input.Dump(transform); // Assert actual.Should().Be(@"""CrossCutting.Utilities.ObjectDumper.Tests.Helpers.MyType"" [System.String]"); }
public void CanDumpObjectWithDynamicallyAddedProperties() { // Arrange var input = new MyType { Name = "Hello world" }; using var manager = new DynamicPropertyManager <MyType>(input); manager.Properties.Add(DynamicPropertyManager.CreateProperty <MyType, string>("Name2", _ => "Name 2", null)); manager.Properties.Add(DynamicPropertyManager.CreateProperty <MyType, string>("Name3", _ => "Name 3", null)); // Act var actual = input.Dump(); // Assert actual.Should().Be(@"{ ""Name"": ""Hello world"" [System.String], ""Age"": 0 [System.Int32], ""Weight"": 0 [System.Double], ""Name2"": ""Name 2"" [System.String], ""Name3"": ""Name 3"" [System.String] } [CrossCutting.Utilities.ObjectDumper.Tests.Helpers.MyType]"); }