summaryrefslogtreecommitdiff
path: root/tests/Agent.Core.Tests/TaskRegistryTests.cs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/Agent.Core.Tests/TaskRegistryTests.cs')
-rw-r--r--tests/Agent.Core.Tests/TaskRegistryTests.cs35
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/Agent.Core.Tests/TaskRegistryTests.cs b/tests/Agent.Core.Tests/TaskRegistryTests.cs
new file mode 100644
index 0000000..33e16ab
--- /dev/null
+++ b/tests/Agent.Core.Tests/TaskRegistryTests.cs
@@ -0,0 +1,35 @@
+using Agent.Core.Tasks;
+
+namespace Agent.Core.Tests;
+
+public sealed class TaskRegistryTests
+{
+ [Fact]
+ public void NewTaskGetsUniqueTaskAndSessionIds()
+ {
+ var registry = new TaskRegistry();
+ TaskSnapshot first = registry.Enqueue("one", null, null);
+ TaskSnapshot second = registry.Enqueue("two", null, 0.2);
+ Assert.NotEqual(first.TaskId, second.TaskId);
+ Assert.NotEqual(first.SessionId, second.SessionId);
+ Assert.Equal(AgentTaskState.Queued, first.State);
+ }
+
+ [Fact]
+ public void UnknownSessionIsRejected()
+ {
+ var registry = new TaskRegistry();
+ Assert.Throws<KeyNotFoundException>(() => registry.Enqueue("request", Guid.NewGuid(), null));
+ }
+
+ [Fact]
+ public void TerminalTaskCannotTransition()
+ {
+ var registry = new TaskRegistry();
+ TaskSnapshot task = registry.Enqueue("request", null, null);
+ Assert.True(registry.Transition(task.TaskId, AgentTaskState.Planning));
+ Assert.True(registry.Transition(task.TaskId, AgentTaskState.Running));
+ Assert.True(registry.Transition(task.TaskId, AgentTaskState.Completed));
+ Assert.False(registry.Transition(task.TaskId, AgentTaskState.Running));
+ }
+}