diff --git a/GFramework.SourceGenerators.Tests/Enums/EnumExtensionsGeneratorSnapshotTests.cs b/GFramework.SourceGenerators.Tests/Enums/EnumExtensionsGeneratorSnapshotTests.cs index e70b4020..e5c27226 100644 --- a/GFramework.SourceGenerators.Tests/Enums/EnumExtensionsGeneratorSnapshotTests.cs +++ b/GFramework.SourceGenerators.Tests/Enums/EnumExtensionsGeneratorSnapshotTests.cs @@ -7,35 +7,20 @@ namespace GFramework.SourceGenerators.Tests.Enums; [TestFixture] public class EnumExtensionsGeneratorSnapshotTests { + private const string EnumAttributeNamespace = "GFramework.Core.SourceGenerators.Abstractions.Enums"; + [Test] public async Task Snapshot_BasicEnum_IsMethods() { - const string source = """ - using System; - - namespace GFramework.Core.SourceGenerators.Abstractions.Enums - { - [AttributeUsage(AttributeTargets.Enum)] - public sealed class GenerateEnumExtensionsAttribute : Attribute - { - public bool GenerateIsMethods { get; set; } = true; - public bool GenerateIsInMethod { get; set; } = true; - } - } - - namespace TestApp - { - using GFramework.Core.SourceGenerators.Abstractions.Enums; - - [GenerateEnumExtensions] - public enum Status - { - Active, - Inactive, - Pending - } - } - """; + var source = BuildSource( + """ + public enum Status + { + Active, + Inactive, + Pending + } + """); await GeneratorSnapshotTest.RunAsync( source, @@ -50,31 +35,14 @@ public class EnumExtensionsGeneratorSnapshotTests [Test] public async Task Snapshot_BasicEnum_IsInMethod() { - const string source = """ - using System; - - namespace GFramework.Core.SourceGenerators.Abstractions.Enums - { - [AttributeUsage(AttributeTargets.Enum)] - public sealed class GenerateEnumExtensionsAttribute : Attribute - { - public bool GenerateIsMethods { get; set; } = true; - public bool GenerateIsInMethod { get; set; } = true; - } - } - - namespace TestApp - { - using GFramework.Core.SourceGenerators.Abstractions.Enums; - - [GenerateEnumExtensions] - public enum Status - { - Active, - Inactive - } - } - """; + var source = BuildSource( + """ + public enum Status + { + Active, + Inactive + } + """); await GeneratorSnapshotTest.RunAsync( source, @@ -89,34 +57,17 @@ public class EnumExtensionsGeneratorSnapshotTests [Test] public async Task Snapshot_EnumWithFlagValues() { - const string source = """ - using System; - - namespace GFramework.Core.SourceGenerators.Abstractions.Enums - { - [AttributeUsage(AttributeTargets.Enum)] - public sealed class GenerateEnumExtensionsAttribute : Attribute - { - public bool GenerateIsMethods { get; set; } = true; - public bool GenerateIsInMethod { get; set; } = true; - } - } - - namespace TestApp - { - using GFramework.Core.SourceGenerators.Abstractions.Enums; - - [GenerateEnumExtensions] - [Flags] - public enum Permissions - { - None = 0, - Read = 1, - Write = 2, - Execute = 4 - } - } - """; + var source = BuildSource( + """ + [Flags] + public enum Permissions + { + None = 0, + Read = 1, + Write = 2, + Execute = 4 + } + """); await GeneratorSnapshotTest.RunAsync( source, @@ -131,31 +82,15 @@ public class EnumExtensionsGeneratorSnapshotTests [Test] public async Task Snapshot_DisableIsMethods() { - const string source = """ - using System; - - namespace GFramework.Core.SourceGenerators.Abstractions.Enums - { - [AttributeUsage(AttributeTargets.Enum)] - public sealed class GenerateEnumExtensionsAttribute : Attribute - { - public bool GenerateIsMethods { get; set; } = true; - public bool GenerateIsInMethod { get; set; } = true; - } - } - - namespace TestApp - { - using GFramework.Core.SourceGenerators.Abstractions.Enums; - - [GenerateEnumExtensions(GenerateIsMethods = false)] - public enum Status - { - Active, - Inactive - } - } - """; + var source = BuildSource( + """ + public enum Status + { + Active, + Inactive + } + """, + "[GenerateEnumExtensions(GenerateIsMethods = false)]"); await GeneratorSnapshotTest.RunAsync( source, @@ -170,31 +105,15 @@ public class EnumExtensionsGeneratorSnapshotTests [Test] public async Task Snapshot_DisableIsInMethod() { - const string source = """ - using System; - - namespace GFramework.Core.SourceGenerators.Abstractions.Enums - { - [AttributeUsage(AttributeTargets.Enum)] - public sealed class GenerateEnumExtensionsAttribute : Attribute - { - public bool GenerateIsMethods { get; set; } = true; - public bool GenerateIsInMethod { get; set; } = true; - } - } - - namespace TestApp - { - using GFramework.Core.SourceGenerators.Abstractions.Enums; - - [GenerateEnumExtensions(GenerateIsInMethod = false)] - public enum Status - { - Active, - Inactive - } - } - """; + var source = BuildSource( + """ + public enum Status + { + Active, + Inactive + } + """, + "[GenerateEnumExtensions(GenerateIsInMethod = false)]"); await GeneratorSnapshotTest.RunAsync( source, @@ -205,4 +124,29 @@ public class EnumExtensionsGeneratorSnapshotTests "EnumExtensionsGenerator", "DisableIsInMethod")); } + + private static string BuildSource(string enumBody, string attributeUsage = "[GenerateEnumExtensions]") + { + return $$""" + using System; + + namespace {{EnumAttributeNamespace}} + { + [AttributeUsage(AttributeTargets.Enum)] + public sealed class GenerateEnumExtensionsAttribute : Attribute + { + public bool GenerateIsMethods { get; set; } = true; + public bool GenerateIsInMethod { get; set; } = true; + } + } + + namespace TestApp + { + using {{EnumAttributeNamespace}}; + + {{attributeUsage}} + {{enumBody}} + } + """; + } }