From e5d448449924133188a58de977505985cd17c078 Mon Sep 17 00:00:00 2001 From: Oszkar Semerath Date: Sat, 9 May 2020 20:18:12 +0200 Subject: case study fix --- .../inputs/familytree.ecore | 2 +- .../inputs/familytreeGen.vsconfig | 4 +- .../src/queries/familyTreeConstraints.vql | 44 ++++++++++++---------- 3 files changed, 28 insertions(+), 22 deletions(-) diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/inputs/familytree.ecore b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/inputs/familytree.ecore index f2e51f65..128e5c63 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/inputs/familytree.ecore +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/inputs/familytree.ecore @@ -7,7 +7,7 @@ - diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/inputs/familytreeGen.vsconfig b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/inputs/familytreeGen.vsconfig index 140523bf..bf0f9dbe 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/inputs/familytreeGen.vsconfig +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/inputs/familytreeGen.vsconfig @@ -6,8 +6,8 @@ generate { constraints = { package queries} solver = ViatraSolver scope = { - #node = 6, - #int = {1,2,3,4,5} + #node = 6..15, + #int = {} } config = { diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/src/queries/familyTreeConstraints.vql b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/src/queries/familyTreeConstraints.vql index e7b44f0b..fdbac640 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/src/queries/familyTreeConstraints.vql +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/src/queries/familyTreeConstraints.vql @@ -9,25 +9,31 @@ pattern memberIsItsOwnParent(m: Member) = { m == p; } -//@Constraint(message="twoMembersHaveNoParent", severity="error", key={m1, m2}) -//pattern twoMembersHaveNoParent(m1:Member, m2:Member) = { -// neg find memberHasParent(m1); -// neg find memberHasParent(m2); -// m1 != m2; -//} -// -//pattern memberHasParent(m: Member) = { -// Member.parents(m, _); -//} -// -//@Constraint(message="parentTooYoung", severity="error", key={m, p}) -//pattern parentTooYoung(m: Member, p: Member) = { -// FamilyTree.members(_, m); -// Member.parents(m, p); -// Member.age(m, mAge); -// Member.age(p, pAge); -// check (mAge <= (pAge + 12)); -//} +@Constraint(message="twoMembersHaveNoParent", severity="error", key={m1, m2}) +pattern twoMembersHaveNoParent(m1:Member, m2:Member) = { + neg find memberHasParent(m1); + neg find memberHasParent(m2); + m1 != m2; +} + +pattern memberHasParent(m: Member) = { + Member.parents(m, _); +} + +@Constraint(message="negativeAge", severity="error",key={m}) +pattern negativeAge(m: Member) { + Member.age(m,mage); + check(mage<0); +} + +@Constraint(message="parentTooYoung", severity="error", key={c, p}) +pattern parentTooYoung(c: Member, p: Member) = { + FamilyTree.members(_, c); + Member.parents(c, p); + Member.age(c, cAge); + Member.age(p, pAge); + check (pAge <= (cAge + 12)); +} -- cgit v1.2.3-54-g00ecf