File: Diff.Record.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 DiffRecordTests : DiffBaseTests
{
    #region Records
 
    [Fact]
    public Task RecordAdd() => RunTestAsync(
            beforeCode: """
                namespace MyNamespace
                {
                    public class MyClass
                    {
                    }
                }
                """,
            afterCode: """
                namespace MyNamespace
                {
                    public class MyClass
                    {
                    }
                    public record MyRecord1(int x);
                    public record MyRecord2
                    {
                        public double Y { get; set; }
                    }
                    public record MyRecord3(int x)
                    {
                        public double Y { get; set; }
                    }
                }
                """,
            expectedCode: """
                  namespace MyNamespace
                  {
                +     public record MyRecord1(int x);
                +     public record MyRecord2
                +     {
                +         public double Y { get; set; }
                +     }
                +     public record MyRecord3(int x)
                +     {
                +         public double Y { get; set; }
                +     }
                  }
                """);
 
    [Fact]
    public Task RecordChange() => RunTestAsync(
                beforeCode: """
                namespace MyNamespace
                {
                    public class MyClass
                    {
                    }
                    public record MyBeforeRecord1(int a);
                    public record MyRecord2
                    {
                        public double Y { get; set; }
                    }
                    public record MyRecord3(int a)
                    {
                        public int Y { get; set; }
                    }
                }
                """,
                afterCode: """
                namespace MyNamespace
                {
                    public class MyClass
                    {
                    }
                    public record MyAfterRecord1(int a);
                    public record MyRecord2
                    {
                        public int X { get; set; }
                    }
                    public record MyRecord3(double a)
                    {
                        public double Y { get; set; }
                    }
                }
                """,
                expectedCode: """
                  namespace MyNamespace
                  {
                -     public record MyBeforeRecord1(int a);
                      public record MyRecord2
                      {
                -         public double Y { get; set; }
                +         public int X { get; set; }
                      }
                -     public record MyRecord3(int a)
                -     {
                -         public int Y { get; set; }
                -     }
                +     public record MyAfterRecord1(int a);
                +     public record MyRecord3(double a)
                +     {
                +         public double Y { get; set; }
                +     }
                  }
                """); // Note they get sorted
 
    [Fact]
    public Task RecordDelete() => RunTestAsync(
                beforeCode: """
                namespace MyNamespace
                {
                    public class MyClass
                    {
                    }
                    public record MyRecord1(int a);
                    public record MyRecord2
                    {
                        public double Y { get; set; }
                    }
                    public record MyRecord3(int x)
                    {
                        public double Y { get; set; }
                    }
                }
                """,
                afterCode: """
                namespace MyNamespace
                {
                    public class MyClass
                    {
                    }
                }
                """,
                expectedCode: """
                  namespace MyNamespace
                  {
                -     public record MyRecord1(int a);
                -     public record MyRecord2
                -     {
                -         public double Y { get; set; }
                -     }
                -     public record MyRecord3(int x)
                -     {
                -         public double Y { get; set; }
                -     }
                  }
                """);
 
    #endregion
}