public void ShouldDumpObjectWithIndexer_NonIntegerArray_Ignored() { // Arrange var viewModelValidation = new ViewModelValidation { ["property1"] = new List <string> { "error1" }, ["property2"] = new List <string> { "error2" }, }; var dumpOptions = new DumpOptions { IgnoreIndexers = false }; // Act var dump = ObjectDumperCSharp.Dump(viewModelValidation, dumpOptions); // Assert this.testOutputHelper.WriteLine(dump); dump.Should().NotBeNull(); dump.Should().Be("var viewModelValidation = new ViewModelValidation\r\n{\r\n};"); }
public void ShouldDumpRecursiveTypes_CircularReference_Case3() { // Arrange var nestedItemB = new NestedItemB { Property = 1, Next = null, }; var nestedItemA = new NestedItemA { Property = 1, Next = nestedItemB, }; nestedItemB.Next = nestedItemA; // Act var dump = ObjectDumperCSharp.Dump(nestedItemA); // Assert this.testOutputHelper.WriteLine(dump); dump.Should().NotBeNull(); dump.Should().Be( "var nestedItemA = new NestedItemA\r\n" + "{\r\n" + " Next = new NestedItemB\r\n" + " {\r\n" + " Next = null, // Circular reference detected\r\n" + " Property = 1\r\n" + " },\r\n" + " Property = 1\r\n" + "};"); }
public void ShouldEscapeStrings() { // Arrange var expectedPerson = new Person { Name = "Boris \"The Blade\", \\GANGSTA\\ aka 'The Bullet Dodger' \a \b \f \r\nOn a new\twith tab \v \0" }; var dumpOptions = new DumpOptions { SetPropertiesOnly = true, IgnoreDefaultValues = true, MaxLevel = 1, ExcludeProperties = { "ByteArray" } }; // Act var dump = ObjectDumperCSharp.Dump(expectedPerson, dumpOptions); // Assert this.testOutputHelper.WriteLine(dump); dump.Should().NotBeNull(); // Compare generated object with input var person = new Person { Name = "Boris \"The Blade\", \\GANGSTA\\ aka \'The Bullet Dodger\' \a \b \f \r\nOn a new\twith tab \v \0" }; person.Should().BeEquivalentTo(expectedPerson); }
public void ShouldDumpTypes_UsingCustomTypeFormatter() { // Arrange var typeMap = new TypeMap { Map = new Dictionary <Type, Type> { { typeof(KeyTypeOne), typeof(HandlerTypeOne) }, { typeof(KeyTypeTwo), typeof(HandlerTypeTwo) } } }; var dumpOptions = new DumpOptions { CustomTypeFormatter = new Dictionary <Type, Func <Type, string> >() { { typeof(Type), o => $"typeof({o.Name})" } } }; // Act var dump = ObjectDumperCSharp.Dump(typeMap, dumpOptions); // Assert this.testOutputHelper.WriteLine(dump); dump.Should().NotBeNull(); dump.Should().Be("var typeMap = new TypeMap\r\n{\r\n Map = new Dictionary<Type, Type>\r\n {\r\n { typeof(KeyTypeOne), typeof(HandlerTypeOne) },\r\n { typeof(KeyTypeTwo), typeof(HandlerTypeTwo) }\r\n }\r\n};"); }
public void ShouldDumpObjectWithMaxLevel() { // Arrange var persons = PersonFactory.GeneratePersons(count: 2).ToList(); var organization = new Organization { Name = "superdev gmbh", Persons = persons }; var options = new DumpOptions { MaxLevel = 1 }; // Act var dump = ObjectDumperCSharp.Dump(organization, options); // Assert this.testOutputHelper.WriteLine(dump); dump.Should().NotBeNull(); dump.Should().Be( "var organization = new Organization\r\n" + "{\r\n" + " Name = \"superdev gmbh\",\r\n" + " Persons = new List<Person>\r\n" + " {\r\n" + " },\r\n" + " IsAfterCollection = true\r\n" + "};"); }
public void ShouldDumpGenericClass_WithMultipleGenericTypeArguments() { // Arrange var person = PersonFactory.GeneratePersons(count: 1).First(); var genericClass = new GenericClass <string, float, Person> { Prop1 = "Test", Prop2 = 123.45f, Prop3 = person }; // Act var dump = ObjectDumperCSharp.Dump(genericClass); // Assert this.testOutputHelper.WriteLine(dump); dump.Should().NotBeNull(); dump.Should().Be( "var genericClass = new GenericClass<string, float, Person>\r\n" + "{\r\n" + " Prop1 = \"Test\",\r\n" + " Prop2 = 123.45f,\r\n" + " Prop3 = new Person\r\n" + " {\r\n" + " Name = \"Person 1\",\r\n" + " Char = '',\r\n" + " Age = 2,\r\n" + " GetOnly = 11,\r\n" + " Bool = false,\r\n Byte = 0,\r\n ByteArray = new byte[]\r\n {\r\n 1,\r\n 2,\r\n 3,\r\n 4\r\n },\r\n SByte = 0,\r\n Float = 0f,\r\n Uint = 0u,\r\n Long = 0L,\r\n ULong = 0UL,\r\n Short = 0,\r\n UShort = 0,\r\n Decimal = 0m,\r\n Double = 0d,\r\n DateTime = DateTime.MinValue,\r\n NullableDateTime = null,\r\n Enum = DateTimeKind.Unspecified\r\n }\r\n};"); }
public void ShouldDumpValueOfBuiltInType(object value, string expectedOutput) { // Act var dump = ObjectDumperCSharp.Dump(value); // Assert this.testOutputHelper.WriteLine(dump); dump.Should().NotBeNull(); dump.Should().Be(expectedOutput); }
public void ShouldDumpEnumerable() { // Arrange var persons = PersonFactory.GeneratePersons(count: 2).ToList(); // Act var dump = ObjectDumperCSharp.Dump(persons); // Assert this.testOutputHelper.WriteLine(dump); dump.Should().NotBeNull(); dump.Should().Be( "var listOfPersons = new List<Person>\r\n" + "{\r\n" + " new Person\r\n" + " {\r\n" + " Name = \"Person 1\",\r\n" + " Char = '',\r\n" + " Age = 3,\r\n" + " GetOnly = 11,\r\n" + " Bool = false,\r\n" + " Byte = 0,\r\n" + " ByteArray = new byte[]\r\n" + " {\r\n 1,\r\n 2,\r\n 3,\r\n 4\r\n },\r\n SByte = 0,\r\n Float = 0f,\r\n Uint = 0u,\r\n Long = 0L,\r\n ULong = 0UL,\r\n Short = 0,\r\n UShort = 0,\r\n Decimal = 0m,\r\n Double = 0d,\r\n DateTime = DateTime.MinValue,\r\n NullableDateTime = null,\r\n Enum = DateTimeKind.Unspecified\r\n" + " },\r\n" + " new Person\r\n" + " {\r\n" + " Name = \"Person 2\",\r\n" + " Char = '',\r\n" + " Age = 3,\r\n" + " GetOnly = 11,\r\n" + " Bool = false,\r\n" + " Byte = 0,\r\n" + " ByteArray = new byte[]\r\n" + " {\r\n" + " 1,\r\n" + " 2,\r\n" + " 3,\r\n" + " 4\r\n" + " },\r\n" + " SByte = 0,\r\n" + " Float = 0f,\r\n" + " Uint = 0u,\r\n" + " Long = 0L,\r\n" + " ULong = 0UL,\r\n" + " Short = 0,\r\n" + " UShort = 0,\r\n" + " Decimal = 0m,\r\n" + " Double = 0d,\r\n" + " DateTime = DateTime.MinValue,\r\n" + " NullableDateTime = null,\r\n" + " Enum = DateTimeKind.Unspecified\r\n" + " }\r\n" + "};"); }
public void ShouldDumpDateTimeMinValue() { // Arrange var datetime = DateTime.MinValue; // Act var dump = ObjectDumperCSharp.Dump(datetime); // Assert this.testOutputHelper.WriteLine(dump); dump.Should().NotBeNull(); dump.Should().Be("var dateTime = DateTime.MinValue;"); }
public void ShouldDumpGuid() { // Arrange var guid = new Guid("024CC229-DEA0-4D7A-9FC8-722E3A0C69A3"); // Act var dump = ObjectDumperCSharp.Dump(guid); // Assert this.testOutputHelper.WriteLine(dump); dump.Should().NotBeNull(); dump.Should().Be("var guid = new Guid(\"024cc229-dea0-4d7a-9fc8-722e3a0c69a3\");"); }
public void ShouldDumpDateTimeOffsetMaxValue() { // Arrange var offset = DateTimeOffset.MaxValue; // Act var dump = ObjectDumperCSharp.Dump(offset); // Assert this.testOutputHelper.WriteLine(dump); dump.Should().NotBeNull(); dump.Should().Be($"var dateTimeOffset = DateTimeOffset.MaxValue;"); }
public void ShouldDumpRuntimeType_BuiltInType() { // Arrange var type = typeof(string); // Act var dump = ObjectDumperCSharp.Dump(type); // Assert this.testOutputHelper.WriteLine(dump); dump.Should().NotBeNull(); dump.Should().Be("var runtimeType = typeof(string);"); }
public void ShouldDumpCultureInfo() { // Arrange var cultureInfo = new CultureInfo("de-CH"); // Act var dump = ObjectDumperCSharp.Dump(cultureInfo); // Assert this.testOutputHelper.WriteLine(dump); dump.Should().NotBeNull(); dump.Should().Be("var cultureInfo = new CultureInfo(\"de-CH\");"); }
public void ShouldDumpArray_OneDimensional() { // Arrange var array = new string[] { "aaa", "bbb" }; // Act var dump = ObjectDumperCSharp.Dump(array); // Assert this.testOutputHelper.WriteLine(dump); dump.Should().NotBeNull(); dump.Should().Be("var stringArray = new string[]\r\n{\r\n \"aaa\",\r\n \"bbb\"\r\n};"); }
public void ShouldDumpEnumerable() { // Arrange var persons = PersonFactory.GeneratePersons(count: 2).ToList(); // Act var dump = ObjectDumperCSharp.Dump(persons); // Assert this.testOutputHelper.WriteLine(dump); dump.Should().NotBeNull(); dump.Should().Be("var listPerson = new List<Person>\n\r{\n\r new Person\n\r {\n\r Name = \"Person 1\",\n\r Char = '',\n\r Age = 3,\n\r GetOnly = 11,\n\r Bool = false,\n\r Byte = 0,\n\r ByteArray = new Byte[]\n\r {\n\r 1,\n\r 2,\n\r 3,\n\r 4\n\r },\n\r SByte = 0,\n\r Float = 0f,\n\r Uint = 0,\n\r Long = 0L,\n\r ULong = 0L,\n\r Short = 0,\n\r UShort = 0,\n\r Decimal = 0m,\n\r Double = 0d,\n\r DateTime = DateTime.MinValue,\n\r NullableDateTime = null,\n\r Enum = System.DateTimeKind.Unspecified\n\r },\n\r new Person\n\r {\n\r Name = \"Person 2\",\n\r Char = '',\n\r Age = 3,\n\r GetOnly = 11,\n\r Bool = false,\n\r Byte = 0,\n\r ByteArray = new Byte[]\n\r {\n\r 1,\n\r 2,\n\r 3,\n\r 4\n\r },\n\r SByte = 0,\n\r Float = 0f,\n\r Uint = 0,\n\r Long = 0L,\n\r ULong = 0L,\n\r Short = 0,\n\r UShort = 0,\n\r Decimal = 0m,\n\r Double = 0d,\n\r DateTime = DateTime.MinValue,\n\r NullableDateTime = null,\n\r Enum = System.DateTimeKind.Unspecified\n\r }\n\r};"); }
public void ShouldDumpRuntimeType() { // Arrange var type = typeof(Person); // Act var dump = ObjectDumperCSharp.Dump(type); // Assert this.testOutputHelper.WriteLine(dump); dump.Should().NotBeNull(); dump.Should().Be("var runtimeType = typeof(ObjectDumping.Tests.Testdata.Person);"); }
public void ShouldDumpValueTuple_Arity0() { // Arrange var valueTuple = ValueTuple.Create(); // Act var dump = ObjectDumperCSharp.Dump(valueTuple); // Assert this.testOutputHelper.WriteLine(dump); dump.Should().NotBeNull(); dump.Should().Be("var valueTuple = ValueTuple.Create();"); }
public void ShouldDumpEnum() { // Arrange var dateTimeKind = DateTimeKind.Utc; // Act var dump = ObjectDumperCSharp.Dump(dateTimeKind); // Assert this.testOutputHelper.WriteLine(dump); dump.Should().NotBeNull(); dump.Should().Be("var dateTimeKind = System.DateTimeKind.Utc;"); }
public void ShouldDumpObject() { // Arrange var person = PersonFactory.GetPersonThomas(); // Act var dump = ObjectDumperCSharp.Dump(person); // Assert this.testOutputHelper.WriteLine(dump); dump.Should().NotBeNull(); dump.Should().Be("var person = new Person\r\n{\r\n Name = \"Thomas\",\r\n Char = '',\r\n Age = 30,\r\n GetOnly = 11,\r\n Bool = false,\r\n Byte = 0,\r\n ByteArray = new Byte[]\r\n {\r\n 1,\r\n 2,\r\n 3,\r\n 4\r\n },\r\n SByte = 0,\r\n Float = 0f,\r\n Uint = 0,\r\n Long = 0L,\r\n ULong = 0L,\r\n Short = 0,\r\n UShort = 0,\r\n Decimal = 0m,\r\n Double = 0d,\r\n DateTime = DateTime.MinValue,\r\n NullableDateTime = null,\r\n Enum = System.DateTimeKind.Unspecified\r\n};"); }
public void ShouldDumpDateTimeOffset() { // Arrange var offset = new DateTimeOffset(2000, 01, 01, 23, 59, 59, TimeSpan.Zero); // Act var dump = ObjectDumperCSharp.Dump(offset); // Assert this.testOutputHelper.WriteLine(dump); dump.Should().NotBeNull(); dump.Should().Be($"var dateTimeOffset = DateTimeOffset.ParseExact(\"2000-01-01T23:59:59.0000000+00:00\", \"O\", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind);"); }
public void ShouldDumpValueTuple_WithDefaultValue() { // Arrange (int Id, string FirstName, string LastName)valueTuple = default; // Act var dump = ObjectDumperCSharp.Dump(valueTuple); // Assert this.testOutputHelper.WriteLine(dump); dump.Should().NotBeNull(); dump.Should().Be("var valueTuple = (0, null, null);"); }
public void ShouldDumpValueTuple_Arity3() { // Arrange var valueTuple = (1, "Bill", "Gates"); // Act var dump = ObjectDumperCSharp.Dump(valueTuple); // Assert this.testOutputHelper.WriteLine(dump); dump.Should().NotBeNull(); dump.Should().Be("var valueTuple = (1, \"Bill\", \"Gates\");"); }
public void ShouldDumpNullableObject() { // Arrange DateTime?datetime = null; // Act var dump = ObjectDumperCSharp.Dump(datetime); // Assert this.testOutputHelper.WriteLine(dump); dump.Should().NotBeNull(); dump.Should().Be("var x = null;"); }
public void ShouldDumpEnum_WithMultipleFlags() { // Arrange var methodAttributes = MethodAttributes.PrivateScope | MethodAttributes.Public | MethodAttributes.Static | MethodAttributes.HideBySig; // Act var dump = ObjectDumperCSharp.Dump(methodAttributes); // Assert this.testOutputHelper.WriteLine(dump); dump.Should().NotBeNull(); dump.Should().Be("var methodAttributes = MethodAttributes.PrivateScope | MethodAttributes.Public | MethodAttributes.Static | MethodAttributes.HideBySig;"); }
/// <summary> /// Serializes the given <see cref="element" /> to string with additional options <see cref="dumpOptions" />. /// </summary> /// <param name="element">Object to be dumped to string using the given <paramref name="dumpOptions" />.</param> /// <param name="dumpOptions">Further options to customize the dump output.</param> /// <returns></returns> public static string Dump(object element, DumpOptions dumpOptions) { if (dumpOptions == null) { dumpOptions = new DumpOptions(); } if (dumpOptions.DumpStyle == DumpStyle.Console) { return(ObjectDumperConsole.Dump(element, dumpOptions)); } return(ObjectDumperCSharp.Dump(element, dumpOptions)); }
public void ShouldDumpRecursiveTypes_RecursivePerson() { // Arrange var person = new RecursivePerson(); person.Parent = person; // Act var dump = ObjectDumperCSharp.Dump(person); // Assert this.testOutputHelper.WriteLine(dump); dump.Should().NotBeNull(); dump.Should().Be("var recursivePerson = new RecursivePerson\r\n{\r\n};"); }
public void ShouldDumpNestedObjects() { // Arrange var persons = PersonFactory.GeneratePersons(count: 2).ToList(); var organization = new Organization { Name = "superdev gmbh", Persons = persons }; // Act var dump = ObjectDumperCSharp.Dump(organization); // Assert this.testOutputHelper.WriteLine(dump); dump.Should().NotBeNull(); dump.Should().Be("var organization = new Organization\r\n{\r\n Name = \"superdev gmbh\",\r\n Persons = new List<Person>\r\n {\r\n new Person\r\n {\r\n Name = \"Person 1\",\r\n Char = '',\r\n Age = 3,\r\n GetOnly = 11,\r\n Bool = false,\r\n Byte = 0,\r\n ByteArray = new Byte[]\r\n {\r\n 1,\r\n 2,\r\n 3,\r\n 4\r\n },\r\n SByte = 0,\r\n Float = 0f,\r\n Uint = 0,\r\n Long = 0L,\r\n ULong = 0L,\r\n Short = 0,\r\n UShort = 0,\r\n Decimal = 0m,\r\n Double = 0d,\r\n DateTime = DateTime.MinValue,\r\n NullableDateTime = null,\r\n Enum = System.DateTimeKind.Unspecified\r\n },\r\n new Person\r\n {\r\n Name = \"Person 2\",\r\n Char = '',\r\n Age = 3,\r\n GetOnly = 11,\r\n Bool = false,\r\n Byte = 0,\r\n ByteArray = new Byte[]\r\n {\r\n 1,\r\n 2,\r\n 3,\r\n 4\r\n },\r\n SByte = 0,\r\n Float = 0f,\r\n Uint = 0,\r\n Long = 0L,\r\n ULong = 0L,\r\n Short = 0,\r\n UShort = 0,\r\n Decimal = 0m,\r\n Double = 0d,\r\n DateTime = DateTime.MinValue,\r\n NullableDateTime = null,\r\n Enum = System.DateTimeKind.Unspecified\r\n }\r\n }\r\n};"); }
public void ShouldDumpMultipleGenericTypes() { // Arrange var person = PersonFactory.GeneratePersons(count: 1).First(); var genericClass = new GenericClass <string, float, Person> { Prop1 = "Test", Prop2 = 123.45f, Prop3 = person }; // Act var dump = ObjectDumperCSharp.Dump(genericClass); // Assert this.testOutputHelper.WriteLine(dump); dump.Should().NotBeNull(); dump.Should().Be("var genericClass = new GenericClass<String, Single, Person>\n\r{\n\r Prop1 = \"Test\",\n\r Prop2 = 123.45f,\n\r Prop3 = new Person\n\r {\n\r Name = \"Person 1\",\n\r Char = '',\n\r Age = 2,\n\r GetOnly = 11,\n\r Bool = false,\n\r Byte = 0,\n\r ByteArray = new Byte[]\n\r {\n\r 1,\n\r 2,\n\r 3,\n\r 4\n\r },\n\r SByte = 0,\n\r Float = 0f,\n\r Uint = 0,\n\r Long = 0L,\n\r ULong = 0L,\n\r Short = 0,\n\r UShort = 0,\n\r Decimal = 0m,\n\r Double = 0d,\n\r DateTime = DateTime.MinValue,\n\r NullableDateTime = null,\n\r Enum = System.DateTimeKind.Unspecified\n\r }\n\r};"); }
public void ShouldDumpEnumerable_EmptyCollection() { // Arrange var persons = new List <Person>(); // Act var dump = ObjectDumperCSharp.Dump(persons); // Assert this.testOutputHelper.WriteLine(dump); dump.Should().NotBeNull(); dump.Should().Be( "var listOfPersons = new List<Person>\r\n" + "{\r\n" + "};"); }
public void ShouldDumpDateTime_DateTimeKind_Local() { // Arrange var dateTime = new DateTime(2000, 01, 01, 23, 59, 59, DateTimeKind.Local); // Act var dump = ObjectDumperCSharp.Dump(dateTime); // Assert this.testOutputHelper.WriteLine(dump); dump.Should().NotBeNull(); dump.Should().Be($"var dateTime = DateTime.ParseExact(\"2000-01-01T23:59:59.0000000{GetUtcOffsetString()}\", \"O\", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind);"); var returnedDateTime = DateTime.ParseExact($"2000-01-01T23:59:59.0000000{GetUtcOffsetString()}", "O", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind); returnedDateTime.Should().Be(dateTime); }