diff options
author | Tor Brede Vekterli <vekterli@yahooinc.com> | 2023-02-22 16:30:32 +0100 |
---|---|---|
committer | Tor Brede Vekterli <vekterli@yahooinc.com> | 2023-02-22 16:38:27 +0100 |
commit | 19da4dc4a9d36646d985a9a4dbd74910932a5099 (patch) | |
tree | fc5199531ffb5637cb06cc1db2bb964559a1afc2 /documentgen-test | |
parent | fc02e9f48338cb2d0288e8297381de319f71610e (diff) |
Emit type inheritance statements for concrete document types
This relates to issue #26126 where inheritance specified in the
schema was not propagated to the generated meta type, causing `is-a`
type checks to not give the expected results.
Diffstat (limited to 'documentgen-test')
-rw-r--r-- | documentgen-test/src/test/java/com/yahoo/vespa/config/DocumentGenPluginTest.java | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/documentgen-test/src/test/java/com/yahoo/vespa/config/DocumentGenPluginTest.java b/documentgen-test/src/test/java/com/yahoo/vespa/config/DocumentGenPluginTest.java index 680853ef687..bd2b057835c 100644 --- a/documentgen-test/src/test/java/com/yahoo/vespa/config/DocumentGenPluginTest.java +++ b/documentgen-test/src/test/java/com/yahoo/vespa/config/DocumentGenPluginTest.java @@ -47,8 +47,10 @@ import com.yahoo.vespa.documentgen.test.Book; import com.yahoo.vespa.documentgen.test.Book.Ss0; import com.yahoo.vespa.documentgen.test.Book.Ss1; import com.yahoo.vespa.documentgen.test.Common; +import com.yahoo.vespa.documentgen.test.Common2; import com.yahoo.vespa.documentgen.test.ConcreteDocumentFactory; import com.yahoo.vespa.documentgen.test.Music; +import com.yahoo.vespa.documentgen.test.Music2; import com.yahoo.vespa.documentgen.test.Music3; import com.yahoo.vespa.documentgen.test.Music4; import com.yahoo.vespa.documentgen.test.Parent; @@ -1024,5 +1026,36 @@ public class DocumentGenPluginTest { assertTrue(docType.hasImportedField("my_foo")); assertFalse(docType.hasImportedField("some_field_that_does_not_exist")); } + + @Test + public void subtypes_are_tagged_as_inheriting_supertypes() { + // music -> common + assertTrue(Music.type.isA("common")); + assertTrue(Music.type.inherits(Common.type)); + // ... but not common2 + assertFalse(Music.type.inherits(Common2.type)); + + // music3 -> (music2 -> common), common2 + assertTrue(Music3.type.isA("common")); + assertTrue(Music3.type.isA("common2")); + assertTrue(Music3.type.isA("music2")); + assertTrue(Music3.type.inherits(Common.type)); + assertTrue(Music3.type.inherits(Common2.type)); + assertTrue(Music3.type.inherits(Music2.type)); + // ... but not parent + assertFalse(Music3.type.isA("parent")); + assertFalse(Music3.type.inherits(Parent.type)); + + // music4 -> music3 -> (music2 -> common), common2 + assertTrue(Music4.type.inherits(Common.type)); + assertTrue(Music4.type.inherits(Common2.type)); + assertTrue(Music4.type.inherits(Music2.type)); + assertTrue(Music4.type.inherits(Music3.type)); + // ... but not music + assertFalse(Music4.type.inherits(Music.type)); + + // parent has no explicit inheritance + assertFalse(Parent.type.isA("common")); + } } |