Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added null terminator line ending mode #3453

Merged
merged 1 commit into from Jun 9, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
7 changes: 7 additions & 0 deletions src/NLog/Targets/LineEndingMode.cs
Expand Up @@ -71,6 +71,12 @@ public sealed class LineEndingMode : IEquatable<LineEndingMode>
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2104:DoNotDeclareReadOnlyMutableReferenceTypes", Justification = "Type is immutable")]
public static readonly LineEndingMode LF = new LineEndingMode("LF", "\n");

/// <summary>
/// Insert null terminator (ASCII 0) after each line.
/// </summary>
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2104:DoNotDeclareReadOnlyMutableReferenceTypes", Justification = "Type is immutable")]
public static readonly LineEndingMode Null = new LineEndingMode("Null", "\0");

/// <summary>
/// Do not insert any line ending.
/// </summary>
Expand Down Expand Up @@ -122,6 +128,7 @@ public static LineEndingMode FromString([NotNull] string name)
if (name.Equals(LF.Name, StringComparison.OrdinalIgnoreCase)) return LF;
if (name.Equals(CR.Name, StringComparison.OrdinalIgnoreCase)) return CR;
if (name.Equals(Default.Name, StringComparison.OrdinalIgnoreCase)) return Default;
if (name.Equals(Null.Name, StringComparison.OrdinalIgnoreCase)) return Null;
if (name.Equals(None.Name, StringComparison.OrdinalIgnoreCase)) return None;

#if !SILVERLIGHT
Expand Down
13 changes: 13 additions & 0 deletions tests/NLog.UnitTests/Targets/LineEndingModeTests.cs
Expand Up @@ -47,22 +47,27 @@ public void LineEndingModeEqualityTest()
LineEndingMode modeNone = LineEndingMode.None;
LineEndingMode modeLF = LineEndingMode.LF;
LineEndingMode modeCRLF = LineEndingMode.CRLF;
LineEndingMode modeNull = LineEndingMode.Null;

Assert.True(LineEndingMode.Default == modeDefault);
Assert.True(LineEndingMode.None == modeNone);
Assert.True(LineEndingMode.LF == modeLF);
Assert.True(LineEndingMode.Null == modeNull);
Assert.False(LineEndingMode.Default == modeNone);
Assert.False(LineEndingMode.None == modeLF);
Assert.False(LineEndingMode.None == modeCRLF);
Assert.False(LineEndingMode.None == modeNull);
Assert.False(LineEndingMode.None == (object)new { });
Assert.False(LineEndingMode.None == null);

Assert.True(LineEndingMode.Default.Equals(modeDefault));
Assert.True(LineEndingMode.None.Equals(modeNone));
Assert.True(LineEndingMode.LF.Equals(modeLF));
Assert.True(LineEndingMode.Null.Equals(modeNull));
Assert.False(LineEndingMode.Default.Equals(modeNone));
Assert.False(LineEndingMode.None.Equals(modeLF));
Assert.False(LineEndingMode.None.Equals(modeCRLF));
Assert.False(LineEndingMode.None.Equals(modeNull));
Assert.False(LineEndingMode.None.Equals(new { }));
Assert.False(LineEndingMode.None.Equals(null));

Expand All @@ -86,14 +91,17 @@ public void LineEndingModeInequalityTest()
LineEndingMode modeNone = LineEndingMode.None;
LineEndingMode modeLF = LineEndingMode.LF;
LineEndingMode modeCRLF = LineEndingMode.CRLF;
LineEndingMode modeNull = LineEndingMode.Null;

Assert.True(LineEndingMode.Default != modeNone);
Assert.True(LineEndingMode.None != modeLF);
Assert.True(LineEndingMode.None != modeCRLF);
Assert.True(LineEndingMode.None != modeNull);
Assert.False(LineEndingMode.Default != modeDefault);
Assert.False(LineEndingMode.None != modeNone);
Assert.False(LineEndingMode.LF != modeLF);
Assert.False(LineEndingMode.CRLF != modeCRLF);
Assert.False(LineEndingMode.Null != modeNull);

Assert.True(null != LineEndingMode.LF);
Assert.True(null != modeLF);
Expand All @@ -103,6 +111,10 @@ public void LineEndingModeInequalityTest()
Assert.True(null != modeCRLF);
Assert.True(LineEndingMode.CRLF != null);
Assert.True(modeCRLF != null);
Assert.True(null != LineEndingMode.Null);
Assert.True(null != modeNull);
Assert.True(LineEndingMode.Null != null);
Assert.True(modeNull != null);

// Handle running tests on different operating systems
if (modeCRLF.NewLineCharacters == Environment.NewLine)
Expand Down Expand Up @@ -139,6 +151,7 @@ public void LineEndingModeToStringTest()
Assert.Equal("CRLF", LineEndingMode.CRLF.ToString());
Assert.Equal("CR", LineEndingMode.CR.ToString());
Assert.Equal("LF", LineEndingMode.LF.ToString());
Assert.Equal("Null", LineEndingMode.Null.ToString());
}
}
}