2026-11-09 09:55:01 +01:00
using AIStudio.Assistants.BeyondFactsLab ;
using AIStudio.Models ;
namespace AIStudio.Tests.BeyondFactsLab ;
/// <summary>
/// Checks which models the BeyondFacts Lab accepts for its chats.
/// </summary>
[TestFixture]
public sealed class BflModelRequirementsTests
{
[Test]
public void AModelWithoutAStatementAboutItsWindowIsAccepted ()
{
Assert . That ( BflModelRequirements . HasEnoughContext ( ContextWindow . UNKNOWN ), Is . True );
}
[TestCase(8_192, false)]
[TestCase(BflModelRequirements.MINIMUM_CONTEXT_TOKENS - 1, false)]
[TestCase(BflModelRequirements.MINIMUM_CONTEXT_TOKENS, true)]
[TestCase(128_000, true)]
public void AKnownWindowNeedsTheMinimum ( int defaultTokens , bool expected )
{
Assert . That ( BflModelRequirements . HasEnoughContext ( ContextWindow . Of ( defaultTokens )), Is . EqualTo ( expected ));
}
2026-11-09 12:42:59 +01:00
[Test]
public void TheOnboardingRunsWithASmallWindow ()
{
var smallWindow = ContextWindow . Of ( 8_192 );
using ( Assert . EnterMultipleScope ())
{
Assert . That ( BflModelRequirements . HasEnoughContext ( BflOnboardingThreadLocation . INSTANCE , smallWindow ), Is . True , "The onboarding leaves out the guide." );
Assert . That ( BflModelRequirements . HasEnoughContext ( new BflStepThreadLocation ( Guid . NewGuid (), BflStep . FRAMEWORK ), smallWindow ), Is . False );
Assert . That ( BflModelRequirements . HasEnoughContext ( new BflStepThreadLocation ( Guid . NewGuid (), BflStep . FRAMEWORK ), ContextWindow . Of ( BflModelRequirements . MINIMUM_CONTEXT_TOKENS )), Is . True );
}
}
2026-11-09 09:55:01 +01:00
[Test]
public void AWindowWhichOnlyAnOperatorCouldRaiseIsNotEnough ()
{
Assert . That ( BflModelRequirements . HasEnoughContext ( ContextWindow . Of ( 16_384 , 131_072 )), Is . False , "What a model reads as it ships counts, not what it might read." );
}
}