92 lines
1.6 KiB
Go
92 lines
1.6 KiB
Go
|
|
package llm
|
||
|
|
|
||
|
|
import (
|
||
|
|
"testing"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestConfigValidate(t *testing.T) {
|
||
|
|
tests := []struct {
|
||
|
|
name string
|
||
|
|
cfg Config
|
||
|
|
wantErr bool
|
||
|
|
}{
|
||
|
|
{
|
||
|
|
name: "empty config",
|
||
|
|
cfg: Config{},
|
||
|
|
wantErr: true,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "missing model",
|
||
|
|
cfg: Config{
|
||
|
|
URL: "https://api.example.com",
|
||
|
|
},
|
||
|
|
wantErr: true,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "missing URL",
|
||
|
|
cfg: Config{
|
||
|
|
Model: "gpt-4o",
|
||
|
|
},
|
||
|
|
wantErr: true,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "invalid timeout",
|
||
|
|
cfg: Config{
|
||
|
|
Model: "gpt-4o",
|
||
|
|
URL: "https://api.example.com",
|
||
|
|
Timeout: "not-a-duration",
|
||
|
|
},
|
||
|
|
wantErr: true,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "valid minimal config",
|
||
|
|
cfg: Config{
|
||
|
|
Model: "gpt-4o",
|
||
|
|
URL: "https://api.example.com",
|
||
|
|
},
|
||
|
|
wantErr: false,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "valid config with timeout",
|
||
|
|
cfg: Config{
|
||
|
|
Model: "gpt-4o",
|
||
|
|
URL: "https://api.example.com",
|
||
|
|
Timeout: "15m",
|
||
|
|
},
|
||
|
|
wantErr: false,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "valid config with complex timeout",
|
||
|
|
cfg: Config{
|
||
|
|
Model: "gpt-4o",
|
||
|
|
URL: "https://api.example.com",
|
||
|
|
Timeout: "1h30m45s",
|
||
|
|
},
|
||
|
|
wantErr: false,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
name: "valid full config",
|
||
|
|
cfg: Config{
|
||
|
|
Key: "sk-test-key",
|
||
|
|
Model: "gpt-4o",
|
||
|
|
SystemPrompt: "You are a helpful assistant.",
|
||
|
|
Timeout: "30m",
|
||
|
|
URL: "https://api.example.com",
|
||
|
|
},
|
||
|
|
wantErr: false,
|
||
|
|
},
|
||
|
|
}
|
||
|
|
|
||
|
|
for _, tt := range tests {
|
||
|
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
|
err := tt.cfg.Validate()
|
||
|
|
if (err != nil) != tt.wantErr {
|
||
|
|
t.Errorf(
|
||
|
|
"Validate() error = %v, wantErr %v",
|
||
|
|
err, tt.wantErr,
|
||
|
|
)
|
||
|
|
}
|
||
|
|
})
|
||
|
|
}
|
||
|
|
}
|