diff options
author | Jon Bratseth <bratseth@gmail.com> | 2022-05-19 12:03:06 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@gmail.com> | 2022-05-19 12:03:06 +0200 |
commit | 5c24dc5c9642a8d9ed70aee4c950fd0678a1ebec (patch) | |
tree | bd9b74bf00c832456f0b83c1b2cd7010be387d68 /config-model/src/test/java/com/yahoo/schema/RankingExpressionValidationTestCase.java | |
parent | f17c4fe7de4c55f5c4ee61897eab8c2f588d8405 (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.java | 52 |
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(); + } + +} |