using SSPCTester.Logic.Models; namespace SSPCTester.Logic.Testing; /// 保护功能测试:刷新固定保护测试项的实测值与测量状态。 public sealed class ProtectTest : ITestModule { public const string ModuleName = "保护功能"; public string Name => ModuleName; public async Task RunAsync(TestContext ctx, IProgress progress, CancellationToken ct) { ProtectTestPlan.EnsureRows(ctx.Project); for (int i = 0; i < ctx.Project.ProtectResults.Count; i++) { ct.ThrowIfCancellationRequested(); var row = ctx.Project.ProtectResults[i]; bool preserveManualJudgement = row.Status is TestStatus.Pass or TestStatus.Fail; if (!preserveManualJudgement) row.Status = TestStatus.Running; ProtectTestPlan.RefreshMeasuredValues(ctx.Project, overwriteExisting: false); progress.Report(new TestProgress { ModuleName = Name, Step = i, TotalSteps = ctx.Project.ProtectResults.Count, Message = $"保护项测量:{row.ProtectType}" }); await Task.Delay(150, ct).ConfigureAwait(false); if (!preserveManualJudgement && row.Status == TestStatus.Running) row.Status = TestStatus.Untested; progress.Report(new TestProgress { ModuleName = Name, Step = i + 1, TotalSteps = ctx.Project.ProtectResults.Count, StepStatus = row.Status }); } } }