aboutsummaryrefslogtreecommitdiffstats
path: root/config-model/src/test/java
diff options
context:
space:
mode:
Diffstat (limited to 'config-model/src/test/java')
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/AttributeListTestCase.java23
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/AttributesTestCase.java5
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/document/ComplexAttributeFieldUtilsTestCase.java45
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitSummariesTestCase.java8
4 files changed, 73 insertions, 8 deletions
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/AttributeListTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/AttributeListTestCase.java
index c3cfcae66e6..bd762c64c00 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/AttributeListTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/AttributeListTestCase.java
@@ -70,7 +70,7 @@ public class AttributeListTestCase extends SearchDefinitionTestCase {
}
@Test
- public void array_of_struct_field_is_derived_into_array_attributes() throws IOException, ParseException {
+ public void fields_in_array_of_struct_are_derived_into_array_attributes() throws IOException, ParseException {
Search search = SearchBuilder.buildFromFile("src/test/derived/array_of_struct_attribute/test.sd");
Iterator<Attribute> attributes = new AttributeFields(search).attributeIterator();
@@ -80,13 +80,15 @@ public class AttributeListTestCase extends SearchDefinitionTestCase {
}
@Test
- public void map_of_struct_field_is_derived_into_array_attributes() throws IOException, ParseException {
+ public void fields_in_map_of_struct_are_derived_into_array_attributes() throws IOException, ParseException {
Search search = SearchBuilder.buildFromFile("src/test/derived/map_of_struct_attribute/test.sd");
Iterator<Attribute> attributes = new AttributeFields(search).attributeIterator();
- assertAttribute("elem_map.key", Attribute.Type.STRING, Attribute.CollectionType.ARRAY, attributes.next());
- assertAttribute("elem_map.value.name", Attribute.Type.STRING, Attribute.CollectionType.ARRAY, attributes.next());
- assertAttribute("elem_map.value.weight", Attribute.Type.INTEGER, Attribute.CollectionType.ARRAY, attributes.next());
+ assertAttribute("str_elem_map.key", Attribute.Type.STRING, Attribute.CollectionType.ARRAY, attributes.next());
+ assertAttribute("str_elem_map.value.name", Attribute.Type.STRING, Attribute.CollectionType.ARRAY, attributes.next());
+ assertAttribute("str_elem_map.value.weight", Attribute.Type.INTEGER, Attribute.CollectionType.ARRAY, attributes.next());
+ assertAttribute("int_elem_map.key", Attribute.Type.INTEGER, Attribute.CollectionType.ARRAY, attributes.next());
+ assertAttribute("int_elem_map.value.name", Attribute.Type.STRING, Attribute.CollectionType.ARRAY, attributes.next());
assertTrue(!attributes.hasNext());
}
@@ -112,4 +114,15 @@ public class AttributeListTestCase extends SearchDefinitionTestCase {
assertTrue(!attributes.hasNext());
}
+ @Test
+ public void fields_in_map_of_primitive_are_derived_into_array_attributes() throws IOException, ParseException {
+ Search search = SearchBuilder.buildFromFile("src/test/derived/map_attribute/test.sd");
+ Iterator<Attribute> attributes = new AttributeFields(search).attributeIterator();
+
+ assertAttribute("str_map.key", Attribute.Type.STRING, Attribute.CollectionType.ARRAY, attributes.next());
+ assertAttribute("str_map.value", Attribute.Type.STRING, Attribute.CollectionType.ARRAY, attributes.next());
+ assertAttribute("int_map.key", Attribute.Type.INTEGER, Attribute.CollectionType.ARRAY, attributes.next());
+ assertTrue(!attributes.hasNext());
+ }
+
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/AttributesTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/AttributesTestCase.java
index 72c7aab4a39..2483d249125 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/AttributesTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/AttributesTestCase.java
@@ -28,4 +28,9 @@ public class AttributesTestCase extends AbstractExportingTestCase {
assertCorrectDeriving("map_of_struct_attribute");
}
+ @Test
+ public void testMapOfPrimitiveAttribute() throws IOException, ParseException {
+ assertCorrectDeriving("map_attribute");
+ }
+
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/document/ComplexAttributeFieldUtilsTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/document/ComplexAttributeFieldUtilsTestCase.java
index 047ba73e784..4cdc48b330e 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/document/ComplexAttributeFieldUtilsTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/document/ComplexAttributeFieldUtilsTestCase.java
@@ -8,6 +8,7 @@ import org.junit.Test;
import static com.yahoo.config.model.test.TestUtil.joinLines;
import static com.yahoo.searchdefinition.document.ComplexAttributeFieldUtils.isArrayOfSimpleStruct;
import static com.yahoo.searchdefinition.document.ComplexAttributeFieldUtils.isComplexFieldWithOnlyStructFieldAttributes;
+import static com.yahoo.searchdefinition.document.ComplexAttributeFieldUtils.isMapOfPrimitiveType;
import static com.yahoo.searchdefinition.document.ComplexAttributeFieldUtils.isMapOfSimpleStruct;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -61,6 +62,7 @@ public class ComplexAttributeFieldUtilsTestCase {
" struct-field value.weight { indexing: attribute }",
"}"));
assertTrue(isMapOfSimpleStruct(field));
+ assertFalse(isMapOfPrimitiveType(field));
assertTrue(isComplexFieldWithOnlyStructFieldAttributes(field));
}
@@ -68,22 +70,61 @@ public class ComplexAttributeFieldUtilsTestCase {
public void map_of_struct_with_some_struct_field_attributes_is_tagged_as_such() throws ParseException {
{
ImmutableSDField field = createField("elem_map",
- joinLines("field elem_map type map<string, elem> {",
+ joinLines("field elem_map type map<int, elem> {",
" indexing: summary",
" struct-field value.name { indexing: attribute }",
" struct-field value.weight { indexing: attribute }",
"}"));
assertTrue(isMapOfSimpleStruct(field));
+ assertFalse(isMapOfPrimitiveType(field));
assertFalse(isComplexFieldWithOnlyStructFieldAttributes(field));
}
{
ImmutableSDField field = createField("elem_map",
- joinLines("field elem_map type map<string, elem> {",
+ joinLines("field elem_map type map<int, elem> {",
" indexing: summary",
" struct-field key { indexing: attribute }",
" struct-field value.weight { indexing: attribute }",
"}"));
assertTrue(isMapOfSimpleStruct(field));
+ assertFalse(isMapOfPrimitiveType(field));
+ assertFalse(isComplexFieldWithOnlyStructFieldAttributes(field));
+ }
+ }
+
+ @Test
+ public void map_of_primitive_type_with_only_struct_field_attributes_is_tagged_as_such() throws ParseException {
+ ImmutableSDField field = createField("str_map",
+ joinLines("field str_map type map<string, string> {",
+ " indexing: summary",
+ " struct-field key { indexing: attribute }",
+ " struct-field value { indexing: attribute }",
+ "}"));
+ assertTrue(isMapOfPrimitiveType(field));
+ assertFalse(isMapOfSimpleStruct(field));
+ assertTrue(isComplexFieldWithOnlyStructFieldAttributes(field));
+ }
+
+ @Test
+ public void map_of_primitive_type_with_some_struct_field_attributes_is_tagged_as_such() throws ParseException {
+ {
+ ImmutableSDField field = createField("int_map",
+ joinLines("field int_map type map<int, int> {",
+ " indexing: summary",
+ " struct-field key { indexing: attribute }",
+ "}"));
+ assertTrue(isMapOfPrimitiveType(field));
+ assertFalse(isMapOfSimpleStruct(field));
+ assertFalse(isComplexFieldWithOnlyStructFieldAttributes(field));
+ }
+ {
+ ImmutableSDField field = createField("int_map",
+ joinLines("field int_map type map<int, int> {",
+ " indexing: summary",
+ " struct-field value { indexing: attribute }",
+ "}"));
+ assertTrue(isMapOfPrimitiveType(field));
+ assertFalse(isMapOfSimpleStruct(field));
assertFalse(isComplexFieldWithOnlyStructFieldAttributes(field));
}
}
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitSummariesTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitSummariesTestCase.java
index 9212617a870..da0732dfbaa 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitSummariesTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/ImplicitSummariesTestCase.java
@@ -67,6 +67,12 @@ public class ImplicitSummariesTestCase {
@Test
public void attribute_combiner_transform_is_set_on_map_of_struct_with_only_struct_field_attributes() throws IOException, ParseException {
Search search = SearchBuilder.buildFromFile("src/test/derived/map_of_struct_attribute/test.sd");
- assertEquals(SummaryTransform.ATTRIBUTECOMBINER, search.getSummaryField("elem_map").getTransform());
+ assertEquals(SummaryTransform.ATTRIBUTECOMBINER, search.getSummaryField("str_elem_map").getTransform());
+ }
+
+ @Test
+ public void attribute_combiner_transform_is_not_set_when_map_of_struct_has_some_struct_field_attributes() throws IOException, ParseException {
+ Search search = SearchBuilder.buildFromFile("src/test/derived/map_of_struct_attribute/test.sd");
+ assertEquals(SummaryTransform.NONE, search.getSummaryField("int_elem_map").getTransform());
}
}