Files
gemini-grs/config/config_test.go

64 lines
1.3 KiB
Go

package config
import (
"os"
"testing"
"github.com/rs/zerolog"
"github.com/stretchr/testify/assert"
)
func TestGetConfig(t *testing.T) {
// Set up test environment variables
envVars := map[string]string{
EnvLogLevel: "debug",
EnvRootPath: ".",
EnvNumWorkers: "5",
EnvWorkerBatchSize: "100",
EnvMaxResponseSize: "1048576",
EnvResponseTimeout: "30",
}
for k, v := range envVars {
os.Setenv(k, v)
defer os.Unsetenv(k)
}
// Get configuration
config := GetConfig()
// Assert configuration values
assert.Equal(t, zerolog.DebugLevel, config.LogLevel)
assert.Equal(t, ".", config.RootPath)
assert.Equal(t, 5, config.NumOfWorkers)
assert.Equal(t, 100, config.WorkerBatchSize)
assert.Equal(t, 1048576, config.MaxResponseSize)
assert.Equal(t, 30, config.ResponseTimeout)
}
func TestParsePositiveInt(t *testing.T) {
tests := []struct {
name string
input string
want int
wantErr bool
}{
{"valid positive", "42", 42, false},
{"zero", "0", 0, true},
{"negative", "-1", 0, true},
{"invalid", "abc", 0, true},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := parsePositiveInt(tt.input)
if tt.wantErr {
assert.Error(t, err)
} else {
assert.NoError(t, err)
assert.Equal(t, tt.want, got)
}
})
}
}