internal/message/ — Content discriminated union, Message, Usage, StopReason, Response. 22 tests. internal/stream/ — Stream pull-based iterator interface, Event types, Accumulator (assembles Response from events). 8 tests. internal/provider/ — Provider interface, Request, ToolDefinition, Registry with factory pattern, ProviderError with HTTP status classification. errors.AsType[E] for Go 1.26. 13 tests. 43 tests total, all passing.
71 lines
1.6 KiB
Go
71 lines
1.6 KiB
Go
package message
|
|
|
|
import "testing"
|
|
|
|
func TestUsage_TotalTokens(t *testing.T) {
|
|
u := Usage{InputTokens: 100, OutputTokens: 50}
|
|
if got := u.TotalTokens(); got != 150 {
|
|
t.Errorf("TotalTokens() = %d, want 150", got)
|
|
}
|
|
}
|
|
|
|
func TestUsage_TotalTokens_Zero(t *testing.T) {
|
|
var u Usage
|
|
if got := u.TotalTokens(); got != 0 {
|
|
t.Errorf("TotalTokens() = %d, want 0", got)
|
|
}
|
|
}
|
|
|
|
func TestUsage_Add(t *testing.T) {
|
|
u := Usage{
|
|
InputTokens: 100,
|
|
OutputTokens: 50,
|
|
CacheReadTokens: 10,
|
|
CacheCreationTokens: 5,
|
|
}
|
|
other := Usage{
|
|
InputTokens: 200,
|
|
OutputTokens: 80,
|
|
CacheReadTokens: 20,
|
|
CacheCreationTokens: 15,
|
|
}
|
|
|
|
u.Add(other)
|
|
|
|
if u.InputTokens != 300 {
|
|
t.Errorf("InputTokens = %d, want 300", u.InputTokens)
|
|
}
|
|
if u.OutputTokens != 130 {
|
|
t.Errorf("OutputTokens = %d, want 130", u.OutputTokens)
|
|
}
|
|
if u.CacheReadTokens != 30 {
|
|
t.Errorf("CacheReadTokens = %d, want 30", u.CacheReadTokens)
|
|
}
|
|
if u.CacheCreationTokens != 20 {
|
|
t.Errorf("CacheCreationTokens = %d, want 20", u.CacheCreationTokens)
|
|
}
|
|
}
|
|
|
|
func TestUsage_Add_Multiple(t *testing.T) {
|
|
var total Usage
|
|
turns := []Usage{
|
|
{InputTokens: 100, OutputTokens: 50},
|
|
{InputTokens: 200, OutputTokens: 80},
|
|
{InputTokens: 150, OutputTokens: 60},
|
|
}
|
|
|
|
for _, turn := range turns {
|
|
total.Add(turn)
|
|
}
|
|
|
|
if total.InputTokens != 450 {
|
|
t.Errorf("InputTokens = %d, want 450", total.InputTokens)
|
|
}
|
|
if total.OutputTokens != 190 {
|
|
t.Errorf("OutputTokens = %d, want 190", total.OutputTokens)
|
|
}
|
|
if total.TotalTokens() != 640 {
|
|
t.Errorf("TotalTokens() = %d, want 640", total.TotalTokens())
|
|
}
|
|
}
|