Skip to content

Commit 54785e4

Browse files
committed
Validate additional cross-casting cases
1 parent 1361505 commit 54785e4

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

StyleCop.Analyzers/StyleCop.Analyzers.Test.CSharp7/Lightup/ForEachVariableStatementSyntaxWrapperTests.cs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,13 @@ public void TestIsInstance()
181181
Assert.False(ForEachVariableStatementSyntaxWrapper.IsInstance(null));
182182
Assert.False(ForEachVariableStatementSyntaxWrapper.IsInstance(SyntaxFactory.LiteralExpression(SyntaxKind.NullLiteralExpression)));
183183

184+
var forEachStatement = SyntaxFactory.ForEachStatement(
185+
SyntaxFactory.PredefinedType(SyntaxFactory.Token(SyntaxKind.IntKeyword)),
186+
"item",
187+
SyntaxFactory.IdentifierName("collection"),
188+
SyntaxFactory.EmptyStatement());
189+
Assert.False(ForEachVariableStatementSyntaxWrapper.IsInstance(forEachStatement));
190+
184191
var syntaxNode = this.CreateForEachVariableStatement();
185192
Assert.True(ForEachVariableStatementSyntaxWrapper.IsInstance(syntaxNode));
186193
}
@@ -220,6 +227,16 @@ public void TestInvalidConversion()
220227
{
221228
var syntaxNode = SyntaxFactory.LiteralExpression(SyntaxKind.NullLiteralExpression);
222229
Assert.Throws<InvalidCastException>(() => (ForEachVariableStatementSyntaxWrapper)syntaxNode);
230+
231+
var forEachStatement = SyntaxFactory.ForEachStatement(
232+
SyntaxFactory.PredefinedType(SyntaxFactory.Token(SyntaxKind.IntKeyword)),
233+
"item",
234+
SyntaxFactory.IdentifierName("collection"),
235+
SyntaxFactory.EmptyStatement());
236+
Assert.Throws<InvalidCastException>(() => (ForEachVariableStatementSyntaxWrapper)forEachStatement);
237+
238+
var commonWrapper = (CommonForEachStatementSyntaxWrapper)forEachStatement;
239+
Assert.Throws<InvalidCastException>(() => (ForEachVariableStatementSyntaxWrapper)commonWrapper);
223240
}
224241

225242
private ForEachVariableStatementSyntax CreateForEachVariableStatement()

StyleCop.Analyzers/StyleCop.Analyzers.Test.CSharp8/Lightup/ForEachVariableStatementSyntaxWrapperCSharp8UnitTests.cs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,13 @@ public void TestIsInstance()
185185
Assert.False(ForEachVariableStatementSyntaxWrapper.IsInstance(null));
186186
Assert.False(ForEachVariableStatementSyntaxWrapper.IsInstance(SyntaxFactory.LiteralExpression(SyntaxKind.NullLiteralExpression)));
187187

188+
var forEachStatement = SyntaxFactory.ForEachStatement(
189+
SyntaxFactory.PredefinedType(SyntaxFactory.Token(SyntaxKind.IntKeyword)),
190+
"item",
191+
SyntaxFactory.IdentifierName("collection"),
192+
SyntaxFactory.EmptyStatement());
193+
Assert.False(ForEachVariableStatementSyntaxWrapper.IsInstance(forEachStatement));
194+
188195
var syntaxNode = this.CreateForEachVariableStatement();
189196
Assert.True(ForEachVariableStatementSyntaxWrapper.IsInstance(syntaxNode));
190197
}
@@ -224,6 +231,16 @@ public void TestInvalidConversion()
224231
{
225232
var syntaxNode = SyntaxFactory.LiteralExpression(SyntaxKind.NullLiteralExpression);
226233
Assert.Throws<InvalidCastException>(() => (ForEachVariableStatementSyntaxWrapper)syntaxNode);
234+
235+
var forEachStatement = SyntaxFactory.ForEachStatement(
236+
SyntaxFactory.PredefinedType(SyntaxFactory.Token(SyntaxKind.IntKeyword)),
237+
"item",
238+
SyntaxFactory.IdentifierName("collection"),
239+
SyntaxFactory.EmptyStatement());
240+
Assert.Throws<InvalidCastException>(() => (ForEachVariableStatementSyntaxWrapper)forEachStatement);
241+
242+
var commonWrapper = (CommonForEachStatementSyntaxWrapper)forEachStatement;
243+
Assert.Throws<InvalidCastException>(() => (ForEachVariableStatementSyntaxWrapper)commonWrapper);
227244
}
228245

229246
private ForEachVariableStatementSyntax CreateForEachVariableStatement()

0 commit comments

Comments
 (0)