aboutsummaryrefslogtreecommitdiffstats
path: root/config-model/src/test/java/com
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-04-12 09:25:41 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2021-04-12 09:25:46 +0200
commit787fa05cebd66820136372164b7e1b2805f9f061 (patch)
tree264c403f21b98bc5d4d1d65f0b49f378b4184b3b /config-model/src/test/java/com
parent015ade7cd232f217dd964da037ab202731b37cef (diff)
Control cased/uncased in dictionary setting
Diffstat (limited to 'config-model/src/test/java/com')
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/DictionaryTestCase.java167
1 files changed, 134 insertions, 33 deletions
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/DictionaryTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/DictionaryTestCase.java
index ba51caca0f7..7bda2665272 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/DictionaryTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/DictionaryTestCase.java
@@ -12,6 +12,7 @@ import com.yahoo.vespa.config.search.AttributesConfig;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
import static org.junit.Assert.fail;
/**
@@ -44,14 +45,22 @@ public class DictionaryTestCase {
" }",
"}");
Search search = createSearch(def);
- assertEquals(Dictionary.Type.BTREE, search.getAttribute("s1").getDictionary().getType());
- assertEquals(Dictionary.Type.BTREE, search.getAttribute("n1").getDictionary().getType());
+ assertNull(search.getAttribute("s1").getDictionary());
+ assertNull(search.getAttribute("n1").getDictionary());
+ assertEquals(AttributesConfig.Attribute.Dictionary.Type.BTREE,
+ getConfig(search).attribute().get(0).dictionary().type());
+ assertEquals(AttributesConfig.Attribute.Dictionary.Type.BTREE,
+ getConfig(search).attribute().get(1).dictionary().type());
+ assertEquals(AttributesConfig.Attribute.Dictionary.Match.CASE_INSENSITIVE,
+ getConfig(search).attribute().get(0).dictionary().match());
+ assertEquals(AttributesConfig.Attribute.Dictionary.Match.CASE_INSENSITIVE,
+ getConfig(search).attribute().get(1).dictionary().match());
}
- void verifyNumericDictionaryControl(Dictionary.Type expected,
- AttributesConfig.Attribute.Dictionary.Type.Enum expectedConfig,
- String type,
- String ... cfg) throws ParseException
+ Search verifyDictionaryControl(Dictionary.Type expected,
+ AttributesConfig.Attribute.Dictionary.Type.Enum expectedConfig,
+ String type,
+ String ... cfg) throws ParseException
{
String def = TestUtil.joinLines(
"search test {",
@@ -65,74 +74,166 @@ public class DictionaryTestCase {
"}");
Search search = createSearch(def);
assertEquals(expected, search.getAttribute("n1").getDictionary().getType());
- assertEquals(expectedConfig,
- getConfig(search).attribute().get(0).dictionary().type());
+ assertEquals(expectedConfig, getConfig(search).attribute().get(0).dictionary().type());
+ return search;
+ }
+
+ void verifyStringDictionaryControl(Dictionary.Type expectedType,Dictionary.Match expectedCase,
+ AttributesConfig.Attribute.Dictionary.Type.Enum expectedTypeCfg,
+ AttributesConfig.Attribute.Dictionary.Match.Enum expectedCaseCfg,
+ String type,
+ String ... cfg) throws ParseException
+ {
+
+ Search search = verifyDictionaryControl(expectedType, expectedTypeCfg, type, cfg);
+ assertEquals(expectedCase, search.getAttribute("n1").getDictionary().getMatch());
+ assertEquals(expectedCaseCfg, getConfig(search).attribute().get(0).dictionary().match());
+ }
+
+ @Test
+ public void testCasedBtreeSettings() throws ParseException {
+ verifyDictionaryControl(Dictionary.Type.BTREE,
+ AttributesConfig.Attribute.Dictionary.Type.BTREE,
+ "int",
+ "dictionary:cased");
}
@Test
public void testNumericBtreeSettings() throws ParseException {
- verifyNumericDictionaryControl(Dictionary.Type.BTREE,
+ verifyDictionaryControl(Dictionary.Type.BTREE,
AttributesConfig.Attribute.Dictionary.Type.BTREE,
"int",
"dictionary:btree");
}
@Test
public void testNumericHashSettings() throws ParseException {
- verifyNumericDictionaryControl(Dictionary.Type.HASH,
+ verifyDictionaryControl(Dictionary.Type.HASH,
AttributesConfig.Attribute.Dictionary.Type.HASH,
"int",
"dictionary:hash");
}
@Test
public void testNumericBtreeAndHashSettings() throws ParseException {
- verifyNumericDictionaryControl(Dictionary.Type.BTREE_AND_HASH,
+ verifyDictionaryControl(Dictionary.Type.BTREE_AND_HASH,
AttributesConfig.Attribute.Dictionary.Type.BTREE_AND_HASH,
"int",
"dictionary:btree", "dictionary:hash");
}
@Test
public void testNumericArrayBtreeAndHashSettings() throws ParseException {
- verifyNumericDictionaryControl(Dictionary.Type.BTREE_AND_HASH,
+ verifyDictionaryControl(Dictionary.Type.BTREE_AND_HASH,
AttributesConfig.Attribute.Dictionary.Type.BTREE_AND_HASH,
"array<int>",
"dictionary:btree", "dictionary:hash");
}
@Test
public void testNumericWSetBtreeAndHashSettings() throws ParseException {
- verifyNumericDictionaryControl(Dictionary.Type.BTREE_AND_HASH,
+ verifyDictionaryControl(Dictionary.Type.BTREE_AND_HASH,
AttributesConfig.Attribute.Dictionary.Type.BTREE_AND_HASH,
"weightedset<int>",
"dictionary:btree", "dictionary:hash");
}
@Test
+ public void testStringBtreeSettings() throws ParseException {
+ verifyStringDictionaryControl(Dictionary.Type.BTREE, Dictionary.Match.UNCASED,
+ AttributesConfig.Attribute.Dictionary.Type.BTREE,
+ AttributesConfig.Attribute.Dictionary.Match.UNCASED,
+ "string",
+ "dictionary:btree");
+ }
+ @Test
+ public void testStringBtreeUnCasedSettings() throws ParseException {
+ verifyStringDictionaryControl(Dictionary.Type.BTREE, Dictionary.Match.UNCASED,
+ AttributesConfig.Attribute.Dictionary.Type.BTREE,
+ AttributesConfig.Attribute.Dictionary.Match.UNCASED,
+ "string",
+ "dictionary { btree\nuncased\n}");
+ }
+ @Test
+ public void testStringBtreeCasedSettings() throws ParseException {
+ verifyStringDictionaryControl(Dictionary.Type.BTREE, Dictionary.Match.CASED,
+ AttributesConfig.Attribute.Dictionary.Type.BTREE,
+ AttributesConfig.Attribute.Dictionary.Match.CASED,
+ "string",
+ "dictionary { btree\ncased\n}");
+ }
+ @Test
+ public void testStringHashSettings() throws ParseException {
+ verifyStringDictionaryControl(Dictionary.Type.HASH, Dictionary.Match.UNCASED,
+ AttributesConfig.Attribute.Dictionary.Type.HASH,
+ AttributesConfig.Attribute.Dictionary.Match.UNCASED,
+ "string",
+ "dictionary:hash");
+ }
+ @Test
+ public void testStringHashUnCasedSettings() throws ParseException {
+ verifyStringDictionaryControl(Dictionary.Type.HASH, Dictionary.Match.UNCASED,
+ AttributesConfig.Attribute.Dictionary.Type.HASH,
+ AttributesConfig.Attribute.Dictionary.Match.UNCASED,
+ "string",
+ "dictionary { hash\nuncased\n}");
+ }
+ @Test
+ public void testStringHashCasedSettings() throws ParseException {
+ verifyStringDictionaryControl(Dictionary.Type.HASH, Dictionary.Match.CASED,
+ AttributesConfig.Attribute.Dictionary.Type.HASH,
+ AttributesConfig.Attribute.Dictionary.Match.CASED,
+ "string",
+ "dictionary { hash\ncased\n}");
+ }
+ @Test
+ public void testStringBtreeHashSettings() throws ParseException {
+ verifyStringDictionaryControl(Dictionary.Type.BTREE_AND_HASH, Dictionary.Match.UNCASED,
+ AttributesConfig.Attribute.Dictionary.Type.BTREE_AND_HASH,
+ AttributesConfig.Attribute.Dictionary.Match.UNCASED,
+ "string",
+ "dictionary{hash\nbtree\n}");
+ }
+ @Test
+ public void testStringBtreeHashUnCasedSettings() throws ParseException {
+ verifyStringDictionaryControl(Dictionary.Type.BTREE_AND_HASH, Dictionary.Match.UNCASED,
+ AttributesConfig.Attribute.Dictionary.Type.BTREE_AND_HASH,
+ AttributesConfig.Attribute.Dictionary.Match.UNCASED,
+ "string",
+ "dictionary { hash\nbtree\nuncased\n}");
+ }
+ @Test
+ public void testStringBtreeHashCasedSettings() throws ParseException {
+ verifyStringDictionaryControl(Dictionary.Type.BTREE_AND_HASH, Dictionary.Match.CASED,
+ AttributesConfig.Attribute.Dictionary.Type.BTREE_AND_HASH,
+ AttributesConfig.Attribute.Dictionary.Match.CASED,
+ "string",
+ "dictionary { btree\nhash\ncased\n}");
+ }
+ @Test
public void testNonNumericFieldsFailsDictionaryControl() throws ParseException {
- String def =
- "search test {\n" +
- " document test {\n" +
- " field n1 type string {\n" +
- " indexing: summary | attribute\n" +
- " dictionary:btree\n" +
- " }\n" +
- " }\n" +
- "}\n";
+ String def = TestUtil.joinLines(
+ "search test {",
+ " document test {",
+ " field n1 type bool {",
+ " indexing: summary | attribute",
+ " dictionary:btree",
+ " }",
+ " }",
+ "}");
try {
SearchBuilder sb = SearchBuilder.createFromString(def);
fail("Controlling dictionary for non-numeric fields are not yet supported.");
} catch (IllegalArgumentException e) {
- assertEquals("For search 'test', field 'n1': You can only specify 'dictionary:' for numeric fields", e.getMessage());
+ assertEquals("For search 'test', field 'n1': You can only specify 'dictionary:' for numeric or string fields", e.getMessage());
}
}
@Test
- public void testNonFastSearchFieldsFailsDictionaryControl() throws ParseException {
- String def =
- "search test {\n" +
- " document test {\n" +
- " field n1 type int {\n" +
- " indexing: summary | attribute\n" +
- " dictionary:btree\n" +
- " }\n" +
- " }\n" +
- "}\n";
+ public void testNonFastSearchNumericFieldsFailsDictionaryControl() throws ParseException {
+ String def = TestUtil.joinLines(
+ "search test {",
+ " document test {",
+ " field n1 type int {",
+ " indexing: summary | attribute",
+ " dictionary:btree",
+ " }",
+ " }",
+ "}");
try {
SearchBuilder sb = SearchBuilder.createFromString(def);
fail("Controlling dictionary for non-fast-search fields are not allowed.");