Skip to content

Commit ba7c3c1

Browse files
committed
Add tests for TupleElementSyntaxWrapper
Fixes #2385
1 parent f1c8266 commit ba7c3c1

4 files changed

Lines changed: 149 additions & 0 deletions

File tree

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
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 System.Collections.Immutable;
8+
using Microsoft.CodeAnalysis;
9+
using Microsoft.CodeAnalysis.CSharp;
10+
using Microsoft.CodeAnalysis.CSharp.Syntax;
11+
using StyleCop.Analyzers.Lightup;
12+
using Xunit;
13+
14+
public class TupleElementSyntaxWrapperTests
15+
{
16+
[Fact]
17+
public void TestNull()
18+
{
19+
var syntaxNode = default(SyntaxNode);
20+
var wrapper = (TupleElementSyntaxWrapper)syntaxNode;
21+
Assert.Null(wrapper.SyntaxNode);
22+
Assert.Throws<NullReferenceException>(() => wrapper.Type);
23+
Assert.Throws<NullReferenceException>(() => wrapper.Identifier);
24+
Assert.Throws<NullReferenceException>(() => wrapper.WithType(SyntaxFactory.PredefinedType(SyntaxFactory.Token(SyntaxKind.StringKeyword))));
25+
Assert.Throws<NullReferenceException>(() => wrapper.WithIdentifier(SyntaxFactory.Identifier("x")));
26+
}
27+
28+
[Fact]
29+
public void TestProperties()
30+
{
31+
var syntaxNode = this.CreateTupleElement();
32+
Assert.True(syntaxNode.IsKind(SyntaxKind.TupleElement));
33+
Assert.True(syntaxNode.IsKind(SyntaxKindEx.TupleElement));
34+
35+
var wrapper = (TupleElementSyntaxWrapper)syntaxNode;
36+
Assert.Same(syntaxNode, wrapper.SyntaxNode);
37+
Assert.Same(syntaxNode.Type, wrapper.Type);
38+
Assert.True(syntaxNode.Identifier.IsEquivalentTo(wrapper.Identifier));
39+
40+
var newType = SyntaxFactory.PredefinedType(SyntaxFactory.Token(SyntaxKind.UIntKeyword));
41+
var wrapperWithModifiedType = wrapper.WithType(newType);
42+
Assert.NotNull(wrapperWithModifiedType.SyntaxNode);
43+
Assert.NotSame(syntaxNode.Type, wrapperWithModifiedType.Type);
44+
Assert.Equal(SyntaxKind.UIntKeyword, ((PredefinedTypeSyntax)wrapperWithModifiedType.Type).Keyword.Kind());
45+
46+
var newIdentifier = SyntaxFactory.Identifier("y").WithLeadingTrivia(SyntaxFactory.Space);
47+
var wrapperWithModifiedIdentifier = wrapper.WithIdentifier(newIdentifier);
48+
Assert.NotNull(wrapperWithModifiedIdentifier.SyntaxNode);
49+
Assert.Equal(1, wrapperWithModifiedIdentifier.Identifier.LeadingTrivia.Count);
50+
Assert.Equal(" ", wrapperWithModifiedIdentifier.Identifier.LeadingTrivia.ToString());
51+
}
52+
53+
[Fact]
54+
public void TestIsInstance()
55+
{
56+
Assert.False(TupleElementSyntaxWrapper.IsInstance(null));
57+
Assert.False(TupleElementSyntaxWrapper.IsInstance(SyntaxFactory.LiteralExpression(SyntaxKind.NullLiteralExpression)));
58+
59+
var syntaxNode = this.CreateTupleElement();
60+
Assert.True(TupleElementSyntaxWrapper.IsInstance(syntaxNode));
61+
}
62+
63+
[Fact]
64+
public void TestConversionsNull()
65+
{
66+
var syntaxNode = default(SyntaxNode);
67+
var wrapper = (TupleElementSyntaxWrapper)syntaxNode;
68+
69+
CSharpSyntaxNode syntax = wrapper;
70+
Assert.Null(syntax);
71+
}
72+
73+
[Fact]
74+
public void TestConversions()
75+
{
76+
var syntaxNode = this.CreateTupleElement();
77+
var wrapper = (TupleElementSyntaxWrapper)syntaxNode;
78+
79+
CSharpSyntaxNode syntax = wrapper;
80+
Assert.Same(syntaxNode, syntax);
81+
}
82+
83+
[Fact]
84+
public void TestInvalidConversion()
85+
{
86+
var syntaxNode = SyntaxFactory.LiteralExpression(SyntaxKind.NullLiteralExpression);
87+
Assert.Throws<InvalidCastException>(() => (TupleElementSyntaxWrapper)syntaxNode);
88+
}
89+
90+
private TupleElementSyntax CreateTupleElement()
91+
{
92+
return SyntaxFactory.TupleElement(
93+
SyntaxFactory.PredefinedType(SyntaxFactory.Token(SyntaxKind.IntKeyword)),
94+
SyntaxFactory.Identifier("id"));
95+
}
96+
}
97+
}

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
@@ -285,6 +285,7 @@
285285
<Compile Include="Lightup\SingleVariableDesignationSyntaxWrapperTests.cs" />
286286
<Compile Include="Lightup\SyntaxWrapperTests.cs" />
287287
<Compile Include="Lightup\ThrowExpressionSyntaxWrapperTests.cs" />
288+
<Compile Include="Lightup\TupleElementSyntaxWrapperTests.cs" />
288289
<Compile Include="Lightup\TupleExpressionSyntaxWrapperTests.cs" />
289290
<Compile Include="Lightup\TupleTypeSyntaxWrapperTests.cs" />
290291
<Compile Include="Lightup\VariableDesignationSyntaxWrapperTests.cs" />
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
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 TupleElementSyntaxWrapperTests
13+
{
14+
[Fact]
15+
public void TestNull()
16+
{
17+
var syntaxNode = default(SyntaxNode);
18+
var wrapper = (TupleElementSyntaxWrapper)syntaxNode;
19+
Assert.Null(wrapper.SyntaxNode);
20+
Assert.Throws<NullReferenceException>(() => wrapper.Type);
21+
Assert.Throws<NullReferenceException>(() => wrapper.Identifier);
22+
Assert.Throws<NullReferenceException>(() => wrapper.WithType(SyntaxFactory.PredefinedType(SyntaxFactory.Token(SyntaxKind.StringKeyword))));
23+
Assert.Throws<NullReferenceException>(() => wrapper.WithIdentifier(SyntaxFactory.Identifier("x")));
24+
}
25+
26+
[Fact]
27+
public void TestIsInstance()
28+
{
29+
Assert.False(TupleElementSyntaxWrapper.IsInstance(null));
30+
Assert.False(TupleElementSyntaxWrapper.IsInstance(SyntaxFactory.LiteralExpression(SyntaxKind.NullLiteralExpression)));
31+
}
32+
33+
[Fact]
34+
public void TestConversionsNull()
35+
{
36+
var syntaxNode = default(SyntaxNode);
37+
var wrapper = (TupleElementSyntaxWrapper)syntaxNode;
38+
39+
CSharpSyntaxNode syntax = wrapper;
40+
Assert.Null(syntax);
41+
}
42+
43+
[Fact]
44+
public void TestInvalidConversion()
45+
{
46+
var syntaxNode = SyntaxFactory.LiteralExpression(SyntaxKind.NullLiteralExpression);
47+
Assert.Throws<InvalidCastException>(() => (TupleElementSyntaxWrapper)syntaxNode);
48+
}
49+
}
50+
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,7 @@
266266
<Compile Include="Lightup\SingleVariableDesignationSyntaxWrapperTests.cs" />
267267
<Compile Include="Lightup\SyntaxWrapperTests.cs" />
268268
<Compile Include="Lightup\ThrowExpressionSyntaxWrapperTests.cs" />
269+
<Compile Include="Lightup\TupleElementSyntaxWrapperTests.cs" />
269270
<Compile Include="Lightup\TupleExpressionSyntaxWrapperTests.cs" />
270271
<Compile Include="Lightup\TupleTypeSyntaxWrapperTests.cs" />
271272
<Compile Include="Lightup\UnsupportedSyntaxListTests.cs" />

0 commit comments

Comments
 (0)