package llm import "testing" // The model picker offers whatever /v1/models returns, which is dated ids and // context-window variants. Those are the same model at the same price, so // pricing has to look past the decoration rather than report "unknown". func TestCostPricesDecoratedModelIDs(t *testing.T) { u := Usage{InputTokens: 1_000_000} base, ok := u.Cost("claude-sonnet-5") if !ok { t.Fatal("the bare id is not priced") } for _, id := range []string{ "claude-sonnet-5-20250930", "claude-sonnet-5[1m]", "claude-sonnet-5-latest", } { got, ok := u.Cost(id) if !ok { t.Errorf("Cost(%q) reported no price", id) continue } if got != base { t.Errorf("Cost(%q) = %v, want the same %v as the bare id", id, got, base) } } // A model nobody has priced still reports nothing rather than guessing. if _, ok := u.Cost("some-gateway/mystery-model"); ok { t.Error("an unknown model was given a price") } if _, ok := u.Cost("claude-something-9-20990101"); ok { t.Error("an unknown Claude model was given a price") } }