// Copyright (c) 2025-2026 GeWuYou
// SPDX-License-Identifier: Apache-2.0
using System.Threading;
namespace GFramework.Cqrs.Tests.Cqrs;
///
/// 记录双行为 pipeline 的实际执行顺序。
///
internal static class DispatcherPipelineOrderState
{
private static readonly Lock SyncRoot = new();
private static readonly List _steps = [];
///
/// 获取按执行顺序追加的步骤快照。
/// 共享状态通过 SyncRoot 串行化,避免并行行为测试互相污染步骤列表。
///
public static IReadOnlyList Steps
{
get
{
lock (SyncRoot)
{
return _steps.ToArray();
}
}
}
///
/// 记录一个新的 pipeline 执行步骤。
///
/// 要追加的步骤名称。
public static void Record(string step)
{
lock (SyncRoot)
{
_steps.Add(step);
}
}
///
/// 清空当前记录,供下一次断言使用。
///
public static void Reset()
{
lock (SyncRoot)
{
_steps.Clear();
}
}
}