Skip to content

Commit d46e3fc

Browse files
committed
Add tests for TupleTypeSyntaxWrapper
Fixes #2381
1 parent 3a8288b commit d46e3fc

4 files changed

Lines changed: 162 additions & 0 deletions

File tree

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
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 TupleTypeSyntaxWrapperTests
15+
{
16+
[Fact]
17+
public void TestNull()
18+
{
19+
var syntaxNode = default(SyntaxNode);
20+
var wrapper = (TupleTypeSyntaxWrapper)syntaxNode;
21+
Assert.Null(wrapper.SyntaxNode);
22+
Assert.Throws<NullReferenceException>(() => wrapper.OpenParenToken);
23+
Assert.Throws<NullReferenceException>(() => wrapper.Elements);
24+
Assert.Throws<NullReferenceException>(() => wrapper.CloseParenToken);
25+
Assert.Throws<NullReferenceException>(() => wrapper.WithOpenParenToken(SyntaxFactory.Token(SyntaxKind.OpenParenToken)));
26+
Assert.Throws<NullReferenceException>(() => wrapper.WithElements(SeparatedSyntaxListWrapper<TupleElementSyntaxWrapper>.UnsupportedEmpty));
27+
Assert.Throws<NullReferenceException>(() => wrapper.WithCloseParenToken(SyntaxFactory.Token(SyntaxKind.CloseParenToken)));
28+
}
29+
30+
[Fact]
31+
public void TestProperties()
32+
{
33+
var syntaxNode = this.CreateTupleType();
34+
Assert.True(syntaxNode.IsKind(SyntaxKind.TupleType));
35+
Assert.True(syntaxNode.IsKind(SyntaxKindEx.TupleType));
36+
37+
var wrapper = (TupleTypeSyntaxWrapper)syntaxNode;
38+
Assert.Same(syntaxNode, wrapper.SyntaxNode);
39+
Assert.True(syntaxNode.OpenParenToken.IsEquivalentTo(wrapper.OpenParenToken));
40+
Assert.Same(syntaxNode.Elements[0], wrapper.Elements[0].SyntaxNode);
41+
Assert.True(syntaxNode.CloseParenToken.IsEquivalentTo(wrapper.CloseParenToken));
42+
43+
var newOpenParenToken = SyntaxFactory.Token(SyntaxKind.OpenParenToken).WithLeadingTrivia(SyntaxFactory.Space);
44+
var wrapperWithModifiedOpenParenToken = wrapper.WithOpenParenToken(newOpenParenToken);
45+
Assert.NotNull(wrapperWithModifiedOpenParenToken.SyntaxNode);
46+
Assert.Equal(1, wrapperWithModifiedOpenParenToken.OpenParenToken.LeadingTrivia.Count);
47+
Assert.Equal(" ", wrapperWithModifiedOpenParenToken.OpenParenToken.LeadingTrivia.ToString());
48+
49+
var newElements = wrapper.Elements.Replace(wrapper.Elements[0], (TupleElementSyntaxWrapper)SyntaxFactory.TupleElement(SyntaxFactory.PredefinedType(SyntaxFactory.Token(SyntaxKind.StringKeyword))));
50+
var wrapperWithModifiedElements = wrapper.WithElements(newElements);
51+
Assert.NotNull(wrapperWithModifiedElements.SyntaxNode);
52+
Assert.NotSame(syntaxNode.Elements[0], wrapperWithModifiedElements.Elements[0]);
53+
Assert.Equal(SyntaxKind.StringKeyword, ((PredefinedTypeSyntax)wrapperWithModifiedElements.Elements[0].Type).Keyword.Kind());
54+
55+
var newCloseParenToken = SyntaxFactory.Token(SyntaxKind.CloseParenToken).WithLeadingTrivia(SyntaxFactory.Space);
56+
var wrapperWithModifiedCloseParenToken = wrapper.WithCloseParenToken(newCloseParenToken);
57+
Assert.NotNull(wrapperWithModifiedCloseParenToken.SyntaxNode);
58+
Assert.Equal(1, wrapperWithModifiedCloseParenToken.CloseParenToken.LeadingTrivia.Count);
59+
Assert.Equal(" ", wrapperWithModifiedCloseParenToken.CloseParenToken.LeadingTrivia.ToString());
60+
}
61+
62+
[Fact]
63+
public void TestIsInstance()
64+
{
65+
Assert.False(TupleTypeSyntaxWrapper.IsInstance(null));
66+
Assert.False(TupleTypeSyntaxWrapper.IsInstance(SyntaxFactory.LiteralExpression(SyntaxKind.NullLiteralExpression)));
67+
68+
var syntaxNode = this.CreateTupleType();
69+
Assert.True(TupleTypeSyntaxWrapper.IsInstance(syntaxNode));
70+
}
71+
72+
[Fact]
73+
public void TestConversionsNull()
74+
{
75+
var syntaxNode = default(SyntaxNode);
76+
var wrapper = (TupleTypeSyntaxWrapper)syntaxNode;
77+
78+
TypeSyntax syntax = wrapper;
79+
Assert.Null(syntax);
80+
}
81+
82+
[Fact]
83+
public void TestConversions()
84+
{
85+
var syntaxNode = this.CreateTupleType();
86+
var wrapper = (TupleTypeSyntaxWrapper)syntaxNode;
87+
88+
TypeSyntax syntax = wrapper;
89+
Assert.Same(syntaxNode, syntax);
90+
}
91+
92+
[Fact]
93+
public void TestInvalidConversion()
94+
{
95+
var syntaxNode = SyntaxFactory.LiteralExpression(SyntaxKind.NullLiteralExpression);
96+
Assert.Throws<InvalidCastException>(() => (TupleTypeSyntaxWrapper)syntaxNode);
97+
}
98+
99+
private TupleTypeSyntax CreateTupleType()
100+
{
101+
return SyntaxFactory.TupleType(
102+
SyntaxFactory.SeparatedList(ImmutableArray.Create(
103+
SyntaxFactory.TupleElement(SyntaxFactory.PredefinedType(SyntaxFactory.Token(SyntaxKind.IntKeyword))),
104+
SyntaxFactory.TupleElement(SyntaxFactory.PredefinedType(SyntaxFactory.Token(SyntaxKind.UIntKeyword))))));
105+
}
106+
}
107+
}

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\TupleTypeSyntaxWrapperTests.cs" />
288289
<Compile Include="Lightup\VariableDesignationSyntaxWrapperTests.cs" />
289290
<Compile Include="Lightup\WhenClauseSyntaxWrapperTests.cs" />
290291
<Compile Include="MaintainabilityRules\SA1119CSharp7UnitTests.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 TupleTypeSyntaxWrapperTests
14+
{
15+
[Fact]
16+
public void TestNull()
17+
{
18+
var syntaxNode = default(SyntaxNode);
19+
var wrapper = (TupleTypeSyntaxWrapper)syntaxNode;
20+
Assert.Null(wrapper.SyntaxNode);
21+
Assert.Throws<NullReferenceException>(() => wrapper.OpenParenToken);
22+
Assert.Throws<NullReferenceException>(() => wrapper.Elements);
23+
Assert.Throws<NullReferenceException>(() => wrapper.CloseParenToken);
24+
Assert.Throws<NullReferenceException>(() => wrapper.WithOpenParenToken(SyntaxFactory.Token(SyntaxKind.OpenParenToken)));
25+
Assert.Throws<NullReferenceException>(() => wrapper.WithElements(SeparatedSyntaxListWrapper<TupleElementSyntaxWrapper>.UnsupportedEmpty));
26+
Assert.Throws<NullReferenceException>(() => wrapper.WithCloseParenToken(SyntaxFactory.Token(SyntaxKind.CloseParenToken)));
27+
}
28+
29+
[Fact]
30+
public void TestIsInstance()
31+
{
32+
Assert.False(TupleTypeSyntaxWrapper.IsInstance(null));
33+
Assert.False(TupleTypeSyntaxWrapper.IsInstance(SyntaxFactory.LiteralExpression(SyntaxKind.NullLiteralExpression)));
34+
}
35+
36+
[Fact]
37+
public void TestConversionsNull()
38+
{
39+
var syntaxNode = default(SyntaxNode);
40+
var wrapper = (TupleTypeSyntaxWrapper)syntaxNode;
41+
42+
TypeSyntax syntax = wrapper;
43+
Assert.Null(syntax);
44+
}
45+
46+
[Fact]
47+
public void TestInvalidConversion()
48+
{
49+
var syntaxNode = SyntaxFactory.LiteralExpression(SyntaxKind.NullLiteralExpression);
50+
Assert.Throws<InvalidCastException>(() => (TupleTypeSyntaxWrapper)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
@@ -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\TupleTypeSyntaxWrapperTests.cs" />
269270
<Compile Include="Lightup\UnsupportedSyntaxListTests.cs" />
270271
<Compile Include="Lightup\VariableDesignationSyntaxWrapperTests.cs" />
271272
<Compile Include="Lightup\WhenClauseSyntaxWrapperTests.cs" />

0 commit comments

Comments
 (0)