51 lines
1.6 KiB
Dart
51 lines
1.6 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", () {
|
|
final result = formatModelPricing(costTier3_15);
|
|
expect(result, contains("3"));
|
|
expect(result, contains("15"));
|
|
expect(result, contains("Mtok"));
|
|
});
|
|
});
|
|
}
|