|
36 | 36 |
|
37 | 37 | import java.io.File; |
38 | 38 | import java.io.IOException; |
| 39 | +import java.util.HashMap; |
39 | 40 |
|
40 | 41 | import org.incenp.linkml.schema.model.ClassDefinition; |
41 | 42 | import org.incenp.linkml.schema.model.Prefix; |
@@ -221,4 +222,38 @@ void testFailOnInvalidReferences() { |
221 | 222 | e.getCause().getMessage()); |
222 | 223 | } |
223 | 224 | } |
| 225 | + |
| 226 | + @Test |
| 227 | + void testReadLinkMLMetaSchema() { |
| 228 | + SchemaDocument doc = null; |
| 229 | + try { |
| 230 | + doc = new SchemaDocument(new File("src/main/resources/schemas/linkml/meta.yaml")); |
| 231 | + } catch ( IOException e ) { |
| 232 | + Assertions.fail("Unexpected exception", e); |
| 233 | + } catch ( InvalidSchemaException e ) { |
| 234 | + Assertions.fail("Cannot read LinkML meta-schema", e); |
| 235 | + } |
| 236 | + |
| 237 | + Assertions.assertEquals(5, doc.getImports().size()); |
| 238 | + |
| 239 | + HashMap<String, SlotDefinition> slots = new HashMap<>(); |
| 240 | + for ( SlotDefinition sd : doc.getAllSlots() ) { |
| 241 | + slots.put(sd.getName(), sd); |
| 242 | + } |
| 243 | + HashMap<String, ClassDefinition> classes = new HashMap<>(); |
| 244 | + for ( ClassDefinition cd : doc.getAllClasses() ) { |
| 245 | + classes.put(cd.getName(), cd); |
| 246 | + } |
| 247 | + |
| 248 | + SlotDefinition annotationSlot = slots.get("annotations"); |
| 249 | + Assertions.assertNotNull(annotationSlot); |
| 250 | + Assertions.assertEquals("extensions", annotationSlot.getIsA().getName()); |
| 251 | + Assertions.assertEquals("annotatable", annotationSlot.getDomain().getName()); |
| 252 | + Assertions.assertTrue(annotationSlot.getMultivalued()); |
| 253 | + |
| 254 | + ClassDefinition annotatableClass = classes.get("annotatable"); |
| 255 | + Assertions.assertNotNull(annotatableClass); |
| 256 | + Assertions.assertTrue(annotatableClass.getMixin()); |
| 257 | + Assertions.assertTrue(annotationSlot.getDomain() == annotatableClass); |
| 258 | + } |
224 | 259 | } |
0 commit comments