|
32 | 32 | import dev.cel.common.CelOverloadDecl; |
33 | 33 | import dev.cel.common.types.ListType; |
34 | 34 | import dev.cel.common.types.MapType; |
| 35 | +import dev.cel.common.types.OptionalType; |
35 | 36 | import dev.cel.common.types.SimpleType; |
36 | 37 | import dev.cel.common.types.StructTypeReference; |
37 | 38 | import dev.cel.expr.conformance.proto2.TestAllTypes.NestedMessage; |
@@ -80,6 +81,18 @@ private static Cel setupEnv(CelBuilder celBuilder) { |
80 | 81 | return celBuilder |
81 | 82 | .addVar("x", SimpleType.DYN) |
82 | 83 | .addVar("y", SimpleType.DYN) |
| 84 | + .addVar("dyn_x", SimpleType.DYN) |
| 85 | + .addVar("int_x", SimpleType.INT) |
| 86 | + .addVar("double_x", SimpleType.DOUBLE) |
| 87 | + .addVar("bool_x", SimpleType.BOOL) |
| 88 | + .addVar("string_x", SimpleType.STRING) |
| 89 | + .addVar("int_list_x", ListType.create(SimpleType.INT)) |
| 90 | + .addVar("double_list_x", ListType.create(SimpleType.DOUBLE)) |
| 91 | + .addVar("dyn_list_x", ListType.create(SimpleType.DYN)) |
| 92 | + .addVar("map_string_int_x", MapType.create(SimpleType.STRING, SimpleType.INT)) |
| 93 | + .addVar("map_string_double_x", MapType.create(SimpleType.STRING, SimpleType.DOUBLE)) |
| 94 | + .addVar("optional_int_x", OptionalType.create(SimpleType.INT)) |
| 95 | + .addVar("optional_double_x", OptionalType.create(SimpleType.DOUBLE)) |
83 | 96 | .addVar("bool_var", SimpleType.BOOL) |
84 | 97 | .addVar("list_var", ListType.create(SimpleType.STRING)) |
85 | 98 | .addVar("map_var", MapType.create(SimpleType.STRING, SimpleType.STRING)) |
@@ -151,7 +164,29 @@ private static Cel setupEnv(CelBuilder celBuilder) { |
151 | 164 | @TestParameters("{source: '5 in [1, 1 + 2, 1 + (2 + 3)]', expected: 'false'}") |
152 | 165 | @TestParameters("{source: '5 in [1, x, y, 5]', expected: 'true'}") |
153 | 166 | @TestParameters("{source: '!(5 in [1, x, y, 5])', expected: 'false'}") |
154 | | - @TestParameters("{source: 'x in [1, x, y, 5]', expected: 'true'}") |
| 167 | + @TestParameters("{source: 'x in [1, x, y, 5]', expected: 'x in [1, x, y, 5]'}") |
| 168 | + @TestParameters("{source: 'dyn_x in [1, 2, dyn_x]', expected: 'dyn_x in [1, 2, dyn_x]'}") |
| 169 | + @TestParameters("{source: 'int_x in [1, 2, int_x]', expected: 'true'}") |
| 170 | + @TestParameters("{source: 'bool_x in [true, false, bool_x]', expected: 'true'}") |
| 171 | + @TestParameters("{source: 'string_x in [\"a\", \"b\", string_x]', expected: 'true'}") |
| 172 | + @TestParameters( |
| 173 | + "{source: 'double_x in [1.0, 2.0, double_x]', expected: 'double_x in [1.0, 2.0, double_x]'}") |
| 174 | + @TestParameters("{source: 'int_list_x in [[1], [2], int_list_x]', expected: 'true'}") |
| 175 | + @TestParameters( |
| 176 | + "{source: 'double_list_x in [[1.0], double_list_x]', expected: 'double_list_x in [[1.0]," |
| 177 | + + " double_list_x]'}") |
| 178 | + @TestParameters( |
| 179 | + "{source: 'dyn_list_x in [[1], dyn_list_x]', expected: 'dyn_list_x in [[1], dyn_list_x]'}") |
| 180 | + @TestParameters( |
| 181 | + "{source: 'map_string_int_x in [{\"a\": 1}, map_string_int_x]', expected: 'true'}") |
| 182 | + @TestParameters( |
| 183 | + "{source: 'map_string_double_x in [{\"a\": 1.0}, map_string_double_x]', expected:" |
| 184 | + + " 'map_string_double_x in [{\"a\": 1.0}, map_string_double_x]'}") |
| 185 | + @TestParameters( |
| 186 | + "{source: 'optional_int_x in [optional.of(1), optional_int_x]', expected: 'true'}") |
| 187 | + @TestParameters( |
| 188 | + "{source: 'optional_double_x in [optional.of(1.0), optional_double_x]', expected:" |
| 189 | + + " 'optional_double_x in [optional.of(1.0), optional_double_x]'}") |
155 | 190 | @TestParameters("{source: 'x in [1, 1 + 2, 1 + (2 + 3)]', expected: 'x in [1, 3, 6]'}") |
156 | 191 | @TestParameters("{source: 'duration(string(7 * 24) + ''h'')', expected: 'duration(\"168h\")'}") |
157 | 192 | @TestParameters("{source: '[1, ?optional.of(3)]', expected: '[1, 3]'}") |
@@ -395,7 +430,8 @@ public void constantFold_protoMessageLiteral_success(String source, String expec |
395 | 430 | @TestParameters( |
396 | 431 | "{source: 'cel.bind(myMap, {\"foo\": \"bar\"}, myMap[?\"foo\"].optMap(x, x + \"baz\"))', " |
397 | 432 | + "expected: 'optional.of(\"barbaz\")'}") |
398 | | - @TestParameters("{source: '(1 + 2 + 3 == x) && (x in [1, 2, x])', expected: '6 == x'}") |
| 433 | + @TestParameters( |
| 434 | + "{source: '(1 + 2 + 3 == x) && (x in [1, 2, x])', expected: '6 == x && x in [1, 2, x]'}") |
399 | 435 | public void constantFold_macros_macroCallMetadataPopulated(String source, String expected) |
400 | 436 | throws Exception { |
401 | 437 | Cel cel = |
|
0 commit comments