Skip to content

Commit f22fe9d

Browse files
committed
Add tests for DeclarationExpressionSyntaxWrapper
Fixes #2374
1 parent ae0764a commit f22fe9d

4 files changed

Lines changed: 164 additions & 0 deletions

File tree

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

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
@@ -272,6 +272,7 @@
272272
<Compile Include="Lightup\BaseMethodDeclarationSyntaxExtensionsTests.cs" />
273273
<Compile Include="Lightup\ConstantPatternSyntaxWrapperTests.cs" />
274274
<Compile Include="Lightup\ConstructorDeclarationSyntaxExtensionsTests.cs" />
275+
<Compile Include="Lightup\DeclarationExpressionSyntaxWrapperTests.cs" />
275276
<Compile Include="Lightup\DeclarationPatternSyntaxWrapperTests.cs" />
276277
<Compile Include="Lightup\DestructorDeclarationSyntaxExtensionsTests.cs" />
277278
<Compile Include="Lightup\DiscardDesignationSyntaxWrapperTests.cs" />
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
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 DeclarationExpressionSyntaxWrapperTests
14+
{
15+
[Fact]
16+
public void TestNull()
17+
{
18+
var syntaxNode = default(SyntaxNode);
19+
var declarationExpressionSyntax = (DeclarationExpressionSyntaxWrapper)syntaxNode;
20+
Assert.Null(declarationExpressionSyntax.SyntaxNode);
21+
Assert.Throws<NullReferenceException>(() => declarationExpressionSyntax.Type);
22+
Assert.Throws<NullReferenceException>(() => declarationExpressionSyntax.Designation);
23+
Assert.Throws<NullReferenceException>(() => declarationExpressionSyntax.WithType(SyntaxFactory.PredefinedType(SyntaxFactory.Token(SyntaxKind.IntKeyword))));
24+
Assert.Throws<NullReferenceException>(() => declarationExpressionSyntax.WithDesignation((VariableDesignationSyntaxWrapper)null));
25+
}
26+
27+
[Fact]
28+
public void TestIsInstance()
29+
{
30+
Assert.False(DeclarationExpressionSyntaxWrapper.IsInstance(null));
31+
Assert.False(DeclarationExpressionSyntaxWrapper.IsInstance(SyntaxFactory.LiteralExpression(SyntaxKind.NullLiteralExpression)));
32+
}
33+
34+
[Fact]
35+
public void TestConversionsNull()
36+
{
37+
var syntaxNode = default(SyntaxNode);
38+
var declarationExpressionSyntax = (DeclarationExpressionSyntaxWrapper)syntaxNode;
39+
40+
ExpressionSyntax expressionSyntax = declarationExpressionSyntax;
41+
Assert.Null(expressionSyntax);
42+
43+
declarationExpressionSyntax = (DeclarationExpressionSyntaxWrapper)expressionSyntax;
44+
Assert.Null(declarationExpressionSyntax.SyntaxNode);
45+
46+
SyntaxNode syntax = declarationExpressionSyntax;
47+
Assert.Null(syntax);
48+
}
49+
50+
[Fact]
51+
public void TestInvalidConversion()
52+
{
53+
var syntaxNode = SyntaxFactory.LiteralExpression(SyntaxKind.NullLiteralExpression);
54+
Assert.Throws<InvalidCastException>(() => (DeclarationExpressionSyntaxWrapper)syntaxNode);
55+
}
56+
}
57+
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,7 @@
252252
<Compile Include="Lightup\BaseMethodDeclarationSyntaxExtensionsTests.cs" />
253253
<Compile Include="Lightup\ConstantPatternSyntaxWrapperTests.cs" />
254254
<Compile Include="Lightup\ConstructorDeclarationSyntaxExtensionsTests.cs" />
255+
<Compile Include="Lightup\DeclarationExpressionSyntaxWrapperTests.cs" />
255256
<Compile Include="Lightup\DeclarationPatternSyntaxWrapperTests.cs" />
256257
<Compile Include="Lightup\DestructorDeclarationSyntaxExtensionsTests.cs" />
257258
<Compile Include="Lightup\DiscardDesignationSyntaxWrapperTests.cs" />

0 commit comments

Comments
 (0)