using SSPCTester.Logic.Models;
namespace SSPCTester.Logic.Testing;
///
/// 按项目勾选项依次执行测试模块。
///
public sealed class TestRunner
{
public async Task RunAllAsync(
TestContext ctx,
IEnumerable modules,
IProgress progress,
CancellationToken ct)
{
var sel = ctx.Project.Selection;
foreach (var m in modules)
{
ct.ThrowIfCancellationRequested();
bool enabled = m.Name switch
{
"基础测试" => sel.Basic,
"开启与关断曲线" => sel.Curve,
"功率损耗" => sel.Power,
"保护功能" => sel.Protect,
_ => false,
};
if (!enabled) continue;
progress.Report(new TestProgress { ModuleName = m.Name, Message = $"=== 开始 {m.Name} ===" });
await m.RunAsync(ctx, progress, ct).ConfigureAwait(false);
progress.Report(new TestProgress { ModuleName = m.Name, Message = $"=== {m.Name} 完成 ===" });
}
ctx.Project.LastTestedAt = DateTime.Now;
}
}