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

Function TestTwoVarComprehensionsUnparse

ext/comprehensions_test.go:543–597  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

541}
542
543func TestTwoVarComprehensionsUnparse(t *testing.T) {
544 tests := []struct {
545 name string
546 expr string
547 unparsed string
548 }{
549 {
550 name: "transform map entry",
551 expr: `[0, 0u].transformMapEntry(i, v, {v: i})`,
552 unparsed: `[0, 0u].transformMapEntry(i, v, {v: i})`,
553 },
554 {
555 name: "transform map",
556 expr: `{'a': 'world', 'b': 'hello'}.transformMap(i, v, i == 'a' ? v.upperAscii() : v)`,
557 unparsed: `{"a": "world", "b": "hello"}.transformMap(i, v, (i == "a") ? v.upperAscii() : v)`,
558 },
559 {
560 name: "transform list",
561 expr: `[1.0, 2.0, 2.0].transformList(i, v, i / 2.0 == 1.0)`,
562 unparsed: `[1.0, 2.0, 2.0].transformList(i, v, i / 2.0 == 1.0)`,
563 },
564 {
565 name: "existsOne",
566 expr: `{'a': 'b', 'c': 'd'}.existsOne(k, v, k == 'b' || v == 'b')`,
567 unparsed: `{"a": "b", "c": "d"}.existsOne(k, v, k == "b" || v == "b")`,
568 },
569 {
570 name: "exists",
571 expr: `{'a': 'b', 'c': 'd'}.exists(k, v, k == 'b' || v == 'b')`,
572 unparsed: `{"a": "b", "c": "d"}.exists(k, v, k == "b" || v == "b")`,
573 },
574 {
575 name: "all",
576 expr: `[null, null, 'hello', string].all(i, v, i == 0 || type(v) != int)`,
577 unparsed: `[null, null, "hello", string].all(i, v, i == 0 || type(v) != int)`,
578 },
579 }
580 env := testCompreEnv(t)
581 for _, tst := range tests {
582 tc := tst
583 t.Run(tc.name, func(t *testing.T) {
584 ast, iss := env.Parse(tc.expr)
585 if iss.Err() != nil {
586 t.Fatalf("env.Parse(%q) failed: %v", tc.expr, iss.Err())
587 }
588 unparsed, err := cel.AstToString(ast)
589 if err != nil {
590 t.Fatalf("cel.AstToString() failed: %v", err)
591 }
592 if unparsed != tc.unparsed {
593 t.Errorf("cel.AstToString() got %q, wanted %q", unparsed, tc.unparsed)
594 }
595 })
596 }
597}
598
599func TestTwoVarComprehensionsResidualAST(t *testing.T) {
600 tests := []struct {

Callers

nothing calls this directly

Calls 4

AstToStringFunction · 0.92
testCompreEnvFunction · 0.85
ErrMethod · 0.80
ParseMethod · 0.65

Tested by

no test coverage detected