using System.Collections.Generic;

using AIRuntime.Runtime.Agents;
using AIRuntime.Runtime.Agents.Runtime;
using AIRuntime.Runtime.Capabilities;

using NUnit.Framework;


namespace AIRuntime.Tests
{
    public sealed class AgentRuntimeContextTests
    {
        [Test]
        public void RuntimeContext_StoresExecutionContext()
        {
            AgentDefinition agent =
                new AgentDefinition(
                    "TestAgent",
                    "Test Agent",
                    "",
                    "");


            AgentSession session =
                new AgentSession(
                    agent);


            AgentExecutionContext execution =
                new AgentExecutionContext(
                    session);


            AgentRuntimeContext context =
                new AgentRuntimeContext(
                    execution,
                    new List<CapabilityDescriptor>());


            Assert.AreSame(
                execution,
                context.ExecutionContext);
        }


        [Test]
        public void RuntimeContext_StoresCapabilities()
        {
            AgentDefinition agent =
                new AgentDefinition(
                    "TestAgent",
                    "Test Agent",
                    "",
                    "");


            AgentRuntimeContext context =
                new AgentRuntimeContext(
                    new AgentExecutionContext(
                        new AgentSession(
                            agent)),
                    new List<CapabilityDescriptor>());


            Assert.NotNull(
                context.Capabilities);
        }
    }
}