using ClawdDotNet.Core.Tests.Infrastructure; using Shouldly; namespace ClawdDotNet.Core.Tests.Engine; /// /// Shape of the outgoing request. B11/T8: max_tokens must be set so that a /// model does not exhaust its full (most expensive) output limit in one step. /// public sealed class RequestShapeTests { [Fact] public async Task The_request_sets_max_tokens() { var fixture = new EngineFixture(); var agent = fixture.AddAgent("agent-a"); agent.LoopGuard.MaxResponseTokens = 4_096; fixture.Client.RespondsWithText("fertig"); await fixture.Engine.RunAsync(agent, "los", "test-instance", default); fixture.Client.ReceivedRequests.ShouldNotBeEmpty(); fixture.Client.ReceivedRequests[0].MaxTokens.ShouldBe(4_096); } [Fact] public async Task With_value_0_max_tokens_stays_unset() { var fixture = new EngineFixture(); var agent = fixture.AddAgent("agent-a"); agent.LoopGuard.MaxResponseTokens = 0; // provider default fixture.Client.RespondsWithText("fertig"); await fixture.Engine.RunAsync(agent, "los", "test-instance", default); fixture.Client.ReceivedRequests[0].MaxTokens.ShouldBeNull(); } }