From 08b12ae8525002223d76be9b50f390309630fada Mon Sep 17 00:00:00 2001 From: GeWuYou <95328647+GeWuYou@users.noreply.github.com> Date: Thu, 16 Apr 2026 21:49:59 +0800 Subject: [PATCH] =?UTF-8?q?test(EnumExtensions):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=9E=9A=E4=B8=BE=E6=89=A9=E5=B1=95=E7=94=9F=E6=88=90=E5=99=A8?= =?UTF-8?q?=E5=BF=AB=E7=85=A7=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 实现基本枚举的 IsMethods 快照测试 - 实现基本枚举的 IsInMethod 快照测试 - 实现带标志值枚举的快照测试 - 实现禁用 IsMethods 选项的快照测试 - 实现禁用 IsInMethod 选项的快照测试 - 创建统一的源代码构建方法用于测试场景 --- .../EnumExtensionsGeneratorSnapshotTests.cs | 202 +++++++----------- 1 file changed, 73 insertions(+), 129 deletions(-) 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}} + } + """; + } }