aboutsummaryrefslogtreecommitdiffstats
path: root/language/src/test/java/org/eclipse/viatra/solver/language/tests/ProblemParsingTest.xtend
diff options
context:
space:
mode:
Diffstat (limited to 'language/src/test/java/org/eclipse/viatra/solver/language/tests/ProblemParsingTest.xtend')
-rw-r--r--language/src/test/java/org/eclipse/viatra/solver/language/tests/ProblemParsingTest.xtend46
1 files changed, 39 insertions, 7 deletions
diff --git a/language/src/test/java/org/eclipse/viatra/solver/language/tests/ProblemParsingTest.xtend b/language/src/test/java/org/eclipse/viatra/solver/language/tests/ProblemParsingTest.xtend
index 9b1bb698..7a6eec6a 100644
--- a/language/src/test/java/org/eclipse/viatra/solver/language/tests/ProblemParsingTest.xtend
+++ b/language/src/test/java/org/eclipse/viatra/solver/language/tests/ProblemParsingTest.xtend
@@ -8,23 +8,55 @@ import org.eclipse.viatra.solver.language.model.problem.Problem
8import org.eclipse.xtext.testing.InjectWith 8import org.eclipse.xtext.testing.InjectWith
9import org.eclipse.xtext.testing.extensions.InjectionExtension 9import org.eclipse.xtext.testing.extensions.InjectionExtension
10import org.eclipse.xtext.testing.util.ParseHelper 10import org.eclipse.xtext.testing.util.ParseHelper
11import org.junit.jupiter.api.Assertions
12import org.junit.jupiter.api.Test 11import org.junit.jupiter.api.Test
13import org.junit.jupiter.api.^extension.ExtendWith 12import org.junit.jupiter.api.^extension.ExtendWith
14 13
14import static org.hamcrest.MatcherAssert.assertThat
15import static org.hamcrest.Matchers.*
16
15@ExtendWith(InjectionExtension) 17@ExtendWith(InjectionExtension)
16@InjectWith(ProblemInjectorProvider) 18@InjectWith(ProblemInjectorProvider)
17class ProblemParsingTest { 19class ProblemParsingTest {
18 @Inject 20 @Inject
19 ParseHelper<Problem> parseHelper 21 ParseHelper<Problem> parseHelper
20 22
23 @Inject
24 extension ProblemTestUtil
25
21 @Test 26 @Test
22 def void loadModel() { 27 def void exampleTest() {
23 val result = parseHelper.parse(''' 28 val it = parseHelper.parse('''
24 Hello Xtext! 29 class Family {
30 contains Person[] members
31 }
32
33 class Person {
34 Person[0..*] children opposite parent
35 Person[0..1] parent opposite children
36 int age
37 TaxStatus taxStatus
38 }
39
40 enum TaxStatus {
41 child, student, adult, retired
42 }
43
44 % A child cannot have any dependents.
45 error invalidTaxStatus(Person p) :-
46 taxStatus(p, child), children(p, _q).
47
48 Family('family').
49 members('family', anne): true.
50 members('family', bob).
51 members('family', ciri).
52 children(anne, ciri).
53 ?children(bob, ciri).
54 taxStatus(anne, adult).
55 age(anne, 35).
56 bobAge: 27.
57 age(bob, bobAge).
58 !age(ciri, bobAge).
25 ''') 59 ''')
26 Assertions.assertNotNull(result) 60 assertThat(errors, empty)
27 val errors = result.eResource.errors
28 Assertions.assertTrue(errors.isEmpty, '''Unexpected errors: «errors.join(", ")»''')
29 } 61 }
30} 62}