diff --git a/.gitignore b/.gitignore index 4b65671..b030237 100644 --- a/.gitignore +++ b/.gitignore @@ -18,8 +18,5 @@ coverage.out *.test -# Stray/unwanted test file from previous work -config/config_test.go - # Large session-generated review notes docs/ \ No newline at end of file diff --git a/config/config_test.go b/config/config_test.go new file mode 100644 index 0000000..b931086 --- /dev/null +++ b/config/config_test.go @@ -0,0 +1,68 @@ +package config + +import ( + "testing" +) + +func TestConfig_Validate(t *testing.T) { + tests := []struct { + name string + cfg Config + wantErr bool + }{ + { + name: "valid defaults", + cfg: GetDefaultConfig(), + }, + { + name: "negative concurrency", + cfg: Config{ + MaxConcurrentRequests: -1, + }, + wantErr: true, + }, + { + name: "invalid memory gc algorithm", + cfg: Config{ + Cache: CacheConfig{ + Memory: MemoryConfig{ + Size: "1GB", + GCAlgorithm: "invalid", + }, + }, + }, + wantErr: true, + }, + { + name: "disk enabled without path", + cfg: Config{ + Cache: CacheConfig{ + Disk: DiskConfig{ + Size: "100GB", + GCAlgorithm: "lru", + }, + }, + }, + wantErr: true, + }, + } + + 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) + } + }) + } +} + +func TestGetDefaultConfig(t *testing.T) { + def := GetDefaultConfig() + if def.ListenAddress != ":80" { + t.Error("expected default listen address :80") + } + if def.Cache.Memory.Size != "1GB" { + t.Error("expected default memory 1GB") + } +}