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(() => 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)); } }