diff --git a/src/main/java/io/github/jamsesso/jsonlogic/evaluator/expressions/AllExpression.java b/src/main/java/io/github/jamsesso/jsonlogic/evaluator/expressions/AllExpression.java index a29b0fd..711387a 100644 --- a/src/main/java/io/github/jamsesso/jsonlogic/evaluator/expressions/AllExpression.java +++ b/src/main/java/io/github/jamsesso/jsonlogic/evaluator/expressions/AllExpression.java @@ -28,6 +28,10 @@ public Object evaluate(JsonLogicEvaluator evaluator, JsonLogicArray arguments, O Object maybeArray = evaluator.evaluate(arguments.get(0), data); + if (maybeArray == null) { + return false; + } + if (!ArrayLike.isEligible(maybeArray)) { throw new JsonLogicEvaluationException("first argument to all must be a valid array"); } diff --git a/src/test/resources/fixtures.json b/src/test/resources/fixtures.json index 14336be..fa39dfc 100644 --- a/src/test/resources/fixtures.json +++ b/src/test/resources/fixtures.json @@ -3711,5 +3711,119 @@ "items": [] }, false + ], + [ + { + "all": [ + { + "var": "" + }, + { + "in": [ + { + "var": "" + }, + ["item1","item2","item3"] + ] + } + ] + }, + [], + false + ], + [ + { + "all": [ + { + "var": "" + }, + { + "in": [ + { + "var": "" + }, + ["item1","item2","item3"] + ] + } + ] + }, + ["item1"], + true + ], + [ + { + "all": [ + { + "var": "" + }, + { + "in": [ + { + "var": "" + }, + ["item1","item2","item3"] + ] + } + ] + }, + ["item4"], + false + ], + [ + { + "all": [ + { + "var": "item" + }, + { + "in": [ + { + "var": "" + }, + ["item1","item2","item3"] + ] + } + ] + }, + {}, + false + ], + [ + { + "all": [ + { + "var": "item" + }, + { + "in": [ + { + "var": "" + }, + ["item1","item2","item3"] + ] + } + ] + }, + { "item": ["item1"] }, + true + ], + [ + { + "all": [ + { + "var": "item" + }, + { + "in": [ + { + "var": "" + }, + ["item1","item2","item3"] + ] + } + ] + }, + { "item": ["item4"] }, + false ] ] \ No newline at end of file