diff --git a/modules/lang-painless/src/test/java/org/elasticsearch/painless/FunctionRefTests.java b/modules/lang-painless/src/test/java/org/elasticsearch/painless/FunctionRefTests.java index 46d2b7c43fd..7136807bd7e 100644 --- a/modules/lang-painless/src/test/java/org/elasticsearch/painless/FunctionRefTests.java +++ b/modules/lang-painless/src/test/java/org/elasticsearch/painless/FunctionRefTests.java @@ -170,10 +170,24 @@ public class FunctionRefTests extends ScriptTestCase { assertTrue(expected.getMessage().contains("Unknown reference")); } + public void testWrongArityNotEnough() { + IllegalArgumentException expected = expectScriptThrows(IllegalArgumentException.class, () -> { + exec("List l = new ArrayList(); l.add(2); l.add(1); l.sort(String::isEmpty);"); + }); + assertTrue(expected.getMessage().contains("Unknown reference")); + } + public void testWrongArityDef() { IllegalArgumentException expected = expectScriptThrows(IllegalArgumentException.class, () -> { exec("def y = Optional.empty(); return y.orElseGet(String::startsWith);"); }); assertTrue(expected.getMessage().contains("Unknown reference")); } + + public void testWrongArityNotEnoughDef() { + IllegalArgumentException expected = expectScriptThrows(IllegalArgumentException.class, () -> { + exec("def l = new ArrayList(); l.add(2); l.add(1); l.sort(String::isEmpty);"); + }); + assertTrue(expected.getMessage().contains("Unknown reference")); + } } diff --git a/modules/lang-painless/src/test/java/org/elasticsearch/painless/LambdaTests.java b/modules/lang-painless/src/test/java/org/elasticsearch/painless/LambdaTests.java index 7b2d5e6a935..dbca5243ec2 100644 --- a/modules/lang-painless/src/test/java/org/elasticsearch/painless/LambdaTests.java +++ b/modules/lang-painless/src/test/java/org/elasticsearch/painless/LambdaTests.java @@ -180,6 +180,22 @@ public class LambdaTests extends ScriptTestCase { assertTrue(expected.getMessage(), expected.getMessage().contains("Incorrect number of parameters")); } + public void testWrongArityNotEnough() { + IllegalArgumentException expected = expectScriptThrows(IllegalArgumentException.class, () -> { + exec("List l = new ArrayList(); l.add(1); l.add(1); " + + "return l.stream().mapToInt(() -> 5).sum();"); + }); + assertTrue(expected.getMessage().contains("Incorrect number of parameters")); + } + + public void testWrongArityNotEnoughDef() { + IllegalArgumentException expected = expectScriptThrows(IllegalArgumentException.class, () -> { + exec("def l = new ArrayList(); l.add(1); l.add(1); " + + "return l.stream().mapToInt(() -> 5).sum();"); + }); + assertTrue(expected.getMessage().contains("Incorrect number of parameters")); + } + public void testLambdaInFunction() { assertEquals(5, exec("def foo() { Optional.empty().orElseGet(() -> 5) } return foo();")); }