Skip to content

Commit 839ed93

Browse files
committed
Add SA1312 tests for extension foreach
1 parent c91b82b commit 839ed93

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed

StyleCop.Analyzers/StyleCop.Analyzers.Test.CSharp9/NamingRules/SA1312CSharp9UnitTests.cs

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,85 @@
33

44
namespace StyleCop.Analyzers.Test.CSharp9.NamingRules
55
{
6+
using System.Threading;
7+
using System.Threading.Tasks;
8+
using Microsoft.CodeAnalysis.Testing;
69
using StyleCop.Analyzers.Test.CSharp8.NamingRules;
10+
using StyleCop.Analyzers.Test.Helpers;
11+
using Xunit;
12+
using static StyleCop.Analyzers.Test.Verifiers.StyleCopCodeFixVerifier<
13+
StyleCop.Analyzers.NamingRules.SA1312VariableNamesMustBeginWithLowerCaseLetter,
14+
StyleCop.Analyzers.NamingRules.RenameToLowerCaseCodeFixProvider>;
715

816
public partial class SA1312CSharp9UnitTests : SA1312CSharp8UnitTests
917
{
18+
[Fact]
19+
[WorkItem(3976, "https://github.com/DotNetAnalyzers/StyleCopAnalyzers/issues/3976")]
20+
public async Task TestForeachVariableWithExtensionEnumeratorAsync()
21+
{
22+
var testCode = @"
23+
using System;
24+
25+
public class TestClass
26+
{
27+
public void TestMethod()
28+
{
29+
foreach (var [|Item|] in new ExtensionEnumerable())
30+
{
31+
Console.WriteLine(Item);
32+
}
33+
}
34+
}
35+
36+
public class ExtensionEnumerable
37+
{
38+
}
39+
40+
public struct ExtensionEnumerator
41+
{
42+
public int Current => 0;
43+
44+
public bool MoveNext() => false;
45+
}
46+
47+
public static class ExtensionEnumerableExtensions
48+
{
49+
public static ExtensionEnumerator GetEnumerator(this ExtensionEnumerable enumerable) => new();
50+
}
51+
";
52+
53+
var fixedCode = @"
54+
using System;
55+
56+
public class TestClass
57+
{
58+
public void TestMethod()
59+
{
60+
foreach (var item in new ExtensionEnumerable())
61+
{
62+
Console.WriteLine(item);
63+
}
64+
}
65+
}
66+
67+
public class ExtensionEnumerable
68+
{
69+
}
70+
71+
public struct ExtensionEnumerator
72+
{
73+
public int Current => 0;
74+
75+
public bool MoveNext() => false;
76+
}
77+
78+
public static class ExtensionEnumerableExtensions
79+
{
80+
public static ExtensionEnumerator GetEnumerator(this ExtensionEnumerable enumerable) => new();
81+
}
82+
";
83+
84+
await VerifyCSharpFixAsync(testCode, DiagnosticResult.EmptyDiagnosticResults, fixedCode, CancellationToken.None).ConfigureAwait(false);
85+
}
1086
}
1187
}

0 commit comments

Comments
 (0)