// Copyright (c) 2025-2026 GeWuYou
// SPDX-License-Identifier: Apache-2.0
using System.Reflection;
using GFramework.Core.Abstractions.State;
using GFramework.Core.State;
namespace GFramework.Core.Tests.State;
///
/// 为状态机测试提供仅限断言场景使用的反射辅助方法。
///
public static class StateMachineExtensions
{
///
/// 检查状态机内部缓存中是否已注册指定类型的状态。
///
/// 要检查的状态类型。
/// 待检查的状态机实例。
/// 找到对应状态类型时返回 ,否则返回 。
public static bool ContainsState(this StateMachine stateMachine) where T : IState
{
return stateMachine.GetType().GetField("States", BindingFlags.NonPublic | BindingFlags.Instance)?
.GetValue(stateMachine) is Dictionary states &&
states.ContainsKey(typeof(T));
}
}