File size: 1,166 Bytes
da8fcf1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
"""ARCHITECT model-router unit tests."""

from __future__ import annotations


def test_default_routes_present(fresh_budget):
    routes = fresh_budget.all_routes()
    for required in ("static_analysis", "patch_generation", "exploit_reasoning",
                     "adversarial_review_a", "adversarial_review_b",
                     "adversarial_review_c", "critical_cve_draft", "bulk_triage"):
        assert required in routes, f"missing route: {required}"


def test_route_returns_known_model(fresh_budget):
    d = fresh_budget.route("static_analysis")
    assert d.model.startswith("deepseek/")
    assert d.tier == 1


def test_budget_caps_force_local_fallback(fresh_budget):
    fresh_budget.reset_budget(hard_cap_usd=0.0001)
    fresh_budget.record_usage(fresh_budget.TIER1_PRIMARY, 100_000_000)
    d = fresh_budget.route("static_analysis")
    assert d.model == fresh_budget.TIER5_LOCAL
    assert "budget" in d.reason


def test_caller_preferred_overrides(fresh_budget):
    d = fresh_budget.route("static_analysis", prefer=fresh_budget.TIER2_PRIMARY)
    assert d.model == fresh_budget.TIER2_PRIMARY
    assert d.reason.startswith("caller-preferred")