fix: queue readiness command for active fixture document
This commit is contained in:
@@ -273,8 +273,14 @@ internal sealed class FirstLimitedApplyAutomationCoordinator
|
|||||||
private void QueueReadinessBarrier()
|
private void QueueReadinessBarrier()
|
||||||
{
|
{
|
||||||
if (IsTerminal || document is null) return;
|
if (IsTerminal || document is null) return;
|
||||||
|
var active = AcadApplication.DocumentManager.MdiActiveDocument;
|
||||||
|
if (active is null || !string.Equals(active.Name, document.Name, StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
Complete(false, "AUTOMATION_READINESS_DOCUMENT_NOT_ACTIVE");
|
||||||
|
return;
|
||||||
|
}
|
||||||
transitions.Add("ReadinessBarrierQueued");
|
transitions.Add("ReadinessBarrierQueued");
|
||||||
document.SendStringToExecute("PHP_REC_AUTOMATION_READY\n", true, true, false);
|
document.SendStringToExecute("PHP_REC_AUTOMATION_READY\n", true, false, false);
|
||||||
}
|
}
|
||||||
private void OnCommandEnded(object sender, CommandEventArgs e)
|
private void OnCommandEnded(object sender, CommandEventArgs e)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -110,6 +110,16 @@ public sealed class FoundationTests
|
|||||||
Assert.Contains("TryActivateProjectAndVerifyContext();", source);
|
Assert.Contains("TryActivateProjectAndVerifyContext();", source);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact] public void QueueReadinessBarrier_RequiresActiveFixtureAndUsesSafeDispatch()
|
||||||
|
{
|
||||||
|
var source = File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "FirstLimitedApplyAutomation.cs"));
|
||||||
|
var barrier = source[source.IndexOf("private void QueueReadinessBarrier", StringComparison.Ordinal)..source.IndexOf("private void OnCommandEnded", StringComparison.Ordinal)];
|
||||||
|
Assert.Contains("MdiActiveDocument", barrier);
|
||||||
|
Assert.Contains("AUTOMATION_READINESS_DOCUMENT_NOT_ACTIVE", barrier);
|
||||||
|
Assert.Contains("PHP_REC_AUTOMATION_READY\\n\", true, false, false", barrier);
|
||||||
|
Assert.True(barrier.IndexOf("AUTOMATION_READINESS_DOCUMENT_NOT_ACTIVE", StringComparison.Ordinal) < barrier.IndexOf("SendStringToExecute", StringComparison.Ordinal));
|
||||||
|
}
|
||||||
|
|
||||||
[Fact] public void AutomationControlledExit_QueuesNativeQuitAfterPublicCommand()
|
[Fact] public void AutomationControlledExit_QueuesNativeQuitAfterPublicCommand()
|
||||||
{
|
{
|
||||||
var source = File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "FirstLimitedApplyAutomation.cs"));
|
var source = File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "FirstLimitedApplyAutomation.cs"));
|
||||||
|
|||||||
Reference in New Issue
Block a user