mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-03-22 10:34:30 +08:00
test(generator): 添加上下文感知生成器的继承接口测试
- 为 ContextAwareGenerator 添加新的单元测试方法 - 测试当接口继承自 IContextAware 时的代码生成功能 - 验证间接接口实现的正确性 - 检查生成的 SetContext 方法和 Context 属性 - 确保继承场景下的代码生成符合预期
This commit is contained in:
parent
5f211d8680
commit
383eceb36f
@ -79,4 +79,72 @@ public class ContextAwareGeneratorTests
|
||||
("MyRule.ContextAware.g.cs", expected)
|
||||
);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task Generates_ContextAware_Code_When_Interface_Inherits_IContextAware()
|
||||
{
|
||||
const string source = """
|
||||
using System;
|
||||
|
||||
namespace GFramework.SourceGenerators.Attributes.rule
|
||||
{
|
||||
[AttributeUsage(AttributeTargets.Class)]
|
||||
public sealed class ContextAwareAttribute : Attribute
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
namespace TestApp
|
||||
{
|
||||
using GFramework.SourceGenerators.Attributes.rule;
|
||||
using GFramework.Core.rule;
|
||||
|
||||
// 间接接口:继承自 IContextAware
|
||||
public interface IMyRuleContextAware : IContextAware
|
||||
{
|
||||
}
|
||||
|
||||
[ContextAware]
|
||||
public partial class MyRule : IMyRuleContextAware
|
||||
{
|
||||
}
|
||||
}
|
||||
""";
|
||||
|
||||
const string frameworkStub = """
|
||||
namespace GFramework.Core.rule
|
||||
{
|
||||
public interface IContextAware
|
||||
{
|
||||
void SetContext(GFramework.Core.architecture.IArchitectureContext context);
|
||||
}
|
||||
}
|
||||
|
||||
namespace GFramework.Core.architecture
|
||||
{
|
||||
public interface IArchitectureContext {}
|
||||
}
|
||||
""";
|
||||
|
||||
const string expected = """
|
||||
// <auto-generated/>
|
||||
#nullable enable
|
||||
namespace TestApp;
|
||||
|
||||
partial class MyRule
|
||||
{
|
||||
protected GFramework.Core.architecture.IArchitectureContext Context { get; private set; } = null!;
|
||||
void GFramework.Core.rule.IContextAware.SetContext(
|
||||
GFramework.Core.architecture.IArchitectureContext context)
|
||||
{
|
||||
Context = context;
|
||||
}
|
||||
}
|
||||
""";
|
||||
|
||||
await GeneratorTest<ContextAwareGenerator>.RunAsync(
|
||||
source + "\n" + frameworkStub,
|
||||
("MyRule.ContextAware.g.cs", expected)
|
||||
);
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user