summaryrefslogtreecommitdiffstats
path: root/config-model/src/test/java/com/yahoo/schema/RankingExpressionValidationTestCase.java
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2022-05-19 12:03:06 +0200
committerJon Bratseth <bratseth@gmail.com>2022-05-19 12:03:06 +0200
commit5c24dc5c9642a8d9ed70aee4c950fd0678a1ebec (patch)
treebd9b74bf00c832456f0b83c1b2cd7010be387d68 /config-model/src/test/java/com/yahoo/schema/RankingExpressionValidationTestCase.java
parentf17c4fe7de4c55f5c4ee61897eab8c2f588d8405 (diff)
Rename the 'searchdefinition' package to 'schema'
Diffstat (limited to 'config-model/src/test/java/com/yahoo/schema/RankingExpressionValidationTestCase.java')
-rw-r--r--config-model/src/test/java/com/yahoo/schema/RankingExpressionValidationTestCase.java52
1 files changed, 52 insertions, 0 deletions
diff --git a/config-model/src/test/java/com/yahoo/schema/RankingExpressionValidationTestCase.java b/config-model/src/test/java/com/yahoo/schema/RankingExpressionValidationTestCase.java
new file mode 100644
index 00000000000..e42acee9bed
--- /dev/null
+++ b/config-model/src/test/java/com/yahoo/schema/RankingExpressionValidationTestCase.java
@@ -0,0 +1,52 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.schema;
+
+import com.yahoo.schema.derived.DerivedConfiguration;
+import com.yahoo.schema.parser.ParseException;
+import com.yahoo.yolean.Exceptions;
+import org.junit.Test;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+/**
+ * @author bratseth
+ */
+public class RankingExpressionValidationTestCase extends AbstractSchemaTestCase {
+
+ @Test
+ public void testInvalidExpressionProducesException() throws ParseException {
+ assertFailsExpression("&/%(/%&");
+ assertFailsExpression("if(a==b,b)");
+ }
+
+ private void assertFailsExpression(String expression) throws ParseException {
+ try {
+ RankProfileRegistry registry = new RankProfileRegistry();
+ Schema schema = importWithExpression(expression, registry);
+ new DerivedConfiguration(schema, registry); // cause rank profile parsing
+ fail("No exception on incorrect ranking expression " + expression);
+ } catch (IllegalArgumentException e) {
+ // Success
+ assertTrue(Exceptions.toMessageString(e).startsWith("Illegal first phase ranking function: Could not parse ranking expression '" + expression + "' in default, firstphase.:"));
+ }
+ }
+
+ private Schema importWithExpression(String expression, RankProfileRegistry registry) throws ParseException {
+ ApplicationBuilder builder = new ApplicationBuilder(registry);
+ builder.addSchema("search test {" +
+ " document test { " +
+ " field a type string { " +
+ " indexing: index " +
+ " }" +
+ " }" +
+ " rank-profile default {" +
+ " first-phase {" +
+ " expression: " + expression +
+ " }" +
+ " }" +
+ "}");
+ builder.build(true);
+ return builder.getSchema();
+ }
+
+}