feat: align legacy operator and playout behavior

This commit is contained in:
2026-07-15 21:04:05 +09:00
parent 06a16e5741
commit 83398044c6
77 changed files with 6377 additions and 391 deletions

View File

@@ -41,14 +41,30 @@ public sealed class LegacyPlayoutNativeContractTests
[Fact]
public void OperatorCommandsUseTheNativeWorkflowAndCSharpPlaylist()
{
Assert.Contains("_controller.CreatePlayoutRequest()", Playout,
Assert.Contains("_controller.CreatePlayoutRequest(", Playout,
StringComparison.Ordinal);
Assert.Contains("_compositionOptions!.Current.FadeDuration", Playout,
StringComparison.Ordinal);
Assert.Contains("workflow.PrepareAsync(", Playout, StringComparison.Ordinal);
Assert.Contains("workflow.PrepareAndTakeInAsync(", Playout,
Assert.Contains("workflow.TakeSelectedAsync(", Playout,
StringComparison.Ordinal);
Assert.DoesNotContain("workflow.TakeInAsync(", Playout, StringComparison.Ordinal);
Assert.DoesNotContain(
"string.IsNullOrWhiteSpace(workflow.State.PreparedCutCode)",
Playout,
StringComparison.Ordinal);
Assert.Contains("workflow.TakeInAsync(", Playout, StringComparison.Ordinal);
Assert.Contains("workflow.NextAsync(", Playout, StringComparison.Ordinal);
Assert.Contains("workflow.TakeOutAsync(", Playout, StringComparison.Ordinal);
Assert.Contains("_controller.ReflectSuccessfulPlayout(", Playout,
StringComparison.Ordinal);
Assert.Contains("workflow.State.CurrentEntryId", Playout,
StringComparison.Ordinal);
Assert.Contains("LegacyOperatorPlayoutCommand.Prepare or", Playout,
StringComparison.Ordinal);
Assert.Contains(
"command != LegacyOperatorPlayoutCommand.TakeOut",
Playout,
StringComparison.Ordinal);
Assert.Contains("LegacyWorkflowNextKind.PlaylistNext", Playout,
StringComparison.Ordinal);
Assert.Contains("LegacySceneRefreshPolicy.TryGetInterval", Playout,
@@ -68,6 +84,41 @@ public sealed class LegacyPlayoutNativeContractTests
Assert.DoesNotContain("ReconnectAsync", Playout, StringComparison.Ordinal);
}
[Fact]
public void OriginalDissolveComboAcceptsOnlyItsZeroBasedTwentyItemIndex()
{
Assert.Contains("fadeDuration is < 0 or > 19", Playout,
StringComparison.Ordinal);
Assert.DoesNotContain("fadeDuration is < 0 or > 60", Playout,
StringComparison.Ordinal);
}
[Fact]
public void HomeAndEndStopAutomaticRefreshBeforeChangingTheCandidateRow()
{
Assert.Contains(
"LegacySelectPlaylistBoundaryIntent boundary =>\n" +
" SelectPlaylistBoundaryAndStopRefresh(boundary.Last)",
Window.Replace("\r\n", "\n", StringComparison.Ordinal),
StringComparison.Ordinal);
Assert.Contains(
"private LegacyOperatorSnapshot SelectPlaylistBoundaryAndStopRefresh(bool last)",
Playout,
StringComparison.Ordinal);
var helperStart = Playout.IndexOf(
"private LegacyOperatorSnapshot SelectPlaylistBoundaryAndStopRefresh(bool last)",
StringComparison.Ordinal);
var helperEnd = Playout.IndexOf(
"private async Task<LegacyOperatorSnapshot> ToggleBackgroundAsync",
helperStart,
StringComparison.Ordinal);
Assert.True(helperStart >= 0 && helperEnd > helperStart);
var helper = Playout[helperStart..helperEnd];
Assert.True(
helper.IndexOf("StopRefreshLoop();", StringComparison.Ordinal) <
helper.IndexOf("_controller.SelectPlaylistBoundary(last)", StringComparison.Ordinal));
}
[Fact]
public void PreparedProgramAndUnknownWriteOutcomesBlockOperatorMutations()
{
@@ -86,6 +137,10 @@ public sealed class LegacyPlayoutNativeContractTests
StringComparison.Ordinal);
Assert.Contains("LegacyConfirmManualListIntent", Playout,
StringComparison.Ordinal);
Assert.Contains("LegacyCutPointerDownIntent", Playout,
StringComparison.Ordinal);
Assert.Contains("LegacyClearCutSelectionIntent", Playout,
StringComparison.Ordinal);
}
private static string FindRepositoryRoot()