Skip to content

Commit c1a6db0

Browse files
committed
Add resolver argument count edge case tests
Test too-many (5) and zero arguments paths in VectorSearchTableFunctionResolver to complement existing too-few (2) test. Signed-off-by: Eric Wei <mengwei.eric@gmail.com>
1 parent 5dd108f commit c1a6db0

1 file changed

Lines changed: 44 additions & 0 deletions

File tree

opensearch/src/test/java/org/opensearch/sql/opensearch/storage/VectorSearchTableFunctionResolverTest.java

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,4 +83,48 @@ void testWrongArgumentCount() {
8383
IllegalArgumentException.class, () -> builder.apply(functionProperties, expressions));
8484
assertTrue(ex.getMessage().contains("requires 4 arguments"));
8585
}
86+
87+
@Test
88+
void testTooManyArguments() {
89+
VectorSearchTableFunctionResolver resolver =
90+
new VectorSearchTableFunctionResolver(client, settings);
91+
FunctionName functionName = FunctionName.of("vectorsearch");
92+
List<Expression> expressions =
93+
List.of(
94+
DSL.namedArgument("table", DSL.literal("my-index")),
95+
DSL.namedArgument("field", DSL.literal("embedding")),
96+
DSL.namedArgument("vector", DSL.literal("[1.0]")),
97+
DSL.namedArgument("option", DSL.literal("k=5")),
98+
DSL.namedArgument("extra", DSL.literal("unexpected")));
99+
FunctionSignature functionSignature =
100+
new FunctionSignature(
101+
functionName, expressions.stream().map(Expression::type).collect(Collectors.toList()));
102+
103+
Pair<FunctionSignature, FunctionBuilder> resolution = resolver.resolve(functionSignature);
104+
FunctionBuilder builder = resolution.getValue();
105+
106+
IllegalArgumentException ex =
107+
assertThrows(
108+
IllegalArgumentException.class, () -> builder.apply(functionProperties, expressions));
109+
assertTrue(ex.getMessage().contains("requires 4 arguments"));
110+
}
111+
112+
@Test
113+
void testZeroArguments() {
114+
VectorSearchTableFunctionResolver resolver =
115+
new VectorSearchTableFunctionResolver(client, settings);
116+
FunctionName functionName = FunctionName.of("vectorsearch");
117+
List<Expression> expressions = List.of();
118+
FunctionSignature functionSignature =
119+
new FunctionSignature(
120+
functionName, expressions.stream().map(Expression::type).collect(Collectors.toList()));
121+
122+
Pair<FunctionSignature, FunctionBuilder> resolution = resolver.resolve(functionSignature);
123+
FunctionBuilder builder = resolution.getValue();
124+
125+
IllegalArgumentException ex =
126+
assertThrows(
127+
IllegalArgumentException.class, () -> builder.apply(functionProperties, expressions));
128+
assertTrue(ex.getMessage().contains("requires 4 arguments"));
129+
}
86130
}

0 commit comments

Comments
 (0)