(t *testing.T)
| 223 | } |
| 224 | |
| 225 | func TestDistanceHelper(t *testing.T) { |
| 226 | err := Init(nil) |
| 227 | require.NoError(t, err) |
| 228 | |
| 229 | tests := []struct { |
| 230 | lat1 string |
| 231 | lon1 string |
| 232 | lat2 string |
| 233 | lon2 string |
| 234 | dist float64 |
| 235 | valid bool |
| 236 | expr string |
| 237 | name string |
| 238 | }{ |
| 239 | {"51.45", "1.15", "41.54", "12.27", 1389.1793118293067, true, `Distance(lat1, lon1, lat2, lon2)`, "valid"}, |
| 240 | {"lol", "1.15", "41.54", "12.27", 0.0, false, `Distance(lat1, lon1, lat2, lon2)`, "invalid lat1"}, |
| 241 | {"0.0", "0.0", "12.1", "12.1", 0.0, true, `Distance(lat1, lon1, lat2, lon2)`, "empty coord"}, |
| 242 | } |
| 243 | |
| 244 | for _, test := range tests { |
| 245 | t.Run(test.name, func(t *testing.T) { |
| 246 | env := map[string]any{ |
| 247 | "lat1": test.lat1, |
| 248 | "lon1": test.lon1, |
| 249 | "lat2": test.lat2, |
| 250 | "lon2": test.lon2, |
| 251 | } |
| 252 | |
| 253 | vm, err := expr.Compile(test.expr, GetExprOptions(env)...) |
| 254 | if err != nil { |
| 255 | t.Fatalf("pattern:%s val:%s NOK %s", test.lat1, test.lon1, err) |
| 256 | } |
| 257 | |
| 258 | ret, err := expr.Run(vm, env) |
| 259 | if test.valid { |
| 260 | require.NoError(t, err) |
| 261 | assert.InDelta(t, test.dist, ret, 0.000001) |
| 262 | } else { |
| 263 | require.Error(t, err) |
| 264 | } |
| 265 | }) |
| 266 | } |
| 267 | } |
| 268 | |
| 269 | func TestRegexpCacheBehavior(t *testing.T) { |
| 270 | err := Init(nil) |
nothing calls this directly
no test coverage detected
searching dependent graphs…