diff options
Diffstat (limited to 'subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/metamodel/MetamodelBuilderTest.java')
-rw-r--r-- | subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/metamodel/MetamodelBuilderTest.java | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/metamodel/MetamodelBuilderTest.java b/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/metamodel/MetamodelBuilderTest.java new file mode 100644 index 00000000..0f1a1006 --- /dev/null +++ b/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/metamodel/MetamodelBuilderTest.java | |||
@@ -0,0 +1,58 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning.translator.metamodel; | ||
7 | |||
8 | import org.junit.jupiter.api.Test; | ||
9 | import tools.refinery.store.reasoning.representation.PartialRelation; | ||
10 | import tools.refinery.store.reasoning.translator.TranslationException; | ||
11 | import tools.refinery.store.reasoning.translator.multiplicity.ConstrainedMultiplicity; | ||
12 | import tools.refinery.store.representation.cardinality.CardinalityIntervals; | ||
13 | |||
14 | import static org.junit.jupiter.api.Assertions.assertThrows; | ||
15 | |||
16 | class MetamodelBuilderTest { | ||
17 | private final PartialRelation university = new PartialRelation("University", 1); | ||
18 | private final PartialRelation course = new PartialRelation("Course", 1); | ||
19 | private final PartialRelation courses = new PartialRelation("courses", 2); | ||
20 | private final PartialRelation location = new PartialRelation("location", 2); | ||
21 | |||
22 | @Test | ||
23 | void missingOppositeTest() { | ||
24 | var builder = Metamodel.builder() | ||
25 | .type(university) | ||
26 | .type(course) | ||
27 | .reference(courses, university, course, location) | ||
28 | .reference(location, course, university); | ||
29 | |||
30 | assertThrows(TranslationException.class, builder::build); | ||
31 | } | ||
32 | |||
33 | @Test | ||
34 | void invalidOppositeTypeTest() { | ||
35 | var builder = Metamodel.builder() | ||
36 | .type(university) | ||
37 | .type(course) | ||
38 | .reference(courses, university, course, location) | ||
39 | .reference(location, course, course, courses); | ||
40 | |||
41 | assertThrows(TranslationException.class, builder::build); | ||
42 | } | ||
43 | |||
44 | @Test | ||
45 | void invalidOppositeMultiplicityTest() { | ||
46 | var invalidMultiplicity = new PartialRelation("invalidMultiplicity", 1); | ||
47 | |||
48 | var builder = Metamodel.builder() | ||
49 | .type(university) | ||
50 | .type(course) | ||
51 | .reference(courses, university, true, course, location) | ||
52 | .reference(location, course, | ||
53 | ConstrainedMultiplicity.of(CardinalityIntervals.atLeast(2), invalidMultiplicity), | ||
54 | university, courses); | ||
55 | |||
56 | assertThrows(TranslationException.class, builder::build); | ||
57 | } | ||
58 | } | ||