Skip to content

Commit 9d13157

Browse files
Added tests for WhenClauseSyntaxWrapper.
1 parent c33ff28 commit 9d13157

4 files changed

Lines changed: 146 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 WhenClauseSyntaxWrapperTests
14+
{
15+
[Fact]
16+
public void TestNull()
17+
{
18+
var syntaxNode = default(SyntaxNode);
19+
var wrapper = (WhenClauseSyntaxWrapper)syntaxNode;
20+
Assert.Null(wrapper.SyntaxNode);
21+
Assert.Throws<NullReferenceException>(() => wrapper.WhenKeyword);
22+
Assert.Throws<NullReferenceException>(() => wrapper.Condition);
23+
Assert.Throws<NullReferenceException>(() => wrapper.WithCondition(SyntaxFactory.LiteralExpression(SyntaxKind.TrueLiteralExpression)));
24+
Assert.Throws<NullReferenceException>(() => wrapper.WithWhenKeyword(SyntaxFactory.Token(SyntaxKind.WhenKeyword)));
25+
}
26+
27+
[Fact]
28+
public void TestProperties()
29+
{
30+
var syntaxNode = this.CreateWhenClause();
31+
Assert.True(syntaxNode.IsKind(SyntaxKind.WhenClause));
32+
Assert.True(syntaxNode.IsKind(SyntaxKindEx.WhenClause));
33+
34+
var wrapper = (WhenClauseSyntaxWrapper)syntaxNode;
35+
Assert.Same(syntaxNode, wrapper.SyntaxNode);
36+
Assert.Same(syntaxNode.Condition, wrapper.Condition);
37+
Assert.True(syntaxNode.WhenKeyword.IsEquivalentTo(wrapper.WhenKeyword));
38+
39+
var newCondition = SyntaxFactory.LiteralExpression(SyntaxKind.FalseLiteralExpression);
40+
var wrapperWithModifiedCondition = wrapper.WithCondition(newCondition);
41+
Assert.NotNull(wrapperWithModifiedCondition.SyntaxNode);
42+
Assert.NotSame(syntaxNode.Condition, wrapperWithModifiedCondition.Condition);
43+
Assert.Equal(SyntaxKind.FalseLiteralExpression, wrapperWithModifiedCondition.Condition.Kind());
44+
45+
var newWhenKeyword = SyntaxFactory.Token(SyntaxKind.WhenKeyword).WithLeadingTrivia(SyntaxFactory.Space);
46+
var wrapperWithModifiedWhenKeyword = wrapper.WithWhenKeyword(newWhenKeyword);
47+
Assert.NotNull(wrapperWithModifiedWhenKeyword.SyntaxNode);
48+
Assert.Equal(1, wrapperWithModifiedWhenKeyword.WhenKeyword.LeadingTrivia.Count);
49+
Assert.Equal(" ", wrapperWithModifiedWhenKeyword.WhenKeyword.LeadingTrivia.ToString());
50+
}
51+
52+
[Fact]
53+
public void TestIsInstance()
54+
{
55+
Assert.False(WhenClauseSyntaxWrapper.IsInstance(null));
56+
Assert.False(WhenClauseSyntaxWrapper.IsInstance(SyntaxFactory.LiteralExpression(SyntaxKind.NullLiteralExpression)));
57+
58+
var syntaxNode = this.CreateWhenClause();
59+
Assert.True(WhenClauseSyntaxWrapper.IsInstance(syntaxNode));
60+
}
61+
62+
[Fact]
63+
public void TestConversionsNull()
64+
{
65+
var syntaxNode = default(SyntaxNode);
66+
var wrapper = (WhenClauseSyntaxWrapper)syntaxNode;
67+
68+
CSharpSyntaxNode syntax = wrapper;
69+
Assert.Null(syntax);
70+
}
71+
72+
[Fact]
73+
public void TestConversions()
74+
{
75+
var syntaxNode = this.CreateWhenClause();
76+
var wrapper = (WhenClauseSyntaxWrapper)syntaxNode;
77+
78+
CSharpSyntaxNode 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>(() => (WhenClauseSyntaxWrapper)syntaxNode);
87+
}
88+
89+
private WhenClauseSyntax CreateWhenClause()
90+
{
91+
return SyntaxFactory.WhenClause(SyntaxFactory.Token(SyntaxKind.WhenKeyword), SyntaxFactory.LiteralExpression(SyntaxKind.TrueLiteralExpression));
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
@@ -282,6 +282,7 @@
282282
<Compile Include="Lightup\SingleVariableDesignationSyntaxWrapperTests.cs" />
283283
<Compile Include="Lightup\SyntaxWrapperTests.cs" />
284284
<Compile Include="Lightup\VariableDesignationSyntaxWrapperTests.cs" />
285+
<Compile Include="Lightup\WhenClauseSyntaxWrapperTests.cs" />
285286
<Compile Include="MaintainabilityRules\SA1119CSharp7UnitTests.cs" />
286287
<Compile Include="MaintainabilityRules\SA1400CSharp7UnitTests.cs" />
287288
<Compile Include="MaintainabilityRules\SA1401CSharp7UnitTests.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 WhenClauseSyntaxWrapperTests
13+
{
14+
[Fact]
15+
public void TestNull()
16+
{
17+
var syntaxNode = default(SyntaxNode);
18+
var wrapper = (WhenClauseSyntaxWrapper)syntaxNode;
19+
Assert.Null(wrapper.SyntaxNode);
20+
Assert.Throws<NullReferenceException>(() => wrapper.Condition);
21+
Assert.Throws<NullReferenceException>(() => wrapper.WhenKeyword);
22+
Assert.Throws<NullReferenceException>(() => wrapper.WithCondition(SyntaxFactory.LiteralExpression(SyntaxKind.NullLiteralExpression)));
23+
Assert.Throws<NullReferenceException>(() => wrapper.WithWhenKeyword(SyntaxFactory.Token(SyntaxKind.IsKeyword)));
24+
}
25+
26+
[Fact]
27+
public void TestIsInstance()
28+
{
29+
Assert.False(WhenClauseSyntaxWrapper.IsInstance(null));
30+
Assert.False(WhenClauseSyntaxWrapper.IsInstance(SyntaxFactory.LiteralExpression(SyntaxKind.NullLiteralExpression)));
31+
}
32+
33+
[Fact]
34+
public void TestConversionsNull()
35+
{
36+
var syntaxNode = default(SyntaxNode);
37+
var wrapper = (WhenClauseSyntaxWrapper)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>(() => (WhenClauseSyntaxWrapper)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
@@ -252,6 +252,7 @@
252252
<Compile Include="Lightup\SyntaxWrapperTests.cs" />
253253
<Compile Include="Lightup\UnsupportedSyntaxListTests.cs" />
254254
<Compile Include="Lightup\VariableDesignationSyntaxWrapperTests.cs" />
255+
<Compile Include="Lightup\WhenClauseSyntaxWrapperTests.cs" />
255256
<Compile Include="LinqHelpers\SyntaxTriviaListEnumerableTests.cs" />
256257
<Compile Include="MaintainabilityRules\DebugMessagesUnitTestsBase.cs" />
257258
<Compile Include="MaintainabilityRules\FileMayOnlyContainTestBase.cs" />

0 commit comments

Comments
 (0)