From 5057d9f98e6d8a81a363a11994f550d4c0341169 Mon Sep 17 00:00:00 2001
From: smurtdev <12476464+smurtdev@users.noreply.github.com>
Date: Sun, 26 Apr 2026 23:39:00 +0200
Subject: [PATCH] Add configurable newline option for dump output
---
src/VarDump/CSharpDumper.cs | 23 +++-
src/VarDump/Visitor/DumpOptions.cs | 28 ++++-
src/VarDump/VisualBasicDumper.cs | 23 +++-
.../VarDumpExtensionsSpec.cs | 6 +-
test/VarDump.UnitTests/AnonymousTypeSpec.cs | 4 +-
test/VarDump.UnitTests/ArraySpec.cs | 34 +++---
test/VarDump.UnitTests/CollectionSpec.cs | 14 +--
.../VarDump.UnitTests/CustomCollectionSpec.cs | 8 +-
test/VarDump.UnitTests/CustomNewLineSpec.cs | 2 +-
test/VarDump.UnitTests/DataTableSpec.cs | 2 +-
test/VarDump.UnitTests/DateTimeSpec.cs | 20 ++--
test/VarDump.UnitTests/DictionarySpec.cs | 12 +--
test/VarDump.UnitTests/DnsEndPointSpec.cs | 4 +-
test/VarDump.UnitTests/EnumerableQuerySpec.cs | 4 +-
test/VarDump.UnitTests/EnumerableRangeSpec.cs | 4 +-
test/VarDump.UnitTests/FlagsSpec.cs | 12 +--
.../FrozenCollectionsNet8Spec.cs | 8 +-
.../GroupingCollectionSpec.cs | 4 +-
test/VarDump.UnitTests/IgnoreIndexersSpec.cs | 4 +-
.../IgnoreReadonlyPropertiesSpec.cs | 6 +-
.../IndentStringOptionSpec.cs | 2 +-
test/VarDump.UnitTests/InheritanceSpec.cs | 8 +-
test/VarDump.UnitTests/IntegralTypesSpec.cs | 22 ++--
test/VarDump.UnitTests/IpAddressSpec.cs | 4 +-
test/VarDump.UnitTests/IpEndPointSpec.cs | 4 +-
.../KeyValuePairArraySpec.cs | 8 +-
test/VarDump.UnitTests/KnownObjectsSpec.cs | 12 +--
test/VarDump.UnitTests/LazinessSpec.cs | 2 +-
test/VarDump.UnitTests/NewLineOptionSpec.cs | 101 ++++++++++++++++++
test/VarDump.UnitTests/NullableSpec.cs | 4 +-
.../ObjectDescriptorMiddlewareSpec.cs | 30 +++---
.../PredefinedConstantsSpec.cs | 24 ++---
test/VarDump.UnitTests/PrimitiveTypesSpec.cs | 4 +-
.../ReadonlyCollectionInitializerSpec.cs | 4 +-
.../RecordReferenceTypeSpec.cs | 8 +-
test/VarDump.UnitTests/RegexSpec.cs | 8 +-
.../TooManyItemsCollectionSpec.cs | 10 +-
test/VarDump.UnitTests/TupleArraySpec.cs | 8 +-
test/VarDump.UnitTests/UriSpec.cs | 8 +-
test/VarDump.UnitTests/ValueTupleArraySpec.cs | 8 +-
test/VarDump.UnitTests/VariableNameSpec.cs | 4 +-
test/VarDump.UnitTests/VersionSpec.cs | 4 +-
42 files changed, 337 insertions(+), 172 deletions(-)
create mode 100644 test/VarDump.UnitTests/NewLineOptionSpec.cs
diff --git a/src/VarDump/CSharpDumper.cs b/src/VarDump/CSharpDumper.cs
index 3250df8..4fc6b78 100644
--- a/src/VarDump/CSharpDumper.cs
+++ b/src/VarDump/CSharpDumper.cs
@@ -34,11 +34,18 @@ private void ValidateOptions(DumpOptions options)
{
throw new FormatException($"Bad format specifier. {options.IntegralNumericFormat}");
}
+ if (options.NewLine == null)
+ {
+ throw new ArgumentNullException(nameof(options.NewLine));
+ }
}
public string Dump(object obj)
{
- using var writer = new StringWriter();
+ using var writer = new StringWriter
+ {
+ NewLine = _options.NewLine
+ };
DumpImpl(obj, writer);
@@ -54,7 +61,19 @@ public void Dump(object obj, TextWriter textWriter)
throw new ArgumentNullException(nameof(textWriter));
}
- DumpImpl(obj, textWriter);
+ var originalNewLine = textWriter.NewLine;
+ try
+ {
+ if (_options.IsNewLineSpecified)
+ {
+ textWriter.NewLine = _options.NewLine;
+ }
+ DumpImpl(obj, textWriter);
+ }
+ finally
+ {
+ textWriter.NewLine = originalNewLine;
+ }
}
private void DumpImpl(object obj, TextWriter textWriter)
diff --git a/src/VarDump/Visitor/DumpOptions.cs b/src/VarDump/Visitor/DumpOptions.cs
index bec7c43..b055c47 100644
--- a/src/VarDump/Visitor/DumpOptions.cs
+++ b/src/VarDump/Visitor/DumpOptions.cs
@@ -87,6 +87,23 @@ public class DumpOptions
///
public int MaxDepth { get; set; } = 25;
+ private string _newLine = Environment.NewLine;
+
+ ///
+ /// The newline string to use when dumping, default is .
+ ///
+ public string NewLine
+ {
+ get => _newLine;
+ set
+ {
+ _newLine = value;
+ IsNewLineSpecified = true;
+ }
+ }
+
+ internal bool IsNewLineSpecified { get; private set; }
+
///
/// The layout to use for primitive collections, default is .
///
@@ -150,7 +167,7 @@ public bool WritablePropertiesOnly
public DumpOptions Clone()
{
- return new DumpOptions
+ var clone = new DumpOptions
{
ConfigureKnownObjects = ConfigureKnownObjects,
DateKind = DateKind,
@@ -174,5 +191,12 @@ public DumpOptions Clone()
UsePredefinedMethods = UsePredefinedMethods,
TypeNamePolicy = TypeNamePolicy
};
+
+ if (IsNewLineSpecified)
+ {
+ clone.NewLine = NewLine;
+ }
+
+ return clone;
}
-}
\ No newline at end of file
+}
diff --git a/src/VarDump/VisualBasicDumper.cs b/src/VarDump/VisualBasicDumper.cs
index e0f39f8..d4be56d 100644
--- a/src/VarDump/VisualBasicDumper.cs
+++ b/src/VarDump/VisualBasicDumper.cs
@@ -34,11 +34,18 @@ private void ValidateOptions(DumpOptions options)
{
throw new FormatException($"Bad format specifier. {options.IntegralNumericFormat}");
}
+ if (options.NewLine == null)
+ {
+ throw new ArgumentNullException(nameof(options.NewLine));
+ }
}
public string Dump(object obj)
{
- using var writer = new StringWriter();
+ using var writer = new StringWriter
+ {
+ NewLine = _options.NewLine
+ };
DumpImpl(obj, writer);
@@ -54,7 +61,19 @@ public void Dump(object obj, TextWriter textWriter)
throw new ArgumentNullException(nameof(textWriter));
}
- DumpImpl(obj, textWriter);
+ var originalNewLine = textWriter.NewLine;
+ try
+ {
+ if (_options.IsNewLineSpecified)
+ {
+ textWriter.NewLine = _options.NewLine;
+ }
+ DumpImpl(obj, textWriter);
+ }
+ finally
+ {
+ textWriter.NewLine = originalNewLine;
+ }
}
private void DumpImpl(object obj, TextWriter textWriter)
diff --git a/test/VarDump.Extensions.UnitTests/VarDumpExtensionsSpec.cs b/test/VarDump.Extensions.UnitTests/VarDumpExtensionsSpec.cs
index baf4ebc..8220022 100644
--- a/test/VarDump.Extensions.UnitTests/VarDumpExtensionsSpec.cs
+++ b/test/VarDump.Extensions.UnitTests/VarDumpExtensionsSpec.cs
@@ -37,7 +37,7 @@ public void DumpAnonymousTypeCSharp()
}
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -86,7 +86,7 @@ public void DumpAnonymousTypeCustomOptionsCSharp()
}
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -117,6 +117,6 @@ New With {
}
}
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
}
\ No newline at end of file
diff --git a/test/VarDump.UnitTests/AnonymousTypeSpec.cs b/test/VarDump.UnitTests/AnonymousTypeSpec.cs
index 0e0ca82..77ae84f 100644
--- a/test/VarDump.UnitTests/AnonymousTypeSpec.cs
+++ b/test/VarDump.UnitTests/AnonymousTypeSpec.cs
@@ -38,7 +38,7 @@ public void DumpAnonymousTypeCSharp()
}
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -69,7 +69,7 @@ New With {
}
}
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
diff --git a/test/VarDump.UnitTests/ArraySpec.cs b/test/VarDump.UnitTests/ArraySpec.cs
index de2e4a8..d197259 100644
--- a/test/VarDump.UnitTests/ArraySpec.cs
+++ b/test/VarDump.UnitTests/ArraySpec.cs
@@ -26,7 +26,7 @@ public void DumpArrayOfArraysCSharp()
}
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -48,7 +48,7 @@ public void DumpArrayOfArraysCSharpSingleLine()
new int[]{ 1, 2, 3 }
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -75,7 +75,7 @@ public void Dump2DimensionalArrayCSharpSingleLine()
{ 4, 5, 6 }
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -114,7 +114,7 @@ public void DumpMultidimensionalArrayCSharpSingleLine()
}
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -130,7 +130,7 @@ public void DumpEmptyArrayCSharp()
"""
var arrayOfInt = new int[0, 0];
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -152,7 +152,7 @@ public void DumpImmutableArrayOfArraysCSharp()
}
}.ToImmutableArray();
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -179,7 +179,7 @@ public void Dump2DimensionalArrayCSharp()
}
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -208,7 +208,7 @@ public void Dump2DimensionalAnonymousArrayCSharp()
}
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -233,7 +233,7 @@ public void DumpArrayOfArraysAnonymousCSharp()
}
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -253,7 +253,7 @@ New Integer(){
}
}
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -274,7 +274,7 @@ public void DumpArrayOfArraysVbSingleLine()
New Integer(){ 1, 2, 3 }
}
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -300,7 +300,7 @@ public void Dump2DimensionalArrayVbSingleLine()
{ 4, 5, 6 }
}
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -338,7 +338,7 @@ public void DumpMultidimensionalArrayVisualBasicSingleLine()
}
}
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -354,7 +354,7 @@ public void DumpEmptyArrayVb()
"""
Dim arrayOfInteger = New Integer(0, 0) {}
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -380,7 +380,7 @@ public void Dump2DimensionalArrayVb()
}
}
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -406,7 +406,7 @@ New With {
}
}
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -428,6 +428,6 @@ New With {
}
}
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
}
\ No newline at end of file
diff --git a/test/VarDump.UnitTests/CollectionSpec.cs b/test/VarDump.UnitTests/CollectionSpec.cs
index 0fde9ec..6ea7f97 100644
--- a/test/VarDump.UnitTests/CollectionSpec.cs
+++ b/test/VarDump.UnitTests/CollectionSpec.cs
@@ -23,7 +23,7 @@ public void DumpReadOnlyCollectionCSharp()
1
}.AsReadOnly();
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -38,7 +38,7 @@ public void DumpReadOnlyCollectionSingleLineCSharp()
Assert.Equal("""
var readOnlyCollectionOfInt = new List { 1 }.AsReadOnly();
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -58,7 +58,7 @@ public void DumpEnumerableRangeCSharp()
2
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -83,7 +83,7 @@ public void DumpListOfListsCSharpSingleLine()
new List { 1, 2, 3 }
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -101,7 +101,7 @@ public void DumpReadOnlyCollectionVisualBasic()
1
}.AsReadOnly()
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -116,7 +116,7 @@ public void DumpReadOnlyCollectionSingleLineVisualBasic()
Assert.Equal("""
Dim readOnlyCollectionOfInteger = New List(Of Integer) From { 1 }.AsReadOnly()
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -140,6 +140,6 @@ public void DumpListOfListsVisualBasicSingleLine()
New List(Of Integer) From { 1, 2, 3 }
}
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
}
\ No newline at end of file
diff --git a/test/VarDump.UnitTests/CustomCollectionSpec.cs b/test/VarDump.UnitTests/CustomCollectionSpec.cs
index fe7ce8e..80718f4 100644
--- a/test/VarDump.UnitTests/CustomCollectionSpec.cs
+++ b/test/VarDump.UnitTests/CustomCollectionSpec.cs
@@ -36,7 +36,7 @@ New Cat With {
}
}
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -74,7 +74,7 @@ public void DumpCustomPublicCollectionCSharp()
}
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -108,7 +108,7 @@ New Cat With {
}
}
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -146,7 +146,7 @@ public void DumpCustomNonPublicCollectionCSharp()
}
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
}
\ No newline at end of file
diff --git a/test/VarDump.UnitTests/CustomNewLineSpec.cs b/test/VarDump.UnitTests/CustomNewLineSpec.cs
index 5db7617..9c6cd4e 100644
--- a/test/VarDump.UnitTests/CustomNewLineSpec.cs
+++ b/test/VarDump.UnitTests/CustomNewLineSpec.cs
@@ -27,6 +27,6 @@ public void DumpWithModifiedNewLine()
dumper.Dump(obj, stringWriter);
var result = stringWriter.ToString();
- Assert.Equal("var anonymousType = new \n{\n Level1 = new \n {\n Level2 = new \n {\n Level3 = \"Level3\"\n }\n }\n};\n", result);
+ Assert.Equal("var anonymousType = new \n{\n Level1 = new \n {\n Level2 = new \n {\n Level3 = \"Level3\"\n }\n }\n};\n", result, ignoreLineEndingDifferences: true);
}
}
\ No newline at end of file
diff --git a/test/VarDump.UnitTests/DataTableSpec.cs b/test/VarDump.UnitTests/DataTableSpec.cs
index 019f8c1..e310514 100644
--- a/test/VarDump.UnitTests/DataTableSpec.cs
+++ b/test/VarDump.UnitTests/DataTableSpec.cs
@@ -67,7 +67,7 @@ public void DumpDataTableCSharp()
var result = dumper.Dump(products);
- Assert.Equal(@"", result);
+ Assert.Equal(@"", result, ignoreLineEndingDifferences: true);
}
}
diff --git a/test/VarDump.UnitTests/DateTimeSpec.cs b/test/VarDump.UnitTests/DateTimeSpec.cs
index c10a6e0..9441288 100644
--- a/test/VarDump.UnitTests/DateTimeSpec.cs
+++ b/test/VarDump.UnitTests/DateTimeSpec.cs
@@ -30,7 +30,7 @@ public async Task DumpDateTimeCSharp()
var evaluatedResult = await CSharpScript.EvaluateAsync(result, ScriptOptions.Default.WithImports("System"));
Assert.Equal(dateTime.ToUniversalTime(), evaluatedResult.ToUniversalTime());
- Assert.Equal(expectedResult, result);
+ Assert.Equal(expectedResult, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -51,7 +51,7 @@ public void DumpDateTimeWithArgumentNamesCSharp()
var result = dumper.Dump(dateTime);
- Assert.Equal(expectedResult, result);
+ Assert.Equal(expectedResult, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -73,7 +73,7 @@ public async Task DumpDateTimeOffsetNewCSharp()
var evaluatedResult = await CSharpScript.EvaluateAsync(result, ScriptOptions.Default.WithImports("System"));
Assert.Equal(dateTimeOffset, evaluatedResult);
- Assert.Equal(expectedResult, result);
+ Assert.Equal(expectedResult, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -93,7 +93,7 @@ public void DumpDateTimeOffsetWithArgumentNamesNewCSharp()
var result = dumper.Dump(dateTimeOffset);
- Assert.Equal(expectedResult, result);
+ Assert.Equal(expectedResult, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -113,7 +113,7 @@ public void DumpDateTimeVb()
var result = dumper.Dump(dateTime);
- Assert.Equal(expectedResult, result);
+ Assert.Equal(expectedResult, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -129,7 +129,7 @@ public void DumpDateTimeOffsetCSharp()
"""
var dateTimeOffset = DateTimeOffset.ParseExact("2022-06-24T11:59:21.7961218+03:00", "O", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind);
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -155,7 +155,7 @@ public void DumpDateOnlyCSharp()
DateOnly = DateOnly.ParseExact("2022-12-10", "O")
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -180,7 +180,7 @@ public void DumpTimeOnlyCSharp()
TimeOnly = TimeOnly.ParseExact("22:55:33.1220000", "O")
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -204,7 +204,7 @@ public void DumpDateOnlyVb()
.DateOnly = DateOnly.ParseExact("2022-12-10", "O")
}
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -228,6 +228,6 @@ public void DumpTimeOnlyVb()
.TimeOnly = TimeOnly.ParseExact("22:55:33.1220000", "O")
}
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
}
\ No newline at end of file
diff --git a/test/VarDump.UnitTests/DictionarySpec.cs b/test/VarDump.UnitTests/DictionarySpec.cs
index 3751ee1..aad3a93 100644
--- a/test/VarDump.UnitTests/DictionarySpec.cs
+++ b/test/VarDump.UnitTests/DictionarySpec.cs
@@ -41,7 +41,7 @@ New Person With {
}
}
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -78,7 +78,7 @@ public void DumpDictionaryCSharp()
}
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -118,7 +118,7 @@ public void DumpDictionaryOfAnonymousTypeCSharp()
}
}.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -161,7 +161,7 @@ public void DumpDictionaryOfTypeArrayCSharp()
}
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -185,7 +185,7 @@ public void DumpImmutableDictionaryCSharp()
}
}.ToImmutableDictionary();
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -208,6 +208,6 @@ public void DumpImmutableDictionaryVb()
}
}.ToImmutableDictionary()
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
}
\ No newline at end of file
diff --git a/test/VarDump.UnitTests/DnsEndPointSpec.cs b/test/VarDump.UnitTests/DnsEndPointSpec.cs
index f6f7f00..5e9792c 100644
--- a/test/VarDump.UnitTests/DnsEndPointSpec.cs
+++ b/test/VarDump.UnitTests/DnsEndPointSpec.cs
@@ -18,7 +18,7 @@ public void DumpDnsEndPointCSharp()
"""
var dnsEndPoint = new DnsEndPoint("google.com", 12345);
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
@@ -35,6 +35,6 @@ public void DumpDnsEndPointVb()
"""
Dim dnsEndPointValue = New DnsEndPoint("google.com", 12345)
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
}
\ No newline at end of file
diff --git a/test/VarDump.UnitTests/EnumerableQuerySpec.cs b/test/VarDump.UnitTests/EnumerableQuerySpec.cs
index 38407f5..dea0a80 100644
--- a/test/VarDump.UnitTests/EnumerableQuerySpec.cs
+++ b/test/VarDump.UnitTests/EnumerableQuerySpec.cs
@@ -22,7 +22,7 @@ public void DumpEnumerableQueryCSharp()
6
}.AsQueryable();
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -41,6 +41,6 @@ public void DumpEnumerableQueryVb()
6
}.AsQueryable()
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
}
\ No newline at end of file
diff --git a/test/VarDump.UnitTests/EnumerableRangeSpec.cs b/test/VarDump.UnitTests/EnumerableRangeSpec.cs
index 88ef85c..6d6412c 100644
--- a/test/VarDump.UnitTests/EnumerableRangeSpec.cs
+++ b/test/VarDump.UnitTests/EnumerableRangeSpec.cs
@@ -30,7 +30,7 @@ public void DumpAnonymousTypeCSharp()
}
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -55,6 +55,6 @@ New With {
}
}
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
}
\ No newline at end of file
diff --git a/test/VarDump.UnitTests/FlagsSpec.cs b/test/VarDump.UnitTests/FlagsSpec.cs
index 641259f..e5c1244 100644
--- a/test/VarDump.UnitTests/FlagsSpec.cs
+++ b/test/VarDump.UnitTests/FlagsSpec.cs
@@ -14,7 +14,7 @@ public void DumpFlagsCSharp()
var result = dumper.Dump(flagsVar);
- Assert.Equal("var testEnum = TestEnum.First | TestEnum.Third;\r\n", result);
+ Assert.Equal("var testEnum = TestEnum.First | TestEnum.Third;\r\n", result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -26,7 +26,7 @@ public void DumpFlagsCSharp_Zero()
var result = dumper.Dump(flagsVar);
- Assert.Equal("var testEnum = 0;\r\n", result);
+ Assert.Equal("var testEnum = 0;\r\n", result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -38,7 +38,7 @@ public void DumpEnumCSharp_Minus54()
var result = dumper.Dump(flagsVar);
- Assert.Equal("var testEnum = (TestEnum)(object)-54;\r\n", result);
+ Assert.Equal("var testEnum = (TestEnum)(object)-54;\r\n", result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -50,7 +50,7 @@ public void DumpFlagsVb()
var result = dumper.Dump(flagsVar);
- Assert.Equal("Dim testEnumValue = TestEnum.Second Or TestEnum.Third\r\n", result);
+ Assert.Equal("Dim testEnumValue = TestEnum.Second Or TestEnum.Third\r\n", result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -62,7 +62,7 @@ public void DumpFlagsVB_Zero()
var result = dumper.Dump(flagsVar);
- Assert.Equal("Dim testEnumValue = 0\r\n", result);
+ Assert.Equal("Dim testEnumValue = 0\r\n", result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -74,7 +74,7 @@ public void DumpEnumVb_Minus54()
var result = dumper.Dump(flagsVar);
- Assert.Equal("Dim testEnumValue = CType(CType(-54, Object), TestEnum)\r\n", result);
+ Assert.Equal("Dim testEnumValue = CType(CType(-54, Object), TestEnum)\r\n", result, ignoreLineEndingDifferences: true);
}
[Flags]
diff --git a/test/VarDump.UnitTests/FrozenCollectionsNet8Spec.cs b/test/VarDump.UnitTests/FrozenCollectionsNet8Spec.cs
index 668aa13..92b99ee 100644
--- a/test/VarDump.UnitTests/FrozenCollectionsNet8Spec.cs
+++ b/test/VarDump.UnitTests/FrozenCollectionsNet8Spec.cs
@@ -24,7 +24,7 @@ public void DumpFrozenSetCSharp()
1
}.ToFrozenSet();
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -41,7 +41,7 @@ public void DumpFrozenSetVb()
1
}.ToFrozenSet()
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -65,7 +65,7 @@ public void DumpFrozenDictionaryCSharp()
}
}.ToFrozenDictionary();
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -88,7 +88,7 @@ public void DumpFrozenDictionaryVb()
}
}.ToFrozenDictionary()
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
}
}
diff --git a/test/VarDump.UnitTests/GroupingCollectionSpec.cs b/test/VarDump.UnitTests/GroupingCollectionSpec.cs
index 24c5612..a60ab47 100644
--- a/test/VarDump.UnitTests/GroupingCollectionSpec.cs
+++ b/test/VarDump.UnitTests/GroupingCollectionSpec.cs
@@ -85,7 +85,7 @@ public void DumpGroupingCollectionCSharp()
}
}.GroupBy(grp => grp.Key, grp => grp.Element).ToArray();
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -114,6 +114,6 @@ public void DumpSingleGroupingValueCSharp()
}
}.GroupBy(grp => grp.Key, grp => grp.Element).Single();
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
}
\ No newline at end of file
diff --git a/test/VarDump.UnitTests/IgnoreIndexersSpec.cs b/test/VarDump.UnitTests/IgnoreIndexersSpec.cs
index e67e6dd..6435bde 100644
--- a/test/VarDump.UnitTests/IgnoreIndexersSpec.cs
+++ b/test/VarDump.UnitTests/IgnoreIndexersSpec.cs
@@ -13,7 +13,7 @@ public void IgnoreIndexersCSharp()
var result = dumper.Dump(index);
- Assert.Equal("var myClassWithIndexer = new MyClassWithIndexer\r\n{\r\n Caption = \"A Default caption\"\r\n};\r\n", result);
+ Assert.Equal("var myClassWithIndexer = new MyClassWithIndexer\r\n{\r\n Caption = \"A Default caption\"\r\n};\r\n", result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -25,7 +25,7 @@ public void IgnoreIndexersVb()
var result = dumper.Dump(index);
- Assert.Equal("Dim myClassWithIndexerValue = New MyClassWithIndexer With {\r\n .Caption = \"A Default caption\"\r\n}\r\n", result);
+ Assert.Equal("Dim myClassWithIndexerValue = New MyClassWithIndexer With {\r\n .Caption = \"A Default caption\"\r\n}\r\n", result, ignoreLineEndingDifferences: true);
}
private class MyClassWithIndexer
diff --git a/test/VarDump.UnitTests/IgnoreReadonlyPropertiesSpec.cs b/test/VarDump.UnitTests/IgnoreReadonlyPropertiesSpec.cs
index 7d9b3f7..547bb5f 100644
--- a/test/VarDump.UnitTests/IgnoreReadonlyPropertiesSpec.cs
+++ b/test/VarDump.UnitTests/IgnoreReadonlyPropertiesSpec.cs
@@ -16,7 +16,7 @@ public void IgnoreReadonlyPropertiesCSharp()
var result = dumper.Dump(subjectDescriptor);
- Assert.Equal("var subjectDescriptor = new SubjectDescriptor();\r\n", result);
+ Assert.Equal("var subjectDescriptor = new SubjectDescriptor();\r\n", result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -35,7 +35,7 @@ public void WriteReadonlyPropertiesCSharp()
Identifier = "identifier"
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -54,7 +54,7 @@ public void WritePropertiesWithPrivateSettersCSharp()
Identifier = "identifier"
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
private struct SubjectDescriptor(string subjectType, string identifier)
diff --git a/test/VarDump.UnitTests/IndentStringOptionSpec.cs b/test/VarDump.UnitTests/IndentStringOptionSpec.cs
index 50f95cd..bd5601d 100644
--- a/test/VarDump.UnitTests/IndentStringOptionSpec.cs
+++ b/test/VarDump.UnitTests/IndentStringOptionSpec.cs
@@ -41,6 +41,6 @@ public void DumpWithModifiedIndentation()
}
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
}
\ No newline at end of file
diff --git a/test/VarDump.UnitTests/InheritanceSpec.cs b/test/VarDump.UnitTests/InheritanceSpec.cs
index eb5184d..909d3aa 100644
--- a/test/VarDump.UnitTests/InheritanceSpec.cs
+++ b/test/VarDump.UnitTests/InheritanceSpec.cs
@@ -31,7 +31,7 @@ public void DumpClassCSharp()
BirthDate = DateTime.ParseExact("1964-06-19T00:00:00.0000000Z", "O", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind)
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -56,7 +56,7 @@ public void DumpClassVb()
.BirthDate = Date.ParseExact("1964-06-19T00:00:00.0000000Z", "O", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind)
}
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -84,7 +84,7 @@ public void DumpAllFieldsIncludingBaseCSharp()
_derivedNumber = 20
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -111,7 +111,7 @@ public void DumpAllFieldsIncludingBaseVb()
._derivedNumber = 20
}
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
private class Human
diff --git a/test/VarDump.UnitTests/IntegralTypesSpec.cs b/test/VarDump.UnitTests/IntegralTypesSpec.cs
index 18e7777..3946866 100644
--- a/test/VarDump.UnitTests/IntegralTypesSpec.cs
+++ b/test/VarDump.UnitTests/IntegralTypesSpec.cs
@@ -21,7 +21,7 @@ public void DumpULongBinaryCSharp()
"""
var ulongValue = 0b1111111111111111111111111111111111111111111111111111111111111111ul;
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -39,7 +39,7 @@ public void DumpULongDecimalThousandsSeparatorCSharp()
"""
var ulongValue = 18_446_744_073_709_551_615ul;
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -56,7 +56,7 @@ public void DumpULongBinaryUnderscoresCSharp()
"""
var ulongValue = 0b1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1111_1110ul;
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -73,7 +73,7 @@ public void DumpIntBinaryCSharp()
"""
var intValue = 0b0010_0101;
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -91,7 +91,7 @@ public void DumpIntArrayBinaryCSharp()
"""
var arrayOfInt = new int[]{ 0b100101, 0b110001, 0b1001001 };
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -108,7 +108,7 @@ public void DumpByteHexCSharp()
"""
var byteValue = 0X0F;
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -125,7 +125,7 @@ public void DumpIntegerHexUnderscoreCSharp()
"""
var intValue = 0X0001_E240;
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -142,7 +142,7 @@ public void DumpULongBinaryVb()
"""
Dim uLongValue = &B1111111111111111111111111111111111111111111111111111111111111110UL
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -159,7 +159,7 @@ public void DumpIntBinaryVb()
"""
Dim integerValue = &b0010_0101
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -176,7 +176,7 @@ public void DumpByteHexVb()
"""
Dim byteValue = &H0F
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -193,6 +193,6 @@ public void DumpIntegerHexUnderscoreVb()
"""
Dim integerValue = &H0001_E240
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
}
\ No newline at end of file
diff --git a/test/VarDump.UnitTests/IpAddressSpec.cs b/test/VarDump.UnitTests/IpAddressSpec.cs
index d855bf1..62933a0 100644
--- a/test/VarDump.UnitTests/IpAddressSpec.cs
+++ b/test/VarDump.UnitTests/IpAddressSpec.cs
@@ -18,7 +18,7 @@ public void DumpIpAddressCSharp()
"""
var iPAddress = IPAddress.Parse("142.250.74.110");
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
@@ -35,6 +35,6 @@ public void DumpIpAddressVb()
"""
Dim iPAddressValue = IPAddress.Parse("142.250.74.110")
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
}
\ No newline at end of file
diff --git a/test/VarDump.UnitTests/IpEndPointSpec.cs b/test/VarDump.UnitTests/IpEndPointSpec.cs
index 8a28235..5702681 100644
--- a/test/VarDump.UnitTests/IpEndPointSpec.cs
+++ b/test/VarDump.UnitTests/IpEndPointSpec.cs
@@ -18,7 +18,7 @@ public void DumpIpEndPointCSharp()
"""
var iPEndPoint = new IPEndPoint(IPAddress.Parse("142.250.74.110"), 12345);
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
@@ -35,6 +35,6 @@ public void DumpIpEndPointVb()
"""
Dim iPEndPointValue = New IPEndPoint(IPAddress.Parse("142.250.74.110"), 12345)
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
}
\ No newline at end of file
diff --git a/test/VarDump.UnitTests/KeyValuePairArraySpec.cs b/test/VarDump.UnitTests/KeyValuePairArraySpec.cs
index f349883..cc130a4 100644
--- a/test/VarDump.UnitTests/KeyValuePairArraySpec.cs
+++ b/test/VarDump.UnitTests/KeyValuePairArraySpec.cs
@@ -26,7 +26,7 @@ New KeyValuePair(Of Integer, String)(1, "First"),
New KeyValuePair(Of Integer, String)(2, "Second")
}
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -49,7 +49,7 @@ New KeyValuePair(Of Integer, String)(key:=1, value:="First"),
New KeyValuePair(Of Integer, String)(key:=2, value:="Second")
}
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -73,7 +73,7 @@ public void DumpKeyValuePairArrayCSharp()
new KeyValuePair(2, "Second")
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -97,6 +97,6 @@ public void DumpKeyValuePairArrayWithNamedArgumentsCSharp()
new KeyValuePair(key: 2, value: "Second")
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
}
\ No newline at end of file
diff --git a/test/VarDump.UnitTests/KnownObjectsSpec.cs b/test/VarDump.UnitTests/KnownObjectsSpec.cs
index 5a96970..33b4629 100644
--- a/test/VarDump.UnitTests/KnownObjectsSpec.cs
+++ b/test/VarDump.UnitTests/KnownObjectsSpec.cs
@@ -41,7 +41,7 @@ public void UriVisitorWithObjectDescriptionWriterCSharp()
Assert.Equal("""
var uri = new Uri(uriString: "https://user:password@www.contoso.com:80/Home/Index.htm?q1=v1&q2=v2#FragmentName");
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -81,7 +81,7 @@ public void ApplyDifferentSettingsToDifferentKnownObjectVisitorsCSharp()
ValueTuple = ("5", "6")
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
return;
static void DisableNamedArguments(DumpOptions opts)
@@ -120,7 +120,7 @@ public void DumpServiceDescriptorCSharp()
ServiceDescriptor.Scoped()
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -144,7 +144,7 @@ public void DumpServiceDescriptorVb()
"""
Dim serviceDescriptorValue = ServiceDescriptor.Transient(Of IPerson, Person)()
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -169,7 +169,7 @@ public void DumpFormattableStringCSharp()
"""
var concreteFormattableString = FormattableStringFactory.Create("Hello, {0}", "World");
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -194,7 +194,7 @@ public void DumpFormattableStringVb()
"""
Dim concreteFormattableStringValue = FormattableStringFactory.Create("Hello, {0}", "World")
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
private class ServiceDescriptorVisitor(INextDepthVisitor nextDepthVisitor, ICodeWriter codeWriter) : IKnownObjectVisitor
diff --git a/test/VarDump.UnitTests/LazinessSpec.cs b/test/VarDump.UnitTests/LazinessSpec.cs
index 5ad4ff6..d78df3c 100644
--- a/test/VarDump.UnitTests/LazinessSpec.cs
+++ b/test/VarDump.UnitTests/LazinessSpec.cs
@@ -25,7 +25,7 @@ public void DumpEnumerableCSharp()
3
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
return;
static IEnumerable GetItems(StringWriter writer)
diff --git a/test/VarDump.UnitTests/NewLineOptionSpec.cs b/test/VarDump.UnitTests/NewLineOptionSpec.cs
new file mode 100644
index 0000000..9e1b424
--- /dev/null
+++ b/test/VarDump.UnitTests/NewLineOptionSpec.cs
@@ -0,0 +1,101 @@
+using System;
+using System.IO;
+using VarDump.Visitor;
+using Xunit;
+
+namespace VarDump.UnitTests;
+
+public class NewLineOptionSpec
+{
+ [Theory]
+ [InlineData("\n")]
+ [InlineData("\r\n")]
+ public void CSharpDumperUsesConfiguredNewLine(string newLine)
+ {
+ var dumper = new CSharpDumper(new DumpOptions
+ {
+ NewLine = newLine
+ });
+
+ var result = dumper.Dump(new[] { 1, 2 });
+
+ AssertUsesOnlyNewLine(result, newLine);
+ }
+
+ [Theory]
+ [InlineData("\n")]
+ [InlineData("\r\n")]
+ public void VisualBasicDumperUsesConfiguredNewLine(string newLine)
+ {
+ var dumper = new VisualBasicDumper(new DumpOptions
+ {
+ NewLine = newLine
+ });
+
+ var result = dumper.Dump(new[] { 1, 2 });
+
+ AssertUsesOnlyNewLine(result, newLine);
+ }
+
+ [Fact]
+ public void DumpToTextWriterUsesConfiguredNewLineAndRestoresOriginalNewLine()
+ {
+ using var writer = new StringWriter
+ {
+ NewLine = "\r\n"
+ };
+ var dumper = new CSharpDumper(new DumpOptions
+ {
+ NewLine = "\n"
+ });
+
+ dumper.Dump(new[] { 1, 2 }, writer);
+
+ var result = writer.ToString();
+ AssertUsesOnlyNewLine(result, "\n");
+ Assert.Equal("\r\n", writer.NewLine, ignoreLineEndingDifferences: true);
+ }
+
+ [Fact]
+ public void DumpOptionsCloneCopiesNewLine()
+ {
+ var options = new DumpOptions
+ {
+ NewLine = "\n"
+ };
+
+ var clone = options.Clone();
+
+ Assert.Equal("\n", clone.NewLine, ignoreLineEndingDifferences: true);
+ }
+
+ [Fact]
+ public void CSharpDumperRejectsNullNewLine()
+ {
+ var exception = Assert.Throws(() => new CSharpDumper(new DumpOptions
+ {
+ NewLine = null!
+ }));
+
+ Assert.Equal("NewLine", exception.ParamName, ignoreLineEndingDifferences: true);
+ }
+
+ private static void AssertUsesOnlyNewLine(string text, string expectedNewLine)
+ {
+ Assert.Contains(expectedNewLine, text);
+
+ for (var i = 0; i < text.Length; i++)
+ {
+ if (text[i] == '\r')
+ {
+ Assert.Equal("\r\n", expectedNewLine, ignoreLineEndingDifferences: true);
+ Assert.True(i + 1 < text.Length && text[i + 1] == '\n', "Carriage return must be followed by line feed.");
+ i++;
+ }
+ else if (text[i] == '\n')
+ {
+ Assert.Equal("\n", expectedNewLine, ignoreLineEndingDifferences: true);
+ }
+ }
+ }
+}
diff --git a/test/VarDump.UnitTests/NullableSpec.cs b/test/VarDump.UnitTests/NullableSpec.cs
index 1675b1f..29febd4 100644
--- a/test/VarDump.UnitTests/NullableSpec.cs
+++ b/test/VarDump.UnitTests/NullableSpec.cs
@@ -17,7 +17,7 @@ public void DumpNullableEnumCSharp()
"""
var myEnum = MyEnum.TestValue;
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -33,7 +33,7 @@ public void DumpNullableEnumVb()
"""
Dim myEnumValue = MyEnum.TestValue
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
enum MyEnum
diff --git a/test/VarDump.UnitTests/ObjectDescriptorMiddlewareSpec.cs b/test/VarDump.UnitTests/ObjectDescriptorMiddlewareSpec.cs
index 10c710c..19b231d 100644
--- a/test/VarDump.UnitTests/ObjectDescriptorMiddlewareSpec.cs
+++ b/test/VarDump.UnitTests/ObjectDescriptorMiddlewareSpec.cs
@@ -57,7 +57,7 @@ public void ExcludeTypesCSharp()
ValueTuple = ("5", "6")
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -82,7 +82,7 @@ public void RegexCSharp()
"""
var regex = new Regex("\\p{Sc}+\\s*\\d+", RegexOptions.Compiled, TimeSpan.FromSeconds(5));
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -108,7 +108,7 @@ public void RegexWithNamedArgumentsCSharp()
"""
var regex = new Regex(pattern: "\\p{Sc}+\\s*\\d+", options: RegexOptions.Compiled, matchTimeout: TimeSpan.FromSeconds(5));
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -145,7 +145,7 @@ public void SkipWritingCardNumberCSharp()
}
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -185,7 +185,7 @@ public void SkipWritingCardNumberWithObjectMembersFilterCSharp()
}
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
static bool IsNotCardNumber(ReflectionDescription description)
{
@@ -231,7 +231,7 @@ public void MaskCardNumberWithObjectContentReplacerCSharp()
}
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
return;
static ReflectionDescription MaskCardNumber(ReflectionDescription description)
@@ -294,7 +294,7 @@ public void MaskCardNumberCSharp()
}
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -330,7 +330,7 @@ public void FormattableStringCSharp()
}
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -450,7 +450,7 @@ public void DirectoryInfoCSharp()
#endif
- Assert.Equal(expectedString, actualString);
+ Assert.Equal(expectedString, actualString, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -470,7 +470,7 @@ public void FileInfoCSharp()
var expectedFullName = Path.Combine(Directory.GetCurrentDirectory(), fileName).Replace(@"\", @"\\");
var expectedString = $"var fileInfo = new FileInfo(\"{expectedFullName}\");\r\n";
- Assert.Equal(expectedString, actualString);
+ Assert.Equal(expectedString, actualString, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -487,9 +487,10 @@ public void DriveInfoCSharp()
var actualString = dumper.Dump(new DriveInfo(driveName));
- var expectedString = "var driveInfo = new DriveInfo(\"C:\\\\\");\r\n";
+ var expectedDriveName = new DriveInfo(driveName).Name.Replace(@"\", @"\\");
+ var expectedString = $"var driveInfo = new DriveInfo(\"{expectedDriveName}\");\r\n";
- Assert.Equal(expectedString, actualString);
+ Assert.Equal(expectedString, actualString, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -507,9 +508,10 @@ public void DriveInfoWithNamedArgumentsCSharp()
var actualString = dumper.Dump(new DriveInfo(driveName));
- var expectedString = $"var driveInfo = new DriveInfo(driveName: \"{driveName}\\\\\");\r\n";
+ var expectedDriveName = new DriveInfo(driveName).Name.Replace(@"\", @"\\");
+ var expectedString = $"var driveInfo = new DriveInfo(driveName: \"{expectedDriveName}\");\r\n";
- Assert.Equal(expectedString, actualString);
+ Assert.Equal(expectedString, actualString, ignoreLineEndingDifferences: true);
}
diff --git a/test/VarDump.UnitTests/PredefinedConstantsSpec.cs b/test/VarDump.UnitTests/PredefinedConstantsSpec.cs
index bb3afbb..1fa7458 100644
--- a/test/VarDump.UnitTests/PredefinedConstantsSpec.cs
+++ b/test/VarDump.UnitTests/PredefinedConstantsSpec.cs
@@ -15,7 +15,7 @@ public void DumpMaxValueFloatCSharp()
var result = dumper.Dump(max);
- Assert.Equal("var floatValue = float.MaxValue;\r\n", result);
+ Assert.Equal("var floatValue = float.MaxValue;\r\n", result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -27,7 +27,7 @@ public void DumpMaxValueIntegerNoPredefinedConstantsCSharp()
var result = dumper.Dump(max);
- Assert.Equal("var intValue = 2147483647;\r\n", result);
+ Assert.Equal("var intValue = 2147483647;\r\n", result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -39,7 +39,7 @@ public void DumpMaxValueDateTimeNoPredefinedConstantsCSharp()
var result = dumper.Dump(max);
- Assert.Equal("var dateTime = DateTime.ParseExact(\"9999-12-31T23:59:59.9999999\", \"O\", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind);\r\n", result);
+ Assert.Equal("var dateTime = DateTime.ParseExact(\"9999-12-31T23:59:59.9999999\", \"O\", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind);\r\n", result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -50,7 +50,7 @@ public void DumpMinValueFloatCSharp()
var dumper = new CSharpDumper();
var result = dumper.Dump(min);
- Assert.Equal("var floatValue = float.MinValue;\r\n", result);
+ Assert.Equal("var floatValue = float.MinValue;\r\n", result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -61,7 +61,7 @@ public void DumpNaNValueFloatCSharp()
var dumper = new CSharpDumper();
var result = dumper.Dump(nan);
- Assert.Equal("var floatValue = float.NaN;\r\n", result);
+ Assert.Equal("var floatValue = float.NaN;\r\n", result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -72,7 +72,7 @@ public void DumpMaxValueSingleVb()
var dumper = new VisualBasicDumper();
var result = dumper.Dump(max);
- Assert.Equal("Dim singleValue = Single.MaxValue\r\n", result);
+ Assert.Equal("Dim singleValue = Single.MaxValue\r\n", result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -84,7 +84,7 @@ public void DumpZeroValueByteCSharp()
var result = dumper.Dump(zero);
- Assert.Equal("var byteValue = 0;\r\n", result);
+ Assert.Equal("var byteValue = 0;\r\n", result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -96,7 +96,7 @@ public void DumpZeroValueByteVb()
var result = dumper.Dump(zero);
- Assert.Equal("Dim byteValue = 0\r\n", result);
+ Assert.Equal("Dim byteValue = 0\r\n", result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -108,7 +108,7 @@ public void DumpZeroValueUShortCSharp()
var result = dumper.Dump(zero);
- Assert.Equal("var ushortValue = 0;\r\n", result);
+ Assert.Equal("var ushortValue = 0;\r\n", result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -120,7 +120,7 @@ public void DumpZeroValueUShortVb()
var result = dumper.Dump(zero);
- Assert.Equal("Dim uShortValue = 0US\r\n", result);
+ Assert.Equal("Dim uShortValue = 0US\r\n", result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -132,7 +132,7 @@ public void DumpMaxValueIntegerNoPredefinedConstantsVb()
var result = dumper.Dump(max);
- Assert.Equal("Dim integerValue = 2147483647\r\n", result);
+ Assert.Equal("Dim integerValue = 2147483647\r\n", result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -144,6 +144,6 @@ public void DumpMaxValueDateTimeNoPredefinedConstantsVb()
var result = dumper.Dump(max);
- Assert.Equal("Dim dateValue = Date.ParseExact(\"9999-12-31T23:59:59.9999999\", \"O\", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind)\r\n", result);
+ Assert.Equal("Dim dateValue = Date.ParseExact(\"9999-12-31T23:59:59.9999999\", \"O\", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind)\r\n", result, ignoreLineEndingDifferences: true);
}
}
\ No newline at end of file
diff --git a/test/VarDump.UnitTests/PrimitiveTypesSpec.cs b/test/VarDump.UnitTests/PrimitiveTypesSpec.cs
index b755656..eae48b0 100644
--- a/test/VarDump.UnitTests/PrimitiveTypesSpec.cs
+++ b/test/VarDump.UnitTests/PrimitiveTypesSpec.cs
@@ -13,7 +13,7 @@ public void DumpDecimalCSharp()
var result = dumper.Dump(value);
- Assert.Equal("var decimalValue = 0.00000m;\r\n", result);
+ Assert.Equal("var decimalValue = 0.00000m;\r\n", result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -25,7 +25,7 @@ public void DumpDecimalVb()
var result = dumper.Dump(value);
- Assert.Equal("Dim decimalValue = 0.00000D\r\n", result);
+ Assert.Equal("Dim decimalValue = 0.00000D\r\n", result, ignoreLineEndingDifferences: true);
}
}
}
diff --git a/test/VarDump.UnitTests/ReadonlyCollectionInitializerSpec.cs b/test/VarDump.UnitTests/ReadonlyCollectionInitializerSpec.cs
index 0bc97b1..029e97f 100644
--- a/test/VarDump.UnitTests/ReadonlyCollectionInitializerSpec.cs
+++ b/test/VarDump.UnitTests/ReadonlyCollectionInitializerSpec.cs
@@ -32,7 +32,7 @@ public void DumpReadonlyPropertyCollectionInitializerCSharp()
}
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact(Skip = "Not implemented yet")]
@@ -62,6 +62,6 @@ public void DumpReadonlyPropertyDictionaryInitializerCSharp()
}
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
}
\ No newline at end of file
diff --git a/test/VarDump.UnitTests/RecordReferenceTypeSpec.cs b/test/VarDump.UnitTests/RecordReferenceTypeSpec.cs
index 6613d4a..6098dc1 100644
--- a/test/VarDump.UnitTests/RecordReferenceTypeSpec.cs
+++ b/test/VarDump.UnitTests/RecordReferenceTypeSpec.cs
@@ -14,7 +14,7 @@ public void DumpRecordWithConstructorCSharp()
var result = dumper.Dump(person);
- Assert.Equal("var person = new Person(\"Boris\", \"Johnson\");\r\n", result);
+ Assert.Equal("var person = new Person(\"Boris\", \"Johnson\");\r\n", result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -26,7 +26,7 @@ public void DumpRecordWithConstructorVb()
var result = dumper.Dump(person);
- Assert.Equal("Dim personValue = New Person(\"Boris\", \"Johnson\")\r\n", result);
+ Assert.Equal("Dim personValue = New Person(\"Boris\", \"Johnson\")\r\n", result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -48,7 +48,7 @@ public void DumpRecordWithoutConstructorCSharp()
FirstName = ""Boris"",
LastName = ""Johnson""
};
-", result);
+", result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -69,7 +69,7 @@ public void DumpRecordWithoutConstructorVb()
.FirstName = ""Boris"",
.LastName = ""Johnson""
}
-", result);
+", result, ignoreLineEndingDifferences: true);
}
private record Person(string FirstName, string LastName)
diff --git a/test/VarDump.UnitTests/RegexSpec.cs b/test/VarDump.UnitTests/RegexSpec.cs
index 5709844..b07366d 100644
--- a/test/VarDump.UnitTests/RegexSpec.cs
+++ b/test/VarDump.UnitTests/RegexSpec.cs
@@ -20,7 +20,7 @@ public void DumpRegexCSharp()
"""
var regex = new Regex("\\p{Sc}+\\s*\\d+", RegexOptions.Compiled, TimeSpan.FromSeconds(5));
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -36,7 +36,7 @@ public void DumpRegexWithNamedArgumentsCSharp()
"""
var regex = new Regex(pattern: "\\p{Sc}+\\s*\\d+", options: RegexOptions.Compiled, matchTimeout: TimeSpan.FromSeconds(5));
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -52,7 +52,7 @@ public void DumpRegexVb()
"""
Dim regexValue = New Regex("\p{Sc}+\s*\d+", RegexOptions.Compiled, TimeSpan.FromSeconds(5))
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -68,7 +68,7 @@ public void DumpRegexWithNamedArgumentsVb()
"""
Dim regexValue = New Regex(pattern:="\p{Sc}+\s*\d+", options:=RegexOptions.Compiled, matchTimeout:=TimeSpan.FromSeconds(5))
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
}
}
diff --git a/test/VarDump.UnitTests/TooManyItemsCollectionSpec.cs b/test/VarDump.UnitTests/TooManyItemsCollectionSpec.cs
index afd40c2..9d884ca 100644
--- a/test/VarDump.UnitTests/TooManyItemsCollectionSpec.cs
+++ b/test/VarDump.UnitTests/TooManyItemsCollectionSpec.cs
@@ -25,7 +25,7 @@ public void DumpTooLongCollectionCSharp()
// Too many items (> 2). Consider increasing the MaxCollectionSize option.
}.AsReadOnly();
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -65,7 +65,7 @@ public void DumpTooLongDictionaryCSharp()
// Too many items (> 2). Consider increasing the MaxCollectionSize option.
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -107,7 +107,7 @@ public void DumpTooLongAnonymousDictionaryCSharp()
// Too many items (> 2). Consider increasing the MaxCollectionSize option.
}.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -150,7 +150,7 @@ public void DumpTooLongGroupingCollectionCSharp()
// Too many items (> 2). Consider increasing the MaxCollectionSize option.
}.GroupBy(grp => grp.Key, grp => grp.Element).ToArray();
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -169,6 +169,6 @@ public void DumpTooLongCollectionVisualBasic()
'Too many items (> 2). Consider increasing the MaxCollectionSize option.
}.AsReadOnly()
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
}
\ No newline at end of file
diff --git a/test/VarDump.UnitTests/TupleArraySpec.cs b/test/VarDump.UnitTests/TupleArraySpec.cs
index 2f340dd..0f98b31 100644
--- a/test/VarDump.UnitTests/TupleArraySpec.cs
+++ b/test/VarDump.UnitTests/TupleArraySpec.cs
@@ -26,7 +26,7 @@ New Tuple(Of Integer, String)(1, "First"),
New Tuple(Of Integer, String)(2, "Second")
}
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -49,7 +49,7 @@ New Tuple(Of Integer, String)(item1:=1, item2:="First"),
New Tuple(Of Integer, String)(item1:=2, item2:="Second")
}
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -73,7 +73,7 @@ public void DumpTupleArrayCSharp()
new Tuple(2, "Second")
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -97,6 +97,6 @@ public void DumpTupleArrayWithNamedArgumentsCSharp()
new Tuple(item1: 2, item2: "Second")
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
}
\ No newline at end of file
diff --git a/test/VarDump.UnitTests/UriSpec.cs b/test/VarDump.UnitTests/UriSpec.cs
index e2fb75b..45d328f 100644
--- a/test/VarDump.UnitTests/UriSpec.cs
+++ b/test/VarDump.UnitTests/UriSpec.cs
@@ -17,7 +17,7 @@ public void DumpAbsoluteUriCSharp()
"""
var uri = new Uri("https://user:password@www.contoso.com:80/Home/Index.htm?q1=v1&q2=v2#FragmentName");
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -33,7 +33,7 @@ public void DumpAbsoluteUriVb()
"""
Dim uriValue = New Uri("https://user:password@www.contoso.com:80/Home/Index.htm?q1=v1&q2=v2#FragmentName")
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -51,7 +51,7 @@ public void DumpRelativeUriCSharp()
"""
var uri = new Uri("index.htm?date=today", UriKind.Relative);
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -69,6 +69,6 @@ public void DumpRelativeUriVb()
"""
Dim uriValue = New Uri("index.htm?date=today", UriKind.Relative)
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
}
\ No newline at end of file
diff --git a/test/VarDump.UnitTests/ValueTupleArraySpec.cs b/test/VarDump.UnitTests/ValueTupleArraySpec.cs
index 7cc54cc..8af1b30 100644
--- a/test/VarDump.UnitTests/ValueTupleArraySpec.cs
+++ b/test/VarDump.UnitTests/ValueTupleArraySpec.cs
@@ -26,7 +26,7 @@ public void DumpValueTupleArrayVisualBasic()
(2, "Second")
}
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -49,7 +49,7 @@ public void DumpValueTupleArrayWithNamedArgumentsVisualBasic()
(item1:=2, item2:="Second")
}
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -73,7 +73,7 @@ public void DumpValueTupleArrayCSharp()
(2, "Second")
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -97,6 +97,6 @@ public void DumpValueTupleArrayWithNamedArgumentsCSharp()
(item1: 2, item2: "Second")
};
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
}
\ No newline at end of file
diff --git a/test/VarDump.UnitTests/VariableNameSpec.cs b/test/VarDump.UnitTests/VariableNameSpec.cs
index 12ece7f..cc5e2e0 100644
--- a/test/VarDump.UnitTests/VariableNameSpec.cs
+++ b/test/VarDump.UnitTests/VariableNameSpec.cs
@@ -80,7 +80,7 @@ public void DoNotGenerateVariableInitializerCSharp()
var result = dumper.Dump(stringValue);
- Assert.Equal("\"Test string value\"", result);
+ Assert.Equal("\"Test string value\"", result, ignoreLineEndingDifferences: true);
}
[Fact]
@@ -95,6 +95,6 @@ public void DoNotGenerateVariableInitializerVb()
var result = dumper.Dump(stringValue);
- Assert.Equal("\"Test string value\"", result);
+ Assert.Equal("\"Test string value\"", result, ignoreLineEndingDifferences: true);
}
}
\ No newline at end of file
diff --git a/test/VarDump.UnitTests/VersionSpec.cs b/test/VarDump.UnitTests/VersionSpec.cs
index 99f4a65..33d7b64 100644
--- a/test/VarDump.UnitTests/VersionSpec.cs
+++ b/test/VarDump.UnitTests/VersionSpec.cs
@@ -18,7 +18,7 @@ public void DumpVersionCSharp()
"""
var version = new Version("1.2.3.4");
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
@@ -35,6 +35,6 @@ public void DumpVersionVb()
"""
Dim versionValue = New Version("1.2.3.4")
- """, result);
+ """, result, ignoreLineEndingDifferences: true);
}
}
\ No newline at end of file