Skip to content

Commit 786abd3

Browse files
committed
Add tests for and fix bugs in AccessLevelHelper.CombineEffectiveAccessibility
1 parent f860d0c commit 786abd3

3 files changed

Lines changed: 51 additions & 3 deletions

File tree

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
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.HelperTests
5+
{
6+
using Analyzers.Helpers;
7+
using Microsoft.CodeAnalysis;
8+
using Xunit;
9+
10+
public class AccessLevelHelperTests
11+
{
12+
[Fact]
13+
public void TestCombineEffectiveAccessibility()
14+
{
15+
// If enclosing is private, declared does not matter
16+
Assert.Equal(Accessibility.Private, AccessLevelHelper.CombineEffectiveAccessibility(Accessibility.NotApplicable, Accessibility.Private));
17+
Assert.Equal(Accessibility.Private, AccessLevelHelper.CombineEffectiveAccessibility(Accessibility.Private, Accessibility.Private));
18+
Assert.Equal(Accessibility.Private, AccessLevelHelper.CombineEffectiveAccessibility(Accessibility.Internal, Accessibility.Private));
19+
Assert.Equal(Accessibility.Private, AccessLevelHelper.CombineEffectiveAccessibility(Accessibility.Protected, Accessibility.Private));
20+
Assert.Equal(Accessibility.Private, AccessLevelHelper.CombineEffectiveAccessibility(Accessibility.Public, Accessibility.Private));
21+
22+
// Test enclosing is ProtectedAndInternal
23+
Assert.Equal(Accessibility.Private, AccessLevelHelper.CombineEffectiveAccessibility(Accessibility.Private, Accessibility.ProtectedAndInternal));
24+
Assert.Equal(Accessibility.ProtectedAndInternal, AccessLevelHelper.CombineEffectiveAccessibility(Accessibility.Public, Accessibility.ProtectedAndInternal));
25+
26+
// Test enclosing is Protected
27+
Assert.Equal(Accessibility.Private, AccessLevelHelper.CombineEffectiveAccessibility(Accessibility.Private, Accessibility.Protected));
28+
Assert.Equal(Accessibility.ProtectedAndInternal, AccessLevelHelper.CombineEffectiveAccessibility(Accessibility.Internal, Accessibility.Protected));
29+
Assert.Equal(Accessibility.Protected, AccessLevelHelper.CombineEffectiveAccessibility(Accessibility.Public, Accessibility.Protected));
30+
31+
// Test enclosing is Internal
32+
Assert.Equal(Accessibility.Private, AccessLevelHelper.CombineEffectiveAccessibility(Accessibility.Private, Accessibility.Internal));
33+
Assert.Equal(Accessibility.ProtectedAndInternal, AccessLevelHelper.CombineEffectiveAccessibility(Accessibility.Protected, Accessibility.Internal));
34+
Assert.Equal(Accessibility.Internal, AccessLevelHelper.CombineEffectiveAccessibility(Accessibility.Public, Accessibility.Internal));
35+
36+
// Test enclosing is ProtectedOrInternal
37+
Assert.Equal(Accessibility.Private, AccessLevelHelper.CombineEffectiveAccessibility(Accessibility.Private, Accessibility.ProtectedOrInternal));
38+
Assert.Equal(Accessibility.ProtectedOrInternal, AccessLevelHelper.CombineEffectiveAccessibility(Accessibility.Public, Accessibility.ProtectedOrInternal));
39+
40+
// Test enclosing is Public
41+
Assert.Equal(Accessibility.Private, AccessLevelHelper.CombineEffectiveAccessibility(Accessibility.Private, Accessibility.Public));
42+
Assert.Equal(Accessibility.Public, AccessLevelHelper.CombineEffectiveAccessibility(Accessibility.Public, Accessibility.Public));
43+
}
44+
}
45+
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@
170170
<Compile Include="Helpers\DiagnosticVerifier.Helper.cs" />
171171
<Compile Include="Helpers\ExclusionTestAnalyzer.cs" />
172172
<Compile Include="Helpers\TestDiagnosticProvider.cs" />
173+
<Compile Include="HelperTests\AccessLevelHelperTests.cs" />
173174
<Compile Include="HelperTests\TokenHelperTests.cs" />
174175
<Compile Include="HelperTests\TriviaHelperTests.cs" />
175176
<Compile Include="LayoutRules\SA1500\SA1500UnitTests.Blocks.cs" />

StyleCop.Analyzers/StyleCop.Analyzers/Helpers/AccessLevelHelper.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -503,9 +503,11 @@ internal static Accessibility CombineEffectiveAccessibility(Accessibility declar
503503
{
504504
case Accessibility.NotApplicable:
505505
case Accessibility.Private:
506+
return declaredAccessibility;
507+
506508
case Accessibility.ProtectedAndInternal:
507509
case Accessibility.Internal:
508-
return declaredAccessibility;
510+
return Accessibility.ProtectedAndInternal;
509511

510512
case Accessibility.Protected:
511513
case Accessibility.ProtectedOrInternal:
@@ -519,9 +521,9 @@ internal static Accessibility CombineEffectiveAccessibility(Accessibility declar
519521
{
520522
case Accessibility.NotApplicable:
521523
case Accessibility.Private:
522-
case Accessibility.ProtectedAndInternal:
523524
return declaredAccessibility;
524525

526+
case Accessibility.ProtectedAndInternal:
525527
case Accessibility.Protected:
526528
return Accessibility.ProtectedAndInternal;
527529

@@ -545,7 +547,7 @@ internal static Accessibility CombineEffectiveAccessibility(Accessibility declar
545547

546548
case Accessibility.Public:
547549
default:
548-
return Accessibility.Public;
550+
return Accessibility.ProtectedOrInternal;
549551
}
550552

551553
case Accessibility.Public:

0 commit comments

Comments
 (0)