File: Diff.Event.Tests.cs
Web Access
Project: ..\..\..\test\Microsoft.DotNet.ApiDiff.Tests\Microsoft.DotNet.ApiDiff.Tests.csproj (Microsoft.DotNet.ApiDiff.Tests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
namespace Microsoft.DotNet.ApiDiff.Tests;
 
public class DiffEventTests : DiffBaseTests
{
    [Fact]
    public Task EventAdd() => RunTestAsync(
        beforeCode: """
        using System;
        namespace MyNamespace
        {
            public class MyClass
            {
                public delegate void MyEventHandler(object sender, EventArgs e);
            }
        }
        """,
        afterCode: """
        using System;
        namespace MyNamespace
        {
            public class MyClass
            {
                public delegate void MyEventHandler(object sender, EventArgs e);
                public event MyEventHandler? MyEvent;
            }
        }
        """,
        expectedCode: """
          namespace MyNamespace
          {
              public class MyClass
              {
        +         public event MyNamespace.MyClass.MyEventHandler? MyEvent { add; remove; }
              }
          }
        """);
 
    [Fact]
    public Task EventChange() => RunTestAsync(
        beforeCode: """
        using System;
        namespace MyNamespace
        {
            public class MyClass
            {
                public delegate void MyEventHandler(object sender, EventArgs e);
                public event MyEventHandler? MyEvent1;
            }
        }
        """,
        afterCode: """
        using System;
        namespace MyNamespace
        {
            public class MyClass
            {
                public delegate void MyEventHandler(object sender, EventArgs e);
                public event MyEventHandler? MyEvent2;
            }
        }
        """,
        expectedCode: """
          namespace MyNamespace
          {
              public class MyClass
              {
        -         public event MyNamespace.MyClass.MyEventHandler? MyEvent1 { add; remove; }
        +         public event MyNamespace.MyClass.MyEventHandler? MyEvent2 { add; remove; }
              }
          }
        """);
 
    [Fact]
    public Task EventRemove() => RunTestAsync(
        beforeCode: """
        using System;
        namespace MyNamespace
        {
            public class MyClass
            {
                public delegate void MyEventHandler(object sender, EventArgs e);
                public event MyEventHandler? MyEvent;
            }
        }
        """,
        afterCode: """
        using System;
        namespace MyNamespace
        {
            public class MyClass
            {
                public delegate void MyEventHandler(object sender, EventArgs e);
            }
        }
        """,
        expectedCode: """
          namespace MyNamespace
          {
              public class MyClass
              {
        -         public event MyNamespace.MyClass.MyEventHandler? MyEvent { add; remove; }
              }
          }
        """);
 
    [Fact]
    public Task AbstractEvent() => RunTestAsync(
        beforeCode: """
        using System;
        namespace MyNamespace
        {
            public abstract class MyClass
            {
                public delegate void MyEventHandler(object sender, EventArgs e);
            }
        }
        """,
        afterCode: """
        using System;
        namespace MyNamespace
        {
            public abstract class MyClass
            {
                public delegate void MyEventHandler(object sender, EventArgs e);
                public abstract event MyEventHandler MyEvent;
            }
        }
        """,
        expectedCode: """
          namespace MyNamespace
          {
              public abstract class MyClass
              {
        +         public abstract event MyNamespace.MyClass.MyEventHandler MyEvent;
              }
          }
        """);
}