mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-05-07 00:39:00 +08:00
test(EnumExtensions): 添加枚举扩展生成器快照测试
- 实现基本枚举的 IsMethods 快照测试 - 实现基本枚举的 IsInMethod 快照测试 - 实现带标志值枚举的快照测试 - 实现禁用 IsMethods 选项的快照测试 - 实现禁用 IsInMethod 选项的快照测试 - 创建统一的源代码构建方法用于测试场景
This commit is contained in:
parent
534818f5f6
commit
08b12ae852
@ -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<EnumExtensionsGenerator>.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<EnumExtensionsGenerator>.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<EnumExtensionsGenerator>.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<EnumExtensionsGenerator>.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<EnumExtensionsGenerator>.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}}
|
||||
}
|
||||
""";
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user