summaryrefslogtreecommitdiff
path: root/tests/Agent.Core.Tests/TaskRegistryTests.cs
diff options
context:
space:
mode:
authortanaka takashi <isazaka@gmail.com>2026-08-11 21:44:53 +0900
committertanaka takashi <isazaka@gmail.com>2026-08-11 21:44:53 +0900
commit6c3458a5ec37a5b69957ad17c84de58984698f25 (patch)
treebe5c5716e7488fcf1bc1a58de0ded0b9238f34cb /tests/Agent.Core.Tests/TaskRegistryTests.cs
parentb5ccecca01007f2a2459265df6d749fbfd31aa84 (diff)
Audit and align v1 runtime design
Diffstat (limited to 'tests/Agent.Core.Tests/TaskRegistryTests.cs')
-rw-r--r--tests/Agent.Core.Tests/TaskRegistryTests.cs17
1 files changed, 17 insertions, 0 deletions
diff --git a/tests/Agent.Core.Tests/TaskRegistryTests.cs b/tests/Agent.Core.Tests/TaskRegistryTests.cs
index 28a2844..7e84dfd 100644
--- a/tests/Agent.Core.Tests/TaskRegistryTests.cs
+++ b/tests/Agent.Core.Tests/TaskRegistryTests.cs
@@ -18,6 +18,23 @@ public sealed class TaskRegistryTests
}
[Fact]
+ public async Task Running_cancel_is_terminal_only_after_runtime_cleanup_transition()
+ {
+ var registry = new TaskRegistry();
+ TaskSnapshot task = registry.Enqueue("work", null, null);
+ Assert.True(registry.Transition(task.TaskId, AgentTaskState.Planning));
+ Assert.True(registry.Transition(task.TaskId, AgentTaskState.Running));
+
+ Assert.True(registry.Cancel(task.TaskId));
+ Assert.True(registry.GetCancellationToken(task.TaskId).IsCancellationRequested);
+ Task wait = registry.WaitForTerminalAsync(task.TaskId, CancellationToken.None);
+ Assert.False(wait.IsCompleted);
+
+ Assert.True(registry.Transition(task.TaskId, AgentTaskState.Cancelled, result: "clean"));
+ Assert.Equal(AgentTaskState.Cancelled, (await registry.WaitForTerminalAsync(task.TaskId, TestContext.Current.CancellationToken)).State);
+ }
+
+ [Fact]
public void NewTaskGetsUniqueTaskAndSessionIds()
{
var registry = new TaskRegistry();