File: Microsoft.CodeQuality.Analyzers\ApiDesignGuidelines\EventsShouldNotHaveBeforeOrAfterPrefixTests.cs
Web Access
Project: ..\..\..\src\Microsoft.CodeAnalysis.NetAnalyzers\tests\Microsoft.CodeAnalysis.NetAnalyzers.UnitTests\Microsoft.CodeAnalysis.NetAnalyzers.UnitTests.csproj (Microsoft.CodeAnalysis.NetAnalyzers.UnitTests)
// Copyright (c) Microsoft.  All Rights Reserved.  Licensed under the MIT license.  See License.txt in the project root for license information.
 
using System.Threading.Tasks;
using Xunit;
using VerifyCS = Test.Utilities.CSharpCodeFixVerifier<
    Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.EventsShouldNotHaveBeforeOrAfterPrefix,
    Microsoft.CodeAnalysis.Testing.EmptyCodeFixProvider>;
using VerifyVB = Test.Utilities.VisualBasicCodeFixVerifier<
    Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.EventsShouldNotHaveBeforeOrAfterPrefix,
    Microsoft.CodeAnalysis.Testing.EmptyCodeFixProvider>;
 
namespace Microsoft.CodeQuality.Analyzers.ApiDesignGuidelines.UnitTests
{
    public class EventsShouldNotHaveBeforeOrAfterPrefixTests
    {
        [Fact]
        public async Task CA1713_EventNameStartsWithAfter_DiagnosticAsync()
        {
            await VerifyCS.VerifyAnalyzerAsync(@"
using System;
public class Class1
{
    public event EventHandler [|AfterClose|];
}");
 
            await VerifyVB.VerifyAnalyzerAsync(@"
Imports System
Public Class Class1
    Public Event [|AfterClose|] As EventHandler
End Class
");
        }
 
        [Fact]
        public async Task CA1713_EventNameStartsWithBefore_DiagnosticAsync()
        {
            await VerifyCS.VerifyAnalyzerAsync(@"
using System;
public class Class1
{
    public event EventHandler [|BeforeClose|];
}");
 
            await VerifyVB.VerifyAnalyzerAsync(@"
Imports System
Public Class Class1
    Public Event [|BeforeClose|] As EventHandler
End Class
");
        }
 
        [Fact]
        public async Task CA1713_ValidEventName_NoDiagnosticAsync()
        {
            await VerifyCS.VerifyAnalyzerAsync(@"
using System;
public class Class1
{
    public event EventHandler Closing;
    public event EventHandler Closed;
}");
 
            await VerifyVB.VerifyAnalyzerAsync(@"
Imports System
Public Class Class1
    Public Event Closing As EventHandler
    Public Event Closed As EventHandler
End Class
");
        }
 
        [Fact]
        public async Task CA1713_EventNameIsExactlyThePrefix_NoDiagnosticAsync()
        {
            await VerifyCS.VerifyAnalyzerAsync(@"
using System;
public class Class1
{
    public event EventHandler After;
    public event EventHandler Before;
}");
 
            await VerifyVB.VerifyAnalyzerAsync(@"
Imports System
Public Class Class1
    Public Event After As EventHandler
    Public Event Before As EventHandler
End Class
");
        }
 
        [Fact]
        public async Task CA1713_CharAfterPrefixIsNotUpperCase_NoDiagnosticAsync()
        {
            await VerifyCS.VerifyAnalyzerAsync(@"
using System;
public class Class1
{
    public event EventHandler Aftermatch;
    public event EventHandler Beforehand;
}");
 
            await VerifyVB.VerifyAnalyzerAsync(@"
Imports System
Public Class Class1
    Public Event Aftermatch As EventHandler
    Public Event Beforehand As EventHandler
End Class
");
        }
 
        [Fact]
        public async Task CA1713_PrefixIsNotFollowingRightCase_NoDiagnosticAsync()
        {
            await VerifyCS.VerifyAnalyzerAsync(@"
using System;
public class Class1
{
    public event EventHandler AFTERClose;
    public event EventHandler afterClose;
    public event EventHandler AfTeRClose;
    public event EventHandler BEFOREClose;
    public event EventHandler beforeClose;
    public event EventHandler BeFoReClose;
}");
 
            await VerifyVB.VerifyAnalyzerAsync(@"
Imports System
Public Class Class1
    Public Event AFTERClose As EventHandler
    Public Event BEFOREClose As EventHandler
End Class
 
Public Class Class2
    Public Event afterClose As EventHandler
    Public Event beforeClose As EventHandler
End Class
 
Public Class Class3
    Public Event AfTeRClose As EventHandler
    Public Event BeFoReClose As EventHandler
End Class
");
        }
    }
}