af2c5b95f7
- Split 1474-line dashboard.go into 5 domain files (clients, providers, users, system) - Unit tests for ModelRegistry.FindModel and CalculateCost - go mod tidy + verify (deps clean) - .gitignore excludes tool cache dirs (.pi-lens/, .opencode/)
41 lines
963 B
Go
41 lines
963 B
Go
package utils
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"gophergate/internal/models"
|
|
)
|
|
|
|
func TestCalculateCost_NotFound(t *testing.T) {
|
|
r := &models.ModelRegistry{Providers: make(map[string]models.ProviderInfo)}
|
|
cost := CalculateCost(r, "unknown-model", 100, 50, 0, 0, 0)
|
|
if cost != 0.0 {
|
|
t.Fatalf("expected 0 cost for unknown model, got %f", cost)
|
|
}
|
|
}
|
|
|
|
func TestCalculateCost_KnownModel(t *testing.T) {
|
|
inputCost := 2.5 // $2.50 per 1M tokens
|
|
outputCost := 10.0 // $10.00 per 1M tokens
|
|
r := &models.ModelRegistry{
|
|
Providers: map[string]models.ProviderInfo{
|
|
"openai": {
|
|
Models: map[string]models.ModelMetadata{
|
|
"gpt-4o": {
|
|
Cost: &models.ModelCost{
|
|
Input: inputCost,
|
|
Output: outputCost,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
cost := CalculateCost(r, "gpt-4o", 1000, 500, 0, 0, 0)
|
|
expected := (1000 * inputCost / 1000000.0) + (500 * outputCost / 1000000.0)
|
|
if cost != expected {
|
|
t.Fatalf("expected %f, got %f", expected, cost)
|
|
}
|
|
}
|