package graph import ( "testing" ) func TestDefaultConfig(t *testing.T) { config := DefaultConfig() if config == nil { t.Fatal("DefaultConfig() returned nil") } // Check default values if config.MaxChainLength != 5 { t.Errorf("MaxChainLength = %v, want 5", config.MaxChainLength) } if config.MaxPathHops != 4 { t.Errorf("MaxPathHops = %v, want 4", config.MaxPathHops) } if config.MaxNetworkSize != 20 { t.Errorf("MaxNetworkSize = %v, want 20", config.MaxNetworkSize) } if config.MinNetworkSize != 3 { t.Errorf("MinNetworkSize = %v, want 3", config.MinNetworkSize) } if config.DefaultResultLimit != 50 { t.Errorf("DefaultResultLimit = %v, want 50", config.DefaultResultLimit) } if config.MaxChainDistanceKm != 500.0 { t.Errorf("MaxChainDistanceKm = %v, want 500.0", config.MaxChainDistanceKm) } if config.QueryTimeoutSeconds != 30 { t.Errorf("QueryTimeoutSeconds = %v, want 30", config.QueryTimeoutSeconds) } } func TestConfig_Validate(t *testing.T) { tests := []struct { name string config *Config wantErr bool }{ { name: "Valid config", config: DefaultConfig(), wantErr: false, }, { name: "Invalid MaxChainLength", config: &Config{ MaxChainLength: 0, }, wantErr: true, }, { name: "Invalid MaxPathHops", config: &Config{ MaxChainLength: 5, MaxPathHops: 0, }, wantErr: true, }, { name: "Invalid MaxNetworkSize < MinNetworkSize", config: &Config{ MaxChainLength: 5, MaxPathHops: 4, MaxNetworkSize: 2, MinNetworkSize: 5, }, wantErr: true, }, { name: "Invalid DefaultResultLimit", config: &Config{ MaxChainLength: 5, MaxPathHops: 4, MaxNetworkSize: 20, MinNetworkSize: 3, DefaultResultLimit: 0, }, wantErr: true, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { err := tt.config.Validate() if (err != nil) != tt.wantErr { t.Errorf("Config.Validate() error = %v, wantErr %v", err, tt.wantErr) } }) } }