MCPcopy Create free account
hub / github.com/cel-expr/cel-go / TestConstantFoldingOptimizerTwoVar

Function TestConstantFoldingOptimizerTwoVar

cel/optimizer_test.go:341–443  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

339}
340
341func TestConstantFoldingOptimizerTwoVar(t *testing.T) {
342 tests := []struct {
343 expr string
344 folded string
345 knownValues map[string]any
346 }{
347 {
348 expr: `[1 + 1, 1 + 2].all(i, v, i < 10 && v < 10)`,
349 folded: `true`,
350 },
351 {
352 expr: `[1 + 1, 1 + 2].all(i, v, i < 10 && v < x)`,
353 folded: `[2, 3].all(i, v, i < 10 && v < x)`,
354 },
355 {
356 expr: `[1, 2, 3].transformList(i, v, i + v)`,
357 folded: `[1, 3, 5]`,
358 },
359 {
360 expr: `{'a': 1, 'b': 2}.all(k, v, v > 0)`,
361 folded: `true`,
362 },
363 {
364 expr: `v > 0 && [1 + 1, 1 + 2].all(i, v, i < 10 && v < 10)`,
365 folded: `v > 0`,
366 },
367 {
368 expr: `[1 + 1, 1 + 2].all(i, v, i < 10 && v < 10) && v > 0`,
369 folded: `v > 0`,
370 },
371 {
372 expr: `[1, 2, 3].transformList(i, v, i + v + k)`,
373 folded: `[1, 2, 3].transformList(i, v, i + v + k)`,
374 },
375 {
376 expr: `l.transformList(i, v, i + v)`,
377 folded: `l.transformList(i, v, i + v)`,
378 },
379 {
380 expr: `v > 0 && [1 + 1, 1 + 2].all(i, v, i < 10 && v < 10)`,
381 folded: `true`,
382 knownValues: map[string]any{
383 "v": 5,
384 },
385 },
386 {
387 expr: `[1 + 1, 1 + 2].all(i, v, i < 10 && v < .v)`,
388 folded: `true`,
389 knownValues: map[string]any{
390 "v": 10,
391 },
392 },
393 }
394 e, err := cel.NewEnv(
395 cel.OptionalTypes(),
396 cel.EnableMacroCallTracking(),
397 ext.TwoVarComprehensions(),
398 cel.Variable("x", cel.IntType),

Callers

nothing calls this directly

Calls 13

CompileMethod · 0.95
OptimizeMethod · 0.95
NewEnvFunction · 0.92
OptionalTypesFunction · 0.92
EnableMacroCallTrackingFunction · 0.92
TwoVarComprehensionsFunction · 0.92
VariableFunction · 0.92
NewActivationFunction · 0.92
FoldKnownValuesFunction · 0.92
NewStaticOptimizerFunction · 0.92
AstToStringFunction · 0.92

Tested by

no test coverage detected