(t *testing.T)
| 541 | } |
| 542 | |
| 543 | func 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 | |
| 599 | func TestTwoVarComprehensionsResidualAST(t *testing.T) { |
| 600 | tests := []struct { |
nothing calls this directly
no test coverage detected