fix: complete legacy operator parity workflows

This commit is contained in:
2026-07-23 00:54:31 +09:00
parent 939c252d23
commit cf117de144
25 changed files with 2430 additions and 223 deletions

View File

@@ -118,7 +118,7 @@ public sealed class LegacyPlayoutNativeContractTests
}
[Fact]
public void LocalSelectionAndDoubleClickGesturesQueueBehindRefreshInArrivalOrder()
public void LocalSelectionDoubleClickAndCutDropQueueBehindRefreshInArrivalOrder()
{
var process = Normalize(Slice(
Window,
@@ -144,13 +144,13 @@ public sealed class LegacyPlayoutNativeContractTests
Assert.Contains("LegacyActivateOperatorCatalogStockIntent", classifier,
StringComparison.Ordinal);
Assert.Contains("LegacyCutPointerDownIntent", classifier, StringComparison.Ordinal);
Assert.Contains("LegacyDropSelectedCutsIntent", classifier, StringComparison.Ordinal);
Assert.Contains("LegacyCutKeyDownIntent", classifier, StringComparison.Ordinal);
Assert.Contains("LegacyClearCutSelectionIntent", classifier, StringComparison.Ordinal);
Assert.Contains("LegacySelectPlaylistRowIntent", classifier, StringComparison.Ordinal);
Assert.Contains("LegacyActivatePlaylistRowIntent", classifier, StringComparison.Ordinal);
Assert.Contains("LegacySelectPlaylistBoundaryIntent", classifier, StringComparison.Ordinal);
Assert.DoesNotContain("LegacySearchStocksIntent", classifier, StringComparison.Ordinal);
Assert.DoesNotContain("LegacyDropSelectedCutsIntent", classifier, StringComparison.Ordinal);
Assert.DoesNotContain("LegacyExecutePlayoutIntent", classifier, StringComparison.Ordinal);
Assert.DoesNotContain("LegacySave", classifier, StringComparison.Ordinal);
}
@@ -474,8 +474,20 @@ public sealed class LegacyPlayoutNativeContractTests
Assert.Contains("CanDeleteSelectedPlaylistTail(status, workflow)", Playout,
StringComparison.Ordinal);
Assert.Contains("isSafeCutTailAppend", Playout, StringComparison.Ordinal);
Assert.Contains("CanAppendCutToPlaylistTail(status, workflow)", Playout,
StringComparison.Ordinal);
var safeCutTailClassifier = Slice(
Playout,
"var isSafeCutTailAppend",
"// MainForm kept its Space");
Assert.Contains("LegacyCutPointerDownIntent { AllowAppend: true }",
safeCutTailClassifier, StringComparison.Ordinal);
Assert.Contains("LegacyDropSelectedCutsIntent", safeCutTailClassifier,
StringComparison.Ordinal);
Assert.Contains("isSafeProgramEnabledStateMutation", Playout,
StringComparison.Ordinal);
Assert.Contains("isSafeProgramTailDelete", Playout,
StringComparison.Ordinal);
Assert.Contains("refreshAllowsMutation", Playout, StringComparison.Ordinal);
Assert.Contains("!status.IsPlayCompletionPending", Playout, StringComparison.Ordinal);
Assert.Contains("!status.IsTakeOutCompletionPending", Playout, StringComparison.Ordinal);
@@ -539,6 +551,8 @@ public sealed class LegacyPlayoutNativeContractTests
"private static bool IsFixedSectionBatchMutationIntent");
Assert.Contains("LegacyCutPointerDownIntent { AllowAppend: true }", mutationClassifier,
StringComparison.Ordinal);
Assert.Contains("LegacyDropSelectedCutsIntent", mutationClassifier,
StringComparison.Ordinal);
Assert.DoesNotContain("LegacyCutKeyDownIntent", mutationClassifier,
StringComparison.Ordinal);
Assert.DoesNotContain("LegacyClearCutSelectionIntent", mutationClassifier,
@@ -554,6 +568,47 @@ public sealed class LegacyPlayoutNativeContractTests
"private static bool IsOrderedPlayoutIntent");
Assert.Contains("allowAppend: false", selectionOnly,
StringComparison.Ordinal);
var queuedLocalIntents = Slice(
Window,
"private static bool IsQueuedLocalSelectionIntent",
"private static bool IsOperatorSettingsIntent");
Assert.Contains("LegacyDropSelectedCutsIntent", queuedLocalIntents,
StringComparison.Ordinal);
var safeTailAdmission = Slice(
Playout,
"private bool CanAppendCutToPlaylistTail(",
"private static bool RequiresIdlePlaylistMutation");
Assert.Contains("status.OnAirSceneName", safeTailAdmission,
StringComparison.Ordinal);
Assert.Contains("workflow.OnAirCutCode", safeTailAdmission,
StringComparison.Ordinal);
Assert.Contains("workflow.CurrentEntryId", safeTailAdmission,
StringComparison.Ordinal);
Assert.Contains("workflow.CurrentCueIndexZeroBased", safeTailAdmission,
StringComparison.Ordinal);
Assert.Contains("currentIndex < playlist.Count", safeTailAdmission,
StringComparison.Ordinal);
Assert.Contains("playlist.Count(row => string.Equals(", safeTailAdmission,
StringComparison.Ordinal);
var orderedTailDelete = Slice(
Window,
"else if (IsOrderedPlaylistTailMutationIntent(intent))",
"else if (IsQueuedLocalSelectionIntent(intent))");
Assert.Contains("_orderedPlaylistTailMutationIntentGate.WaitAsync(",
orderedTailDelete, StringComparison.Ordinal);
Assert.Contains("0,", orderedTailDelete, StringComparison.Ordinal);
Assert.Contains("_orderedLocalSelectionIntentGate.WaitAsync(",
orderedTailDelete, StringComparison.Ordinal);
Assert.Contains("await _intentGate.WaitAsync", orderedTailDelete,
StringComparison.Ordinal);
Assert.Contains(
"intent is LegacyDeleteSelectedPlaylistRowsIntent",
Window,
StringComparison.Ordinal);
Assert.Contains("_orderedPlaylistTailMutationIntentGate.Release();",
Window,
StringComparison.Ordinal);
}
private static void AssertKnownFailureDoesNotQuarantine(