Skip to content

Commit 88f9bbd

Browse files
committed
Add testSenaryFunctionNoOptionalArguments to EsqlFunctionRegistryTests
1 parent bb845d6 commit 88f9bbd

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/EsqlFunctionRegistryTests.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,33 @@ public void testBinaryFunction() {
7171
assertThat(e.getMessage(), containsString("expects exactly two arguments"));
7272
}
7373

74+
public void testSenaryFunctionNoOptionalArguments(){
75+
UnresolvedFunction unresolvedFunction = uf(DEFAULT, mock(Expression.class), mock(Expression.class), mock(Expression.class), mock(Expression.class), mock(Expression.class), mock(Expression.class));
76+
EsqlFunctionRegistry registry = new EsqlFunctionRegistry(def(DummyFunction.class, (Source source, Expression exp1, Expression exp2, Expression exp3, Expression exp4, Expression exp5, Expression exp6) -> {
77+
assertSame(exp1, unresolvedFunction.children().get(0));
78+
assertSame(exp2, unresolvedFunction.children().get(1));
79+
assertSame(exp3, unresolvedFunction.children().get(2));
80+
assertSame(exp4, unresolvedFunction.children().get(3));
81+
assertSame(exp5, unresolvedFunction.children().get(4));
82+
assertSame(exp6, unresolvedFunction.children().get(5));
83+
84+
return new DummyFunction(source);
85+
}, 0, "dummyFunction"));
86+
87+
FunctionDefinition def = registry.resolveFunction(unresolvedFunction.name());
88+
assertEquals(unresolvedFunction.source(), unresolvedFunction.buildResolved(randomConfiguration(), def).source());
89+
90+
// No children aren't supported
91+
ParsingException e = expectThrows(ParsingException.class, () -> uf(DEFAULT).buildResolved(randomConfiguration(), def));
92+
assertThat(e.getMessage(), containsString("expects exactly six arguments"));
93+
94+
// One child isn't supported
95+
e = expectThrows(ParsingException.class, () -> uf(DEFAULT, mock(Expression.class)).buildResolved(randomConfiguration(), def));
96+
assertThat(e.getMessage(), containsString("expects exactly six arguments"));
97+
}
98+
99+
// TODO: senary with optional
100+
74101
public void testAliasNameIsTheSameAsAFunctionName() {
75102
EsqlFunctionRegistry r = new EsqlFunctionRegistry(def(DummyFunction.class, DummyFunction::new, "DUMMY_FUNCTION", "ALIAS"));
76103
QlIllegalArgumentException iae = expectThrows(

0 commit comments

Comments
 (0)