Skip to content

Commit 307b465

Browse files
committed
Add tests for DeclarationPatternSyntaxWrapper
1 parent 0a556b2 commit 307b465

4 files changed

Lines changed: 160 additions & 0 deletions

File tree

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
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 DeclarationPatternSyntaxWrapperTests
14+
{
15+
[Fact]
16+
public void TestNull()
17+
{
18+
var syntaxNode = default(SyntaxNode);
19+
var declarationPatternSyntax = (DeclarationPatternSyntaxWrapper)syntaxNode;
20+
Assert.Null(declarationPatternSyntax.SyntaxNode);
21+
Assert.Throws<NullReferenceException>(() => declarationPatternSyntax.Type);
22+
Assert.Throws<NullReferenceException>(() => declarationPatternSyntax.Designation);
23+
Assert.Throws<NullReferenceException>(() => declarationPatternSyntax.WithType(SyntaxFactory.PredefinedType(SyntaxFactory.Token(SyntaxKind.IntKeyword))));
24+
Assert.Throws<NullReferenceException>(() => declarationPatternSyntax.WithDesignation((VariableDesignationSyntaxWrapper)SyntaxFactory.DiscardDesignation()));
25+
}
26+
27+
[Fact]
28+
public void TestProperties()
29+
{
30+
var syntaxNode = SyntaxFactory.DeclarationPattern(
31+
SyntaxFactory.PredefinedType(SyntaxFactory.Token(SyntaxKind.IntKeyword)),
32+
SyntaxFactory.DiscardDesignation());
33+
var declarationPatternSyntax = (DeclarationPatternSyntaxWrapper)syntaxNode;
34+
Assert.Same(syntaxNode, declarationPatternSyntax.SyntaxNode);
35+
Assert.Same(syntaxNode.Type, declarationPatternSyntax.Type);
36+
Assert.Same(syntaxNode.Designation, declarationPatternSyntax.Designation.SyntaxNode);
37+
38+
declarationPatternSyntax = declarationPatternSyntax.WithType(SyntaxFactory.PredefinedType(SyntaxFactory.Token(SyntaxKind.IntKeyword)));
39+
Assert.NotNull(declarationPatternSyntax.SyntaxNode);
40+
Assert.NotSame(syntaxNode, declarationPatternSyntax.SyntaxNode);
41+
Assert.Same(((DeclarationPatternSyntax)declarationPatternSyntax.SyntaxNode).Type, declarationPatternSyntax.Type);
42+
43+
declarationPatternSyntax = declarationPatternSyntax.WithDesignation((VariableDesignationSyntaxWrapper)SyntaxFactory.SingleVariableDesignation(SyntaxFactory.Identifier("Anything")));
44+
Assert.NotNull(declarationPatternSyntax.SyntaxNode);
45+
Assert.NotSame(syntaxNode, declarationPatternSyntax.SyntaxNode);
46+
Assert.Same(((DeclarationPatternSyntax)declarationPatternSyntax.SyntaxNode).Designation, declarationPatternSyntax.Designation.SyntaxNode);
47+
}
48+
49+
[Fact]
50+
public void TestIsInstance()
51+
{
52+
Assert.False(DeclarationPatternSyntaxWrapper.IsInstance(null));
53+
Assert.False(DeclarationPatternSyntaxWrapper.IsInstance(SyntaxFactory.LiteralExpression(SyntaxKind.NullLiteralExpression)));
54+
55+
var syntaxNode = SyntaxFactory.DeclarationPattern(
56+
SyntaxFactory.PredefinedType(SyntaxFactory.Token(SyntaxKind.IntKeyword)),
57+
SyntaxFactory.DiscardDesignation());
58+
Assert.True(DeclarationPatternSyntaxWrapper.IsInstance(syntaxNode));
59+
}
60+
61+
[Fact]
62+
public void TestConversionsNull()
63+
{
64+
var syntaxNode = default(SyntaxNode);
65+
var declarationPatternSyntax = (DeclarationPatternSyntaxWrapper)syntaxNode;
66+
67+
PatternSyntaxWrapper patternSyntax = declarationPatternSyntax;
68+
Assert.Null(patternSyntax.SyntaxNode);
69+
70+
declarationPatternSyntax = (DeclarationPatternSyntaxWrapper)patternSyntax;
71+
Assert.Null(declarationPatternSyntax.SyntaxNode);
72+
73+
SyntaxNode syntax = declarationPatternSyntax;
74+
Assert.Null(syntax);
75+
}
76+
77+
[Fact]
78+
public void TestConversions()
79+
{
80+
var syntaxNode = SyntaxFactory.DeclarationPattern(
81+
SyntaxFactory.PredefinedType(SyntaxFactory.Token(SyntaxKind.IntKeyword)),
82+
SyntaxFactory.DiscardDesignation());
83+
var declarationPatternSyntax = (DeclarationPatternSyntaxWrapper)syntaxNode;
84+
85+
PatternSyntaxWrapper patternSyntax = declarationPatternSyntax;
86+
Assert.Same(syntaxNode, patternSyntax.SyntaxNode);
87+
88+
declarationPatternSyntax = (DeclarationPatternSyntaxWrapper)patternSyntax;
89+
Assert.Same(syntaxNode, declarationPatternSyntax.SyntaxNode);
90+
91+
SyntaxNode syntax = declarationPatternSyntax;
92+
Assert.Same(syntaxNode, syntax);
93+
}
94+
95+
[Fact]
96+
public void TestInvalidConversion()
97+
{
98+
var syntaxNode = SyntaxFactory.LiteralExpression(SyntaxKind.NullLiteralExpression);
99+
Assert.Throws<InvalidCastException>(() => (DeclarationPatternSyntaxWrapper)syntaxNode);
100+
}
101+
}
102+
}

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
@@ -198,6 +198,7 @@
198198
<Compile Include="Lightup\BaseMethodDeclarationSyntaxExtensionsTests.cs" />
199199
<Compile Include="Lightup\ConstantPatternSyntaxWrapperTests.cs" />
200200
<Compile Include="Lightup\ConstructorDeclarationSyntaxExtensionsTests.cs" />
201+
<Compile Include="Lightup\DeclarationPatternSyntaxWrapperTests.cs" />
201202
<Compile Include="Lightup\DestructorDeclarationSyntaxExtensionsTests.cs" />
202203
<Compile Include="Properties\AssemblyInfo.cs" />
203204
</ItemGroup>
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
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 StyleCop.Analyzers.Lightup;
10+
using Xunit;
11+
12+
public class DeclarationPatternSyntaxWrapperTests
13+
{
14+
[Fact]
15+
public void TestNull()
16+
{
17+
var syntaxNode = default(SyntaxNode);
18+
var declarationPatternSyntax = (DeclarationPatternSyntaxWrapper)syntaxNode;
19+
Assert.Null(declarationPatternSyntax.SyntaxNode);
20+
Assert.Throws<NullReferenceException>(() => declarationPatternSyntax.Type);
21+
Assert.Throws<NullReferenceException>(() => declarationPatternSyntax.Designation);
22+
Assert.Throws<NullReferenceException>(() => declarationPatternSyntax.WithType(SyntaxFactory.PredefinedType(SyntaxFactory.Token(SyntaxKind.IntKeyword))));
23+
Assert.Throws<NullReferenceException>(() => declarationPatternSyntax.WithDesignation((VariableDesignationSyntaxWrapper)null));
24+
}
25+
26+
[Fact]
27+
public void TestIsInstance()
28+
{
29+
Assert.False(DeclarationPatternSyntaxWrapper.IsInstance(null));
30+
Assert.False(DeclarationPatternSyntaxWrapper.IsInstance(SyntaxFactory.LiteralExpression(SyntaxKind.NullLiteralExpression)));
31+
}
32+
33+
[Fact]
34+
public void TestConversionsNull()
35+
{
36+
var syntaxNode = default(SyntaxNode);
37+
var declarationPatternSyntax = (DeclarationPatternSyntaxWrapper)syntaxNode;
38+
39+
PatternSyntaxWrapper patternSyntax = declarationPatternSyntax;
40+
Assert.Null(patternSyntax.SyntaxNode);
41+
42+
declarationPatternSyntax = (DeclarationPatternSyntaxWrapper)patternSyntax;
43+
Assert.Null(declarationPatternSyntax.SyntaxNode);
44+
45+
SyntaxNode syntax = declarationPatternSyntax;
46+
Assert.Null(syntax);
47+
}
48+
49+
[Fact]
50+
public void TestInvalidConversion()
51+
{
52+
var syntaxNode = SyntaxFactory.LiteralExpression(SyntaxKind.NullLiteralExpression);
53+
Assert.Throws<InvalidCastException>(() => (DeclarationPatternSyntaxWrapper)syntaxNode);
54+
}
55+
}
56+
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,7 @@
239239
<Compile Include="Lightup\BaseMethodDeclarationSyntaxExtensionsTests.cs" />
240240
<Compile Include="Lightup\ConstantPatternSyntaxWrapperTests.cs" />
241241
<Compile Include="Lightup\ConstructorDeclarationSyntaxExtensionsTests.cs" />
242+
<Compile Include="Lightup\DeclarationPatternSyntaxWrapperTests.cs" />
242243
<Compile Include="Lightup\DestructorDeclarationSyntaxExtensionsTests.cs" />
243244
<Compile Include="LinqHelpers\SyntaxTriviaListEnumerableTests.cs" />
244245
<Compile Include="MaintainabilityRules\DebugMessagesUnitTestsBase.cs" />

0 commit comments

Comments
 (0)