package geospatial import ( "testing" ) func TestDefaultConfig(t *testing.T) { config := DefaultConfig() if config.EarthRadiusKm != 6371.0 { t.Errorf("DefaultConfig() EarthRadiusKm = %v, want 6371.0", config.EarthRadiusKm) } if config.DefaultDistanceMethod != "haversine" { t.Errorf("DefaultConfig() DefaultDistanceMethod = %v, want haversine", config.DefaultDistanceMethod) } if config.DefaultCoordinateSystem != WGS84 { t.Errorf("DefaultConfig() DefaultCoordinateSystem = %v, want WGS84", config.DefaultCoordinateSystem) } } func TestConfig_Validate(t *testing.T) { tests := []struct { name string config *Config wantErr bool }{ { name: "Valid config", config: DefaultConfig(), wantErr: false, }, { name: "Invalid earth radius", config: &Config{ EarthRadiusKm: -1, }, wantErr: true, }, { name: "Invalid latitude range", config: &Config{ EarthRadiusKm: 6371.0, MaxLatitude: 50.0, MinLatitude: 60.0, // Max < Min }, wantErr: true, }, { name: "Invalid longitude range", config: &Config{ EarthRadiusKm: 6371.0, MaxLongitude: -10.0, MinLongitude: 10.0, // Max < Min }, wantErr: true, }, { name: "Invalid distance method", config: &Config{ EarthRadiusKm: 6371.0, DefaultDistanceMethod: "invalid", }, 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) } }) } }