@@ -66,13 +66,13 @@ public class ConstantFoldingOptimizerTest {
6666 CelExtensions .math (CelOptions .DEFAULT ),
6767 CelExtensions .strings (),
6868 CelExtensions .sets (CelOptions .DEFAULT ),
69- CelExtensions .encoders ())
69+ CelExtensions .encoders (CelOptions . DEFAULT ))
7070 .addRuntimeLibraries (
7171 CelOptionalLibrary .INSTANCE ,
7272 CelExtensions .math (CelOptions .DEFAULT ),
7373 CelExtensions .strings (),
7474 CelExtensions .sets (CelOptions .DEFAULT ),
75- CelExtensions .encoders ())
75+ CelExtensions .encoders (CelOptions . DEFAULT ))
7676 .build ();
7777
7878 private static final CelOptimizer CEL_OPTIMIZER =
@@ -189,6 +189,28 @@ public class ConstantFoldingOptimizerTest {
189189 @ TestParameters ("{source: 'sets.contains([1], [1])', expected: 'true'}" )
190190 @ TestParameters (
191191 "{source: 'cel.bind(r0, [1, 2, 3], cel.bind(r1, 1 in r0, r1))', expected: 'true'}" )
192+ @ TestParameters ("{source: 'x == true', expected: 'x'}" )
193+ @ TestParameters ("{source: 'true == x', expected: 'x'}" )
194+ @ TestParameters ("{source: 'x == false', expected: '!x'}" )
195+ @ TestParameters ("{source: 'false == x', expected: '!x'}" )
196+ @ TestParameters ("{source: 'true == false', expected: 'false'}" )
197+ @ TestParameters ("{source: 'true == true', expected: 'true'}" )
198+ @ TestParameters ("{source: 'false == true', expected: 'false'}" )
199+ @ TestParameters ("{source: 'false == false', expected: 'true'}" )
200+ @ TestParameters ("{source: '10 == 42', expected: 'false'}" )
201+ @ TestParameters ("{source: '42 == 42', expected: 'true'}" )
202+ @ TestParameters ("{source: 'x != true', expected: '!x'}" )
203+ @ TestParameters ("{source: 'true != x', expected: '!x'}" )
204+ @ TestParameters ("{source: 'x != false', expected: 'x'}" )
205+ @ TestParameters ("{source: 'false != x', expected: 'x'}" )
206+ @ TestParameters ("{source: 'true != false', expected: 'true'}" )
207+ @ TestParameters ("{source: 'true != true', expected: 'false'}" )
208+ @ TestParameters ("{source: 'false != true', expected: 'true'}" )
209+ @ TestParameters ("{source: 'false != false', expected: 'false'}" )
210+ @ TestParameters ("{source: '10 != 42', expected: 'true'}" )
211+ @ TestParameters ("{source: '42 != 42', expected: 'false'}" )
212+ @ TestParameters ("{source: '[\" foo\" ,\" bar\" ] == [\" foo\" ,\" bar\" ]', expected: 'true'}" )
213+ @ TestParameters ("{source: '[\" bar\" ,\" foo\" ] == [\" foo\" ,\" bar\" ]', expected: 'false'}" )
192214 // TODO: Support folding lists with mixed types. This requires mutable lists.
193215 // @TestParameters("{source: 'dyn([1]) + [1.0]'}")
194216 public void constantFold_success (String source , String expected ) throws Exception {
@@ -324,6 +346,8 @@ public void constantFold_macros_withoutMacroCallMetadata(String source) throws E
324346 @ TestParameters ("{source: 'TestAllTypes{single_int32: x, repeated_int32: [1, 2, 3]}'}" )
325347 @ TestParameters ("{source: 'get_true() == get_true()'}" )
326348 @ TestParameters ("{source: 'get_true() == true'}" )
349+ @ TestParameters ("{source: 'x == x'}" )
350+ @ TestParameters ("{source: 'x == 42'}" )
327351 public void constantFold_noOp (String source ) throws Exception {
328352 CelAbstractSyntaxTree ast = CEL .compile (source ).getAst ();
329353
0 commit comments