@@ -80,6 +80,7 @@ private static Cel setupEnv(CelBuilder celBuilder) {
8080 return celBuilder
8181 .addVar ("x" , SimpleType .DYN )
8282 .addVar ("y" , SimpleType .DYN )
83+ .addVar ("bool_var" , SimpleType .BOOL )
8384 .addVar ("list_var" , ListType .create (SimpleType .STRING ))
8485 .addVar ("map_var" , MapType .create (SimpleType .STRING , SimpleType .STRING ))
8586 .setStandardMacros (CelStandardMacro .STANDARD_MACROS )
@@ -127,17 +128,16 @@ private static Cel setupEnv(CelBuilder celBuilder) {
127128 @ TestParameters ("{source: 'false || false', expected: 'false'}" )
128129 @ TestParameters ("{source: 'true && false || true', expected: 'true'}" )
129130 @ TestParameters ("{source: 'false && true || false', expected: 'false'}" )
130- @ TestParameters ("{source: 'true && x', expected: 'x'}" )
131- @ TestParameters ("{source: 'x && true', expected: 'x'}" )
131+ @ TestParameters ("{source: 'true && bool_var', expected: 'bool_var'}" )
132+ @ TestParameters ("{source: 'bool_var && false', expected: 'false'}" )
133+ @ TestParameters ("{source: 'bool_var && true', expected: 'bool_var'}" )
134+ @ TestParameters ("{source: 'false || [1 + 2, x][0]', expected: 'false || [3, x][0]'}" )
132135 @ TestParameters ("{source: 'false && x', expected: 'false'}" )
133136 @ TestParameters ("{source: 'x && false', expected: 'false'}" )
134137 @ TestParameters ("{source: 'true || x', expected: 'true'}" )
135138 @ TestParameters ("{source: 'x || true', expected: 'true'}" )
136- @ TestParameters ("{source: 'false || x', expected: 'x'}" )
137- @ TestParameters ("{source: 'x || false', expected: 'x'}" )
138- @ TestParameters ("{source: 'true && x && true && x', expected: 'x && x'}" )
139- @ TestParameters ("{source: 'false || x || false || x', expected: 'x || x'}" )
140- @ TestParameters ("{source: 'false || x || false || y', expected: 'x || y'}" )
139+ @ TestParameters ("{source: 'false || bool_var', expected: 'bool_var'}" )
140+ @ TestParameters ("{source: 'bool_var || false', expected: 'bool_var'}" )
141141 @ TestParameters ("{source: 'true ? x + 1 : x + 2', expected: 'x + 1'}" )
142142 @ TestParameters ("{source: 'false ? x + 1 : x + 2', expected: 'x + 2'}" )
143143 @ TestParameters (
@@ -230,10 +230,10 @@ private static Cel setupEnv(CelBuilder celBuilder) {
230230 @ TestParameters ("{source: 'sets.contains([1], [1])', expected: 'true'}" )
231231 @ TestParameters (
232232 "{source: 'cel.bind(r0, [1, 2, 3], cel.bind(r1, 1 in r0, r1))', expected: 'true'}" )
233- @ TestParameters ("{source: 'x == true', expected: 'x '}" )
234- @ TestParameters ("{source: 'true == x ', expected: 'x '}" )
235- @ TestParameters ("{source: 'x == false', expected: '!x '}" )
236- @ TestParameters ("{source: 'false == x ', expected: '!x '}" )
233+ @ TestParameters ("{source: 'bool_var == true', expected: 'bool_var '}" )
234+ @ TestParameters ("{source: 'true == bool_var ', expected: 'bool_var '}" )
235+ @ TestParameters ("{source: 'bool_var == false', expected: '!bool_var '}" )
236+ @ TestParameters ("{source: 'false == bool_var ', expected: '!bool_var '}" )
237237 @ TestParameters ("{source: 'true == false', expected: 'false'}" )
238238 @ TestParameters ("{source: 'true == true', expected: 'true'}" )
239239 @ TestParameters ("{source: 'false == true', expected: 'false'}" )
@@ -257,10 +257,10 @@ private static Cel setupEnv(CelBuilder celBuilder) {
257257 @ TestParameters ("{source: 'false == false', expected: 'true'}" )
258258 @ TestParameters ("{source: '10 == 42', expected: 'false'}" )
259259 @ TestParameters ("{source: '42 == 42', expected: 'true'}" )
260- @ TestParameters ("{source: 'x != true', expected: '!x '}" )
261- @ TestParameters ("{source: 'true != x ', expected: '!x '}" )
262- @ TestParameters ("{source: 'x != false', expected: 'x '}" )
263- @ TestParameters ("{source: 'false != x ', expected: 'x '}" )
260+ @ TestParameters ("{source: 'bool_var != true', expected: '!bool_var '}" )
261+ @ TestParameters ("{source: 'true != bool_var ', expected: '!bool_var '}" )
262+ @ TestParameters ("{source: 'bool_var != false', expected: 'bool_var '}" )
263+ @ TestParameters ("{source: 'false != bool_var ', expected: 'bool_var '}" )
264264 @ TestParameters ("{source: 'true != false', expected: 'true'}" )
265265 @ TestParameters ("{source: 'true != true', expected: 'false'}" )
266266 @ TestParameters ("{source: 'false != true', expected: 'true'}" )
@@ -395,6 +395,7 @@ public void constantFold_protoMessageLiteral_success(String source, String expec
395395 @ TestParameters (
396396 "{source: 'cel.bind(myMap, {\" foo\" : \" bar\" }, myMap[?\" foo\" ].optMap(x, x + \" baz\" ))', "
397397 + "expected: 'optional.of(\" barbaz\" )'}" )
398+ @ TestParameters ("{source: '(1 + 2 + 3 == x) && (x in [1, 2, x])', expected: '6 == x'}" )
398399 public void constantFold_macros_macroCallMetadataPopulated (String source , String expected )
399400 throws Exception {
400401 Cel cel =
@@ -498,6 +499,22 @@ public void constantFold_macros_withoutMacroCallMetadata(String source) throws E
498499 @ TestParameters ("{source: '[true].exists(x, x == get_true())'}" )
499500 @ TestParameters ("{source: 'get_list([1, 2]).map(x, x * 2)'}" )
500501 @ TestParameters ("{source: '[(x - 1 > 3) ? (x - 1) : 5].exists(x, x - 1 > 3)'}" )
502+ @ TestParameters ("{source: 'true && x'}" )
503+ @ TestParameters ("{source: 'x && true'}" )
504+ @ TestParameters ("{source: 'false || x'}" )
505+ @ TestParameters ("{source: 'x || false'}" )
506+ @ TestParameters ("{source: 'true && x && true && x'}" )
507+ @ TestParameters ("{source: 'false || x || false || x'}" )
508+ @ TestParameters ("{source: 'false || x || false || y'}" )
509+ @ TestParameters ("{source: 'x == true'}" )
510+ @ TestParameters ("{source: 'true == x'}" )
511+ @ TestParameters ("{source: 'x == false'}" )
512+ @ TestParameters ("{source: 'false == x'}" )
513+ @ TestParameters ("{source: 'x != true'}" )
514+ @ TestParameters ("{source: 'true != x'}" )
515+ @ TestParameters ("{source: 'x != false'}" )
516+ @ TestParameters ("{source: 'false != x'}" )
517+ @ TestParameters ("{source: '[x].exists(item, item == true)'}" )
501518 public void constantFold_noOp (String source ) throws Exception {
502519 CelAbstractSyntaxTree ast = cel .compile (source ).getAst ();
503520
0 commit comments