mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-05-09 18:38:59 +08:00
- 新增完整的 GFramework.SourceGenerators 文档,涵盖所有核心特性 - 添加 Log 属性生成器、Config Schema 生成器等详细使用说明 - 添加 ContextAware、GenerateEnumExtensions 等属性生成器文档 - 添加 Godot 专用生成器如 GetNode、BindNodeSignal 等使用指南 - 添加 AutoRegisterModule、AutoUiPage、AutoScene 等自动化工具文档 - 添加诊断信息、性能优势、使用示例和最佳实践章节 - 新增 PathContests 常量类定义 GFramework 项目路径常量 - 添加 ContextRegistrationAnalyzerTests 测试类验证上下文注册分析器
209 lines
8.1 KiB
C#
209 lines
8.1 KiB
C#
using System.IO;
|
|
using GFramework.Core.SourceGenerators.Enums;
|
|
using GFramework.SourceGenerators.Tests.Core;
|
|
|
|
namespace GFramework.SourceGenerators.Tests.Enums;
|
|
|
|
[TestFixture]
|
|
public class EnumExtensionsGeneratorSnapshotTests
|
|
{
|
|
[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
|
|
}
|
|
}
|
|
""";
|
|
|
|
await GeneratorSnapshotTest<EnumExtensionsGenerator>.RunAsync(
|
|
source,
|
|
Path.Combine(
|
|
TestContext.CurrentContext.TestDirectory,
|
|
"enums",
|
|
"snapshots",
|
|
"EnumExtensionsGenerator",
|
|
"BasicEnum_IsMethods"));
|
|
}
|
|
|
|
[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
|
|
}
|
|
}
|
|
""";
|
|
|
|
await GeneratorSnapshotTest<EnumExtensionsGenerator>.RunAsync(
|
|
source,
|
|
Path.Combine(
|
|
TestContext.CurrentContext.TestDirectory,
|
|
"enums",
|
|
"snapshots",
|
|
"EnumExtensionsGenerator",
|
|
"BasicEnum_IsInMethod"));
|
|
}
|
|
|
|
[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
|
|
}
|
|
}
|
|
""";
|
|
|
|
await GeneratorSnapshotTest<EnumExtensionsGenerator>.RunAsync(
|
|
source,
|
|
Path.Combine(
|
|
TestContext.CurrentContext.TestDirectory,
|
|
"enums",
|
|
"snapshots",
|
|
"EnumExtensionsGenerator",
|
|
"EnumWithFlagValues"));
|
|
}
|
|
|
|
[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
|
|
}
|
|
}
|
|
""";
|
|
|
|
await GeneratorSnapshotTest<EnumExtensionsGenerator>.RunAsync(
|
|
source,
|
|
Path.Combine(
|
|
TestContext.CurrentContext.TestDirectory,
|
|
"enums",
|
|
"snapshots",
|
|
"EnumExtensionsGenerator",
|
|
"DisableIsMethods"));
|
|
}
|
|
|
|
[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
|
|
}
|
|
}
|
|
""";
|
|
|
|
await GeneratorSnapshotTest<EnumExtensionsGenerator>.RunAsync(
|
|
source,
|
|
Path.Combine(
|
|
TestContext.CurrentContext.TestDirectory,
|
|
"enums",
|
|
"snapshots",
|
|
"EnumExtensionsGenerator",
|
|
"DisableIsInMethod"));
|
|
}
|
|
}
|