Skip to content

Commit aa3a3d1

Browse files
committed
Add SA1503 tests for extension foreach
1 parent 34e7d1d commit aa3a3d1

File tree

1 file changed

+73
-0
lines changed

1 file changed

+73
-0
lines changed

StyleCop.Analyzers/StyleCop.Analyzers.Test.CSharp9/LayoutRules/SA1503CSharp9UnitTests.cs

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

44
namespace StyleCop.Analyzers.Test.CSharp9.LayoutRules
55
{
6+
using System.Threading;
7+
using System.Threading.Tasks;
8+
using Microsoft.CodeAnalysis.Testing;
69
using StyleCop.Analyzers.Test.CSharp8.LayoutRules;
10+
using Xunit;
11+
using static StyleCop.Analyzers.Test.Verifiers.StyleCopCodeFixVerifier<
12+
StyleCop.Analyzers.LayoutRules.SA1503BracesMustNotBeOmitted,
13+
StyleCop.Analyzers.LayoutRules.SA1503CodeFixProvider>;
714

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

0 commit comments

Comments
 (0)