Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CodeActions;
using Microsoft.CodeAnalysis.CodeFixes;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Editing;
using Microsoft.CodeAnalysis.Simplification;
Expand Down
62 changes: 62 additions & 0 deletions tests/NetEscapades.EnumGenerators.Tests/GetNamesAnalyzerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -428,6 +428,68 @@ public void TestMethod()
await VerifyAnalyzerAsync(test, EnableState.Disabled);
}

[Fact]
public async Task GetNamesAsMethodArgumentShouldPreserveWhitespace()
{
var test = GetTestCode(
/* lang=c# */
"""
public class TestClass
{
public void TestMethod()
{
SomeMethod({|NEEG008:Enum.GetNames(typeof(MyEnum))|});
}

private void SomeMethod(string[] names) { }
}
""");

var fix = GetTestCode(
/* lang=c# */
"""
public class TestClass
{
public void TestMethod()
{
SomeMethod(MyEnumExtensions.GetNames());
}

private void SomeMethod(string[] names) { }
}
""");
await VerifyCodeFixAsync(test, fix);
}

[Fact]
public async Task GetNamesWithExtraWhitespaceShouldPreserveWhitespace()
{
var test = GetTestCode(
/* lang=c# */
"""
public class TestClass
{
public void TestMethod()
{
{|NEEG008:Enum.GetNames(typeof(MyEnum))|};
}
}
""");

var fix = GetTestCode(
/* lang=c# */
"""
public class TestClass
{
public void TestMethod()
{
MyEnumExtensions.GetNames();
}
}
""");
await VerifyCodeFixAsync(test, fix);
}

private static string GetTestCodeWithExternalEnum(string testCode) =>
$$"""
using System;
Expand Down
62 changes: 62 additions & 0 deletions tests/NetEscapades.EnumGenerators.Tests/GetValuesAnalyzerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -534,4 +534,66 @@ public static class MyEnumExtensions
{{TestHelpers.LoadEmbeddedAttribute()}}
{{TestHelpers.LoadEmbeddedMetadataSource()}}
""";

[Fact]
public async Task GetValuesAsMethodArgumentShouldPreserveWhitespace()
{
var test = GetTestCode(
/* lang=c# */
"""
public class TestClass
{
public void TestMethod()
{
SomeMethod({|NEEG009:Enum.GetValues(typeof(MyEnum))|});
}

private void SomeMethod(MyEnum[] values) { }
}
""");

var fix = GetTestCode(
/* lang=c# */
"""
public class TestClass
{
public void TestMethod()
{
SomeMethod(MyEnumExtensions.GetValues());
}

private void SomeMethod(MyEnum[] values) { }
}
""");
await Verifier.VerifyCodeFixAsync(test, fix);
}

[Fact]
public async Task GetValuesWithExtraWhitespaceShouldPreserveWhitespace()
{
var test = GetTestCode(
/* lang=c# */
"""
public class TestClass
{
public void TestMethod()
{
var values = {|NEEG009:Enum.GetValues(typeof(MyEnum))|};
}
}
""");

var fix = GetTestCode(
/* lang=c# */
"""
public class TestClass
{
public void TestMethod()
{
var values = MyEnumExtensions.GetValues();
}
}
""");
await Verifier.VerifyCodeFixAsync(test, fix);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -486,4 +486,78 @@ public static class MyEnumExtensions
{{TestHelpers.LoadEmbeddedAttribute()}}
{{TestHelpers.LoadEmbeddedMetadataSource()}}
""";

private static Task VerifyCodeFixWithNet6AssembliesAsync(string source, string fixedSource)
{
var test = new Test
{
TestCode = source,
FixedCode = fixedSource,
ReferenceAssemblies = ReferenceAssemblies.Net.Net60,
};

return test.RunAsync(CancellationToken.None);
}

[Fact]
public async Task GetValuesAsUnderlyingTypeAsMethodArgumentShouldPreserveWhitespace()
{
var test = GetTestCode(
/* lang=c# */
"""
public class TestClass
{
public void TestMethod()
{
SomeMethod({|NEEG010:Enum.GetValuesAsUnderlyingType(typeof(MyEnum))|});
}

private void SomeMethod(int[] values) { }
}
""");

var fix = GetTestCode(
/* lang=c# */
"""
public class TestClass
{
public void TestMethod()
{
SomeMethod(MyEnumExtensions.GetValuesAsUnderlyingType());
}

private void SomeMethod(int[] values) { }
}
""");
await VerifyCodeFixWithNet6AssembliesAsync(test, fix);
}

[Fact]
public async Task GetValuesAsUnderlyingTypeWithExtraWhitespaceShouldPreserveWhitespace()
{
var test = GetTestCode(
/* lang=c# */
"""
public class TestClass
{
public void TestMethod()
{
var values = {|NEEG010:Enum.GetValuesAsUnderlyingType<MyEnum>()|};
}
}
""");

var fix = GetTestCode(
/* lang=c# */
"""
public class TestClass
{
public void TestMethod()
{
var values = MyEnumExtensions.GetValuesAsUnderlyingType();
}
}
""");
await VerifyCodeFixWithNet6AssembliesAsync(test, fix);
}
}
62 changes: 62 additions & 0 deletions tests/NetEscapades.EnumGenerators.Tests/ParseAnalyzerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -704,4 +704,66 @@ public static class MyEnumExtensions
{{TestHelpers.LoadEmbeddedAttribute()}}
{{TestHelpers.LoadEmbeddedMetadataSource()}}
""";

[Fact]
public async Task ParseAsMethodArgumentShouldPreserveWhitespace()
{
var test = GetTestCode(
/* lang=c# */
"""
public class TestClass
{
public void TestMethod()
{
SomeMethod({|NEEG007:Enum.Parse(typeof(MyEnum), "First")|});
}

private void SomeMethod(MyEnum value) { }
}
""");

var fix = GetTestCode(
/* lang=c# */
"""
public class TestClass
{
public void TestMethod()
{
SomeMethod(MyEnumExtensions.Parse("First"));
}

private void SomeMethod(MyEnum value) { }
}
""");
await Verifier.VerifyCodeFixAsync(test, fix);
}

[Fact]
public async Task ParseWithExtraWhitespaceShouldPreserveWhitespace()
{
var test = GetTestCode(
/* lang=c# */
"""
public class TestClass
{
public void TestMethod()
{
var value = {|NEEG007:Enum.Parse(typeof(MyEnum), "First")|};
}
}
""");

var fix = GetTestCode(
/* lang=c# */
"""
public class TestClass
{
public void TestMethod()
{
var value = MyEnumExtensions.Parse("First");
}
}
""");
await Verifier.VerifyCodeFixAsync(test, fix);
}
}
Loading
Loading