Skip to content

Commit b328def

Browse files
authored
Merge pull request #2405 from bjornhellander/Issue2380_AddTestsForRefTypeSyntaxWrapper
Added tests for RefTypeSyntaxWrapper
2 parents d0cf22a + c41b516 commit b328def

4 files changed

Lines changed: 147 additions & 0 deletions

File tree

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
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 RefTypeSyntaxWrapperTests
14+
{
15+
[Fact]
16+
public void TestNull()
17+
{
18+
var syntaxNode = default(SyntaxNode);
19+
var wrapper = (RefTypeSyntaxWrapper)syntaxNode;
20+
Assert.Null(wrapper.SyntaxNode);
21+
Assert.Throws<NullReferenceException>(() => wrapper.RefKeyword);
22+
Assert.Throws<NullReferenceException>(() => wrapper.Type);
23+
Assert.Throws<NullReferenceException>(() => wrapper.WithType(SyntaxFactory.PredefinedType(SyntaxFactory.Token(SyntaxKind.IntKeyword))));
24+
Assert.Throws<NullReferenceException>(() => wrapper.WithRefKeyword(SyntaxFactory.Token(SyntaxKind.RefKeyword)));
25+
}
26+
27+
[Fact]
28+
public void TestProperties()
29+
{
30+
var syntaxNode = this.CreateRefType();
31+
Assert.True(syntaxNode.IsKind(SyntaxKind.RefType));
32+
Assert.True(syntaxNode.IsKind(SyntaxKindEx.RefType));
33+
34+
var wrapper = (RefTypeSyntaxWrapper)syntaxNode;
35+
Assert.Same(syntaxNode, wrapper.SyntaxNode);
36+
Assert.Same(syntaxNode.Type, wrapper.Type);
37+
Assert.True(syntaxNode.RefKeyword.IsEquivalentTo(wrapper.RefKeyword));
38+
39+
var newType = SyntaxFactory.PointerType(SyntaxFactory.PredefinedType(SyntaxFactory.Token(SyntaxKind.BoolKeyword)));
40+
var wrapperWithModifiedType = wrapper.WithType(newType);
41+
Assert.NotNull(wrapperWithModifiedType.SyntaxNode);
42+
Assert.NotSame(syntaxNode.Type, wrapperWithModifiedType.Type);
43+
Assert.Equal(SyntaxKind.PointerType, wrapperWithModifiedType.Type.Kind());
44+
45+
var newRefKeyword = SyntaxFactory.Token(SyntaxKind.RefKeyword).WithLeadingTrivia(SyntaxFactory.Space);
46+
var wrapperWithModifiedRefKeyword = wrapper.WithRefKeyword(newRefKeyword);
47+
Assert.NotNull(wrapperWithModifiedRefKeyword.SyntaxNode);
48+
Assert.Equal(1, wrapperWithModifiedRefKeyword.RefKeyword.LeadingTrivia.Count);
49+
Assert.Equal(" ", wrapperWithModifiedRefKeyword.RefKeyword.LeadingTrivia.ToString());
50+
}
51+
52+
[Fact]
53+
public void TestIsInstance()
54+
{
55+
Assert.False(RefTypeSyntaxWrapper.IsInstance(null));
56+
Assert.False(RefTypeSyntaxWrapper.IsInstance(SyntaxFactory.LiteralExpression(SyntaxKind.NullLiteralExpression)));
57+
58+
var syntaxNode = this.CreateRefType();
59+
Assert.True(RefTypeSyntaxWrapper.IsInstance(syntaxNode));
60+
}
61+
62+
[Fact]
63+
public void TestConversionsNull()
64+
{
65+
var syntaxNode = default(SyntaxNode);
66+
var wrapper = (RefTypeSyntaxWrapper)syntaxNode;
67+
68+
TypeSyntax syntax = wrapper;
69+
Assert.Null(syntax);
70+
}
71+
72+
[Fact]
73+
public void TestConversions()
74+
{
75+
var syntaxNode = this.CreateRefType();
76+
var wrapper = (RefTypeSyntaxWrapper)syntaxNode;
77+
78+
TypeSyntax syntax = wrapper;
79+
Assert.Same(syntaxNode, syntax);
80+
}
81+
82+
[Fact]
83+
public void TestInvalidConversion()
84+
{
85+
var syntaxNode = SyntaxFactory.LiteralExpression(SyntaxKind.NullLiteralExpression);
86+
Assert.Throws<InvalidCastException>(() => (RefTypeSyntaxWrapper)syntaxNode);
87+
}
88+
89+
private RefTypeSyntax CreateRefType()
90+
{
91+
return SyntaxFactory.RefType(SyntaxFactory.Token(SyntaxKind.RefKeyword), SyntaxFactory.PredefinedType(SyntaxFactory.Token(SyntaxKind.IntKeyword)));
92+
}
93+
}
94+
}

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
@@ -279,6 +279,7 @@
279279
<Compile Include="Lightup\LightupHelpersTestsCSharp7.cs" />
280280
<Compile Include="Lightup\ParenthesizedVariableDesignationSyntaxWrapperTests.cs" />
281281
<Compile Include="Lightup\PatternSyntaxWrapperTests.cs" />
282+
<Compile Include="Lightup\RefTypeSyntaxWrapperTests.cs" />
282283
<Compile Include="Lightup\SingleVariableDesignationSyntaxWrapperTests.cs" />
283284
<Compile Include="Lightup\SyntaxWrapperTests.cs" />
284285
<Compile Include="Lightup\ThrowExpressionSyntaxWrapperTests.cs" />
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
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 RefTypeSyntaxWrapperTests
14+
{
15+
[Fact]
16+
public void TestNull()
17+
{
18+
var syntaxNode = default(SyntaxNode);
19+
var wrapper = (RefTypeSyntaxWrapper)syntaxNode;
20+
Assert.Null(wrapper.SyntaxNode);
21+
Assert.Throws<NullReferenceException>(() => wrapper.Type);
22+
Assert.Throws<NullReferenceException>(() => wrapper.RefKeyword);
23+
Assert.Throws<NullReferenceException>(() => wrapper.WithType(SyntaxFactory.PredefinedType(SyntaxFactory.Token(SyntaxKind.IntKeyword))));
24+
Assert.Throws<NullReferenceException>(() => wrapper.WithRefKeyword(SyntaxFactory.Token(SyntaxKind.IsKeyword)));
25+
}
26+
27+
[Fact]
28+
public void TestIsInstance()
29+
{
30+
Assert.False(RefTypeSyntaxWrapper.IsInstance(null));
31+
Assert.False(RefTypeSyntaxWrapper.IsInstance(SyntaxFactory.LiteralExpression(SyntaxKind.NullLiteralExpression)));
32+
}
33+
34+
[Fact]
35+
public void TestConversionsNull()
36+
{
37+
var syntaxNode = default(SyntaxNode);
38+
var wrapper = (RefTypeSyntaxWrapper)syntaxNode;
39+
40+
TypeSyntax syntax = wrapper;
41+
Assert.Null(syntax);
42+
}
43+
44+
[Fact]
45+
public void TestInvalidConversion()
46+
{
47+
var syntaxNode = SyntaxFactory.LiteralExpression(SyntaxKind.NullLiteralExpression);
48+
Assert.Throws<InvalidCastException>(() => (RefTypeSyntaxWrapper)syntaxNode);
49+
}
50+
}
51+
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,7 @@
247247
<Compile Include="Lightup\LightupHelpersTests.cs" />
248248
<Compile Include="Lightup\ParenthesizedVariableDesignationSyntaxWrapperTests.cs" />
249249
<Compile Include="Lightup\PatternSyntaxWrapperTests.cs" />
250+
<Compile Include="Lightup\RefTypeSyntaxWrapperTests.cs" />
250251
<Compile Include="Lightup\SeparatedSyntaxListWrapperTestBase.cs" />
251252
<Compile Include="Lightup\SingleVariableDesignationSyntaxWrapperTests.cs" />
252253
<Compile Include="Lightup\SyntaxWrapperTests.cs" />

0 commit comments

Comments
 (0)