aboutsummaryrefslogtreecommitdiffstats
path: root/config-model/src/test/java/com/yahoo/schema/derived/AttributeListTestCase.java
diff options
context:
space:
mode:
Diffstat (limited to 'config-model/src/test/java/com/yahoo/schema/derived/AttributeListTestCase.java')
-rw-r--r--config-model/src/test/java/com/yahoo/schema/derived/AttributeListTestCase.java35
1 files changed, 35 insertions, 0 deletions
diff --git a/config-model/src/test/java/com/yahoo/schema/derived/AttributeListTestCase.java b/config-model/src/test/java/com/yahoo/schema/derived/AttributeListTestCase.java
index 0cfb9474365..f21999df94c 100644
--- a/config-model/src/test/java/com/yahoo/schema/derived/AttributeListTestCase.java
+++ b/config-model/src/test/java/com/yahoo/schema/derived/AttributeListTestCase.java
@@ -14,6 +14,7 @@ import java.util.Iterator;
import static com.yahoo.config.model.test.TestUtil.joinLines;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertThrows;
/**
* Tests attribute deriving
@@ -126,4 +127,38 @@ public class AttributeListTestCase extends AbstractSchemaTestCase {
assertFalse(attributes.hasNext());
}
+ @Test
+ void bad_map_attribute() throws ParseException {
+ run_bad_struct_or_map_attribute("map<string,string>");
+ }
+
+ @Test
+ void bad_array_of_struct_attribute() throws ParseException {
+ run_bad_struct_or_map_attribute("array<s>");
+ }
+
+ private void run_bad_struct_or_map_attribute(String type) throws ParseException {
+ run_bad_struct_or_map_attribute(type, false, true);
+ run_bad_struct_or_map_attribute(type, true, false);
+ run_bad_struct_or_map_attribute(type, true, true);
+ }
+
+ private void run_bad_struct_or_map_attribute(String type, boolean fs, boolean ilscript) throws ParseException {
+ var exception = assertThrows(IllegalArgumentException.class, () -> ApplicationBuilder.createFromString(
+ joinLines("search test {",
+ " document test {",
+ " struct s {",
+ " field a type string { }",
+ " }",
+ " field metadata type " + type + " {",
+ " indexing: summary" + (ilscript ? "| attribute" : ""),
+ " " + (fs ? "attribute: fast-search" : ""),
+ " }",
+ " }",
+ "}")).getSchema());
+ assertEquals("For schema 'test': Field 'metadata' of type '" + type + "' cannot be an attribute." +
+ " Instead specify the struct fields to be searchable as attribute",
+ exception.getMessage());
+ }
+
}