The-Agency/test/utils/model_cost_test.dart

59 lines
1.8 KiB
Dart

import "package:test/test.dart";
import "package:clawd_code/src/utils/model_cost.dart";
void main() {
group("getCanonicalModelName", () {
test("strips date suffix", () {
expect(getCanonicalModelName("claude-sonnet-4-6-20241022"), equals("claude-sonnet-4-6"));
});
test("known model unchanged", () {
expect(getCanonicalModelName("claude-sonnet-4-6"), equals("claude-sonnet-4-6"));
});
});
group("getModelCosts", () {
test("returns correct costs for known model", () {
final costs = getModelCosts("claude-sonnet-4-6");
expect(costs.inputTokens, equals(3.0));
expect(costs.outputTokens, equals(15.0));
});
test("unknown model returns fallback", () {
final costs = getModelCosts("totally-made-up-model");
// should not throw, just returns default
expect(costs.inputTokens, greaterThan(0));
});
});
group("calculateUSDCost", () {
test("zero usage is zero cost", () {
final usage = TokenUsage(inputTokens: 0, outputTokens: 0);
expect(calculateUSDCost("claude-sonnet-4-6", usage), equals(0.0));
});
test("1M input tokens at \$3 rate", () {
final usage = TokenUsage(inputTokens: 1000000, outputTokens: 0);
final cost = calculateUSDCost("claude-sonnet-4-6", usage);
expect(cost, closeTo(3.0, 0.001));
});
});
group("formatModelPricing", () {
test("formats expected string", () {
// Test with default cost tier
final costs = ModelCosts(
inputTokens: 3,
outputTokens: 15,
promptCacheWriteTokens: 3.75,
promptCacheReadTokens: 0.3,
provider: 'test',
);
final result = formatModelPricing(costs);
expect(result, contains("3"));
expect(result, contains("15"));
expect(result, contains("Mtok"));
});
});
}