using GFramework.Core.Abstractions.enums;
using GFramework.Core.architecture;
using NUnit.Framework;
namespace GFramework.Core.Tests.tests;
///
/// 架构测试基类,封装同步/异步共通测试逻辑
///
/// 架构类型,必须继承自Architecture
public abstract class ArchitectureTestsBase where TArchitecture : Architecture
{
protected TArchitecture? Architecture;
///
/// 子类必须实现创建具体架构实例
///
/// 创建的架构实例
protected abstract TArchitecture CreateArchitecture();
///
/// 测试设置方法,在每个测试开始前执行
/// 清理游戏上下文并创建架构实例
///
[SetUp]
public void SetUp()
{
GameContext.Clear();
Architecture = CreateArchitecture();
}
///
/// 测试清理方法,在每个测试结束后执行
/// 销毁架构实例并清理游戏上下文
///
[TearDown]
public async Task TearDown()
{
try
{
if (Architecture != null)
{
await Architecture.DestroyAsync();
}
}
finally
{
GameContext.Clear();
Architecture = null;
}
}
///
/// 验证架构初始化失败的断言方法
/// 检查当前架构阶段是否为初始化失败状态
///
protected void AssertInitializationFailed()
{
Assert.That(
Architecture!.CurrentPhase,
Is.EqualTo(ArchitecturePhase.FailedInitialization)
);
}
}