Skip to content

Commit c31beae

Browse files
committed
Add tests for IsPatternExpressionSyntaxWrapper
1 parent 28f136e commit c31beae

4 files changed

Lines changed: 153 additions & 0 deletions

File tree

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
// Copyright (c) Tunnel Vision Laboratories, LLC. All Rights Reserved.
2+
// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.
3+
4+
namespace StyleCop.Analyzers.Test.CSharp7.Lightup
5+
{
6+
using System;
7+
using Microsoft.CodeAnalysis;
8+
using Microsoft.CodeAnalysis.CSharp;
9+
using Microsoft.CodeAnalysis.CSharp.Syntax;
10+
using StyleCop.Analyzers.Lightup;
11+
using Xunit;
12+
13+
public class IsPatternExpressionSyntaxWrapperTests
14+
{
15+
[Fact]
16+
public void TestNull()
17+
{
18+
var syntaxNode = default(SyntaxNode);
19+
var isPatternExpressionSyntax = (IsPatternExpressionSyntaxWrapper)syntaxNode;
20+
Assert.Null(isPatternExpressionSyntax.SyntaxNode);
21+
Assert.Throws<NullReferenceException>(() => isPatternExpressionSyntax.Expression);
22+
Assert.Throws<NullReferenceException>(() => isPatternExpressionSyntax.IsKeyword);
23+
Assert.Throws<NullReferenceException>(() => isPatternExpressionSyntax.Pattern);
24+
Assert.Throws<NullReferenceException>(() => isPatternExpressionSyntax.WithExpression(SyntaxFactory.LiteralExpression(SyntaxKind.NullLiteralExpression)));
25+
Assert.Throws<NullReferenceException>(() => isPatternExpressionSyntax.WithIsKeyword(SyntaxFactory.Token(SyntaxKind.IsKeyword)));
26+
Assert.Throws<NullReferenceException>(() => isPatternExpressionSyntax.WithPattern((PatternSyntaxWrapper)SyntaxFactory.ConstantPattern(SyntaxFactory.LiteralExpression(SyntaxKind.NullLiteralExpression))));
27+
}
28+
29+
[Fact]
30+
public void TestProperties()
31+
{
32+
var syntaxNode = SyntaxFactory.IsPatternExpression(SyntaxFactory.DefaultExpression(SyntaxFactory.PredefinedType(SyntaxFactory.Token(SyntaxKind.IntKeyword))), SyntaxFactory.ConstantPattern(SyntaxFactory.LiteralExpression(SyntaxKind.NullLiteralExpression)));
33+
Assert.True(syntaxNode.IsKind(SyntaxKind.IsPatternExpression));
34+
Assert.True(syntaxNode.IsKind(SyntaxKindEx.IsPatternExpression));
35+
36+
var isPatternExpressionSyntax = (IsPatternExpressionSyntaxWrapper)syntaxNode;
37+
Assert.Same(syntaxNode, isPatternExpressionSyntax.SyntaxNode);
38+
Assert.Same(syntaxNode.Expression, isPatternExpressionSyntax.Expression);
39+
Assert.True(syntaxNode.IsKeyword.IsEquivalentTo(isPatternExpressionSyntax.IsKeyword));
40+
Assert.Same(syntaxNode.Pattern, isPatternExpressionSyntax.Pattern);
41+
42+
var newExpression = SyntaxFactory.LiteralExpression(SyntaxKind.NumericLiteralExpression, SyntaxFactory.Token(default(SyntaxTriviaList), SyntaxKind.NumericLiteralToken, "0", "0", default(SyntaxTriviaList)));
43+
var modifiedExpression = isPatternExpressionSyntax.WithExpression(newExpression);
44+
Assert.NotNull(modifiedExpression.SyntaxNode);
45+
Assert.NotSame(syntaxNode.Expression, modifiedExpression.Expression);
46+
Assert.Equal(SyntaxKind.NumericLiteralExpression, modifiedExpression.Expression.Kind());
47+
48+
var newIsKeyword = SyntaxFactory.Token(SyntaxKind.IsKeyword).WithLeadingTrivia(SyntaxFactory.Space);
49+
var modifiedIsKeyword = isPatternExpressionSyntax.WithIsKeyword(newIsKeyword);
50+
Assert.NotNull(modifiedIsKeyword.SyntaxNode);
51+
Assert.Equal(1, modifiedIsKeyword.IsKeyword.LeadingTrivia.Count);
52+
Assert.Equal(" ", modifiedIsKeyword.IsKeyword.LeadingTrivia.ToString());
53+
54+
var newPattern = SyntaxFactory.ConstantPattern(newExpression);
55+
var modifiedPattern = isPatternExpressionSyntax.WithPattern((PatternSyntaxWrapper)newPattern);
56+
Assert.NotNull(modifiedPattern.SyntaxNode);
57+
Assert.Equal(SyntaxKind.DefaultExpression, modifiedExpression.Expression.Kind());
58+
Assert.Equal(SyntaxKind.NumericLiteralExpression, modifiedPattern.Pattern.SyntaxNode.Kind());
59+
}
60+
61+
[Fact]
62+
public void TestIsInstance()
63+
{
64+
Assert.False(IsPatternExpressionSyntaxWrapper.IsInstance(null));
65+
Assert.False(IsPatternExpressionSyntaxWrapper.IsInstance(SyntaxFactory.LiteralExpression(SyntaxKind.NullLiteralExpression)));
66+
67+
var syntaxNode = SyntaxFactory.IsPatternExpression(SyntaxFactory.DefaultExpression(SyntaxFactory.PredefinedType(SyntaxFactory.Token(SyntaxKind.IntKeyword))), SyntaxFactory.ConstantPattern(SyntaxFactory.LiteralExpression(SyntaxKind.NullLiteralExpression)));
68+
Assert.True(IsPatternExpressionSyntaxWrapper.IsInstance(syntaxNode));
69+
}
70+
71+
[Fact]
72+
public void TestConversionsNull()
73+
{
74+
var syntaxNode = default(SyntaxNode);
75+
var isPatternExpressionSyntax = (IsPatternExpressionSyntaxWrapper)syntaxNode;
76+
77+
ExpressionSyntax syntax = isPatternExpressionSyntax;
78+
Assert.Null(syntax);
79+
}
80+
81+
[Fact]
82+
public void TestConversions()
83+
{
84+
var syntaxNode = SyntaxFactory.IsPatternExpression(SyntaxFactory.DefaultExpression(SyntaxFactory.PredefinedType(SyntaxFactory.Token(SyntaxKind.IntKeyword))), SyntaxFactory.ConstantPattern(SyntaxFactory.LiteralExpression(SyntaxKind.NullLiteralExpression)));
85+
var isPatternExpressionSyntax = (IsPatternExpressionSyntaxWrapper)syntaxNode;
86+
87+
ExpressionSyntax syntax = isPatternExpressionSyntax;
88+
Assert.Same(syntaxNode, syntax);
89+
}
90+
91+
[Fact]
92+
public void TestInvalidConversion()
93+
{
94+
var syntaxNode = SyntaxFactory.LiteralExpression(SyntaxKind.NullLiteralExpression);
95+
Assert.Throws<InvalidCastException>(() => (IsPatternExpressionSyntaxWrapper)syntaxNode);
96+
}
97+
}
98+
}

StyleCop.Analyzers/StyleCop.Analyzers.Test.CSharp7/StyleCop.Analyzers.Test.CSharp7.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,7 @@
201201
<Compile Include="Lightup\DeclarationPatternSyntaxWrapperTests.cs" />
202202
<Compile Include="Lightup\DestructorDeclarationSyntaxExtensionsTests.cs" />
203203
<Compile Include="Lightup\DiscardDesignationSyntaxWrapperTests.cs" />
204+
<Compile Include="Lightup\IsPatternExpressionSyntaxWrapperTests.cs" />
204205
<Compile Include="Lightup\LightupHelpersTestsCSharp7.cs" />
205206
<Compile Include="Lightup\ParenthesizedVariableDesignationSyntaxWrapperTests.cs" />
206207
<Compile Include="Lightup\PatternSyntaxWrapperTests.cs" />
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
// Copyright (c) Tunnel Vision Laboratories, LLC. All Rights Reserved.
2+
// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.
3+
4+
namespace StyleCop.Analyzers.Test.Lightup
5+
{
6+
using System;
7+
using Microsoft.CodeAnalysis;
8+
using Microsoft.CodeAnalysis.CSharp;
9+
using Microsoft.CodeAnalysis.CSharp.Syntax;
10+
using StyleCop.Analyzers.Lightup;
11+
using Xunit;
12+
13+
public class IsPatternExpressionSyntaxWrapperTests
14+
{
15+
[Fact]
16+
public void TestNull()
17+
{
18+
var syntaxNode = default(SyntaxNode);
19+
var isPatternExpressionSyntax = (IsPatternExpressionSyntaxWrapper)syntaxNode;
20+
Assert.Null(isPatternExpressionSyntax.SyntaxNode);
21+
Assert.Throws<NullReferenceException>(() => isPatternExpressionSyntax.Expression);
22+
Assert.Throws<NullReferenceException>(() => isPatternExpressionSyntax.IsKeyword);
23+
Assert.Throws<NullReferenceException>(() => isPatternExpressionSyntax.Pattern);
24+
Assert.Throws<NullReferenceException>(() => isPatternExpressionSyntax.WithExpression(SyntaxFactory.LiteralExpression(SyntaxKind.NullLiteralExpression)));
25+
Assert.Throws<NullReferenceException>(() => isPatternExpressionSyntax.WithIsKeyword(SyntaxFactory.Token(SyntaxKind.IsKeyword)));
26+
Assert.Throws<NullReferenceException>(() => isPatternExpressionSyntax.WithPattern((PatternSyntaxWrapper)null));
27+
}
28+
29+
[Fact]
30+
public void TestIsInstance()
31+
{
32+
Assert.False(IsPatternExpressionSyntaxWrapper.IsInstance(null));
33+
Assert.False(IsPatternExpressionSyntaxWrapper.IsInstance(SyntaxFactory.LiteralExpression(SyntaxKind.NullLiteralExpression)));
34+
}
35+
36+
[Fact]
37+
public void TestConversionsNull()
38+
{
39+
var syntaxNode = default(SyntaxNode);
40+
var isPatternExpressionSyntax = (IsPatternExpressionSyntaxWrapper)syntaxNode;
41+
42+
ExpressionSyntax syntax = isPatternExpressionSyntax;
43+
Assert.Null(syntax);
44+
}
45+
46+
[Fact]
47+
public void TestInvalidConversion()
48+
{
49+
var syntaxNode = SyntaxFactory.LiteralExpression(SyntaxKind.NullLiteralExpression);
50+
Assert.Throws<InvalidCastException>(() => (IsPatternExpressionSyntaxWrapper)syntaxNode);
51+
}
52+
}
53+
}

StyleCop.Analyzers/StyleCop.Analyzers.Test/StyleCop.Analyzers.Test.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,7 @@
243243
<Compile Include="Lightup\DeclarationPatternSyntaxWrapperTests.cs" />
244244
<Compile Include="Lightup\DestructorDeclarationSyntaxExtensionsTests.cs" />
245245
<Compile Include="Lightup\DiscardDesignationSyntaxWrapperTests.cs" />
246+
<Compile Include="Lightup\IsPatternExpressionSyntaxWrapperTests.cs" />
246247
<Compile Include="Lightup\LightupHelpersTests.cs" />
247248
<Compile Include="Lightup\ParenthesizedVariableDesignationSyntaxWrapperTests.cs" />
248249
<Compile Include="Lightup\PatternSyntaxWrapperTests.cs" />

0 commit comments

Comments
 (0)