using GFramework.Core.Abstractions.enums;
using GFramework.Core.architecture;
namespace GFramework.Core.Tests.architecture;
///
/// 测试架构基类,提供通用的测试架构功能
///
public abstract class TestArchitectureBase : Architecture
{
private Action? _postRegistrationHook;
///
/// 获取就绪事件是否已触发的状态
///
public bool ReadyEventFired { get; protected set; }
///
/// 获取初始化方法是否已调用的状态
///
public bool InitCalled { get; protected set; }
///
/// 获取架构阶段历史记录列表
///
public List PhaseHistory { get; } = [];
///
/// 添加注册后钩子函数
///
/// 要添加的钩子函数
public void AddPostRegistrationHook(Action hook)
{
_postRegistrationHook = hook;
}
///
/// 初始化架构组件,注册模型、系统并设置事件监听器
///
protected override void OnInitialize()
{
InitCalled = true;
_postRegistrationHook?.Invoke(this);
}
///
/// 进入指定架构阶段时的处理方法,记录阶段历史
///
/// 要进入的下一个架构阶段
protected override void EnterPhase(ArchitecturePhase next)
{
base.EnterPhase(next);
// 记录进入的架构阶段到历史列表中
PhaseHistory.Add(next);
}
}