From 0d2a93c1774804d6ba1817f0900f1b6c623f8ea9 Mon Sep 17 00:00:00 2001 From: Kevin Kassin <kevinkassin@gmx.de> Date: Wed, 20 Sep 2017 00:57:31 +0200 Subject: [PATCH] Commit 20.9 1:00 migrated all non generated transformation testcases --- .../relationshipExclusion_test_1.xmi | 100 +++++ .../relationshipImplication_test_1.xmi | 100 +++++ .../RelationshipConstraintTestGenerator.py | 315 ++++++++++++++ .../relationshipConstraint_test_1.xmi | 233 ++++++++++ .../relationshipConstraint_test_2.xmi | 127 ++++++ .../Relationship/relationship_test_10.xmi | 108 +++++ .../Relationship/relationship_test_11.xmi | 121 ++++++ .../Relationship/relationship_test_9.xmi | 123 ++++++ .../relationshipcardinality_test_1.xmi | 94 ++++ .../relationshipcardinality_test_2.xmi | 94 ++++ .../relationshipcardinality_test_3.xmi | 94 ++++ .../roleEquivalence_test_1.xmi | 94 ++++ .../roleImplication_test_1.xmi | 94 ++++ .../roleProhibition_test_1.xmi | 94 ++++ .../integration/bank_example_test.xmi | 407 ++++++++++++++++++ .../relationshipImplication_test_1.xmi | 132 +++--- .../integration/bank_example_test.xmi | 64 +-- 17 files changed, 2285 insertions(+), 109 deletions(-) create mode 100644 org.framed.orm.transformation.test/testcases/InterRelationshipExclusion/relationshipExclusion_test_1.xmi create mode 100644 org.framed.orm.transformation.test/testcases/InterRelationshipExclusion/relationshipImplication_test_1.xmi create mode 100644 org.framed.orm.transformation.test/testcases/IntraRelationshipConstraint/RelationshipConstraintTestGenerator.py create mode 100644 org.framed.orm.transformation.test/testcases/IntraRelationshipConstraint/relationshipConstraint_test_1.xmi create mode 100644 org.framed.orm.transformation.test/testcases/IntraRelationshipConstraint/relationshipConstraint_test_2.xmi create mode 100644 org.framed.orm.transformation.test/testcases/Relationship/relationship_test_10.xmi create mode 100644 org.framed.orm.transformation.test/testcases/Relationship/relationship_test_11.xmi create mode 100644 org.framed.orm.transformation.test/testcases/Relationship/relationship_test_9.xmi create mode 100644 org.framed.orm.transformation.test/testcases/RelationshipCardinality/relationshipcardinality_test_1.xmi create mode 100644 org.framed.orm.transformation.test/testcases/RelationshipCardinality/relationshipcardinality_test_2.xmi create mode 100644 org.framed.orm.transformation.test/testcases/RelationshipCardinality/relationshipcardinality_test_3.xmi create mode 100644 org.framed.orm.transformation.test/testcases/RoleConstraints/roleEquivalence_test_1.xmi create mode 100644 org.framed.orm.transformation.test/testcases/RoleConstraints/roleImplication_test_1.xmi create mode 100644 org.framed.orm.transformation.test/testcases/RoleConstraints/roleProhibition_test_1.xmi create mode 100644 org.framed.orm.transformation.test/testcases/integration/bank_example_test.xmi diff --git a/org.framed.orm.transformation.test/testcases/InterRelationshipExclusion/relationshipExclusion_test_1.xmi b/org.framed.orm.transformation.test/testcases/InterRelationshipExclusion/relationshipExclusion_test_1.xmi new file mode 100644 index 00000000..c780a166 --- /dev/null +++ b/org.framed.orm.transformation.test/testcases/InterRelationshipExclusion/relationshipExclusion_test_1.xmi @@ -0,0 +1,100 @@ +<?xml version="1.0" encoding="ASCII"?> +<ts:TestCase xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:crom_l1_composed="platform:/resource/org.rosi.crom.metamodel/" + xmlns:org.framed.iorm.model="http://iorm/1.0" xmlns:ts="http://org.framed/testmodel" + title="Simple TestCase for RelationshipImplications" description="Simple TestCase for RelationshipImplications"> + <framedModel> + <elements xsi:type="org.framed.iorm.model:Shape" name="NT" outgoingRelations="//@framedModel/@elements.2" type="NaturalType"> + <firstSegment/> + <secondSegment/> + </elements> + <elements xsi:type="org.framed.iorm.model:Shape" name="CT" incomingRelations="//@framedModel/@elements.2"> + <firstSegment/> + <secondSegment/> + <model> + <elements xsi:type="org.framed.iorm.model:Shape" name="roleType" incomingRelations="//@framedModel/@elements.1/@model/@elements.3" outgoingRelations="//@framedModel/@elements.1/@model/@elements.2" type="RoleType"> + <firstSegment/> + <secondSegment/> + <description name="*"/> + </elements> + <elements xsi:type="org.framed.iorm.model:Shape" name="roleType1" incomingRelations="//@framedModel/@elements.1/@model/@elements.2" outgoingRelations="//@framedModel/@elements.1/@model/@elements.3" type="RoleType"> + <firstSegment/> + <secondSegment/> + <description name="*"/> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="rst" incomingRelations="//@framedModel/@elements.1/@model/@elements.4" type="Relationship" target="//@framedModel/@elements.1/@model/@elements.1" source="//@framedModel/@elements.1/@model/@elements.0"> + <sourceLabel name="1"/> + <targetLabel name="1..*"/> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="subrst" outgoingRelations="//@framedModel/@elements.1/@model/@elements.4" type="Relationship" target="//@framedModel/@elements.1/@model/@elements.0" source="//@framedModel/@elements.1/@model/@elements.1"> + <sourceLabel name="*"/> + <targetLabel name="0..1"/> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" type="RelationshipExclusion" target="//@framedModel/@elements.1/@model/@elements.2" source="//@framedModel/@elements.1/@model/@elements.3"/> + </model> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" type="Fulfillment" target="//@framedModel/@elements.1" source="//@framedModel/@elements.0" referencedRoles="//@framedModel/@elements.1/@model/@elements.0 //@framedModel/@elements.1/@model/@elements.1"/> + <framedConfiguration> + <features/> + <features name="Role_Types"/> + <features name="Role_Structure"/> + <features name="Role_Properties" manuallySelected="true"/> + <features name="Role_Behavior"/> + <features name="Role_Inheritance" manuallySelected="true"/> + <features name="Playable"/> + <features name="Players"/> + <features name="Naturals"/> + <features name="Roles"/> + <features name="Compartments" manuallySelected="true"/> + <features name="Dates" manuallySelected="true"/> + <features name="Dependent"/> + <features name="On_Compartments"/> + <features name="On_Relationships"/> + <features name="Role_Constraints"/> + <features name="Role_Implication" manuallySelected="true"/> + <features name="Role_Prohibition" manuallySelected="true"/> + <features name="Role_Equivalence"/> + <features name="Group_Constraints" manuallySelected="true"/> + <features name="Occurrence_Constraints" manuallySelected="true"/> + <features name="Relationships"/> + <features name="Relationship_Constraints"/> + <features name="Relationship_Cardinality" manuallySelected="true"/> + <features name="Intra_Relationship_Constraints"/> + <features name="Parthood_Constraints" manuallySelected="true"/> + <features name="Inter_Relationship_Constraints" manuallySelected="true"/> + <features name="Compartment_Types"/> + <features name="Compartment_Structure"/> + <features name="Compartment_Properties" manuallySelected="true"/> + <features name="Compartment_Behavior"/> + <features name="Compartment_Inheritance" manuallySelected="true"/> + <features name="Participants"/> + <features name="Contains_Compartments" manuallySelected="true"/> + <features name="Playable_by_Defining_Compartment" manuallySelected="true"/> + <features name="Data_Types"/> + <features name="Data_Type_Inheritance" manuallySelected="true"/> + </framedConfiguration> + </framedModel> + <cromModel> + <elements xsi:type="crom_l1_composed:NaturalType" name="NT"/> + <elements xsi:type="crom_l1_composed:CompartmentType" name="CT"> + <parts> + <role xsi:type="crom_l1_composed:RoleType" name="roleType" incoming="//@cromModel/@elements.1/@relationships.1" outgoing="//@cromModel/@elements.1/@relationships.0"/> + </parts> + <parts> + <role xsi:type="crom_l1_composed:RoleType" name="roleType1" incoming="//@cromModel/@elements.1/@relationships.0" outgoing="//@cromModel/@elements.1/@relationships.1"/> + </parts> + <relationships name="rst"> + <first lower="1" upper="1" holder="//@cromModel/@elements.1/@parts.0/@role"/> + <second lower="1" holder="//@cromModel/@elements.1/@parts.1/@role"/> + </relationships> + <relationships name="subrst"> + <first holder="//@cromModel/@elements.1/@parts.1/@role"/> + <second upper="1" holder="//@cromModel/@elements.1/@parts.0/@role"/> + </relationships> + <constraints xsi:type="crom_l1_composed:RelationshipExclusion" first="//@cromModel/@elements.1/@relationships.1" second="//@cromModel/@elements.1/@relationships.0"/> + </elements> + <relations xsi:type="crom_l1_composed:Fulfillment" filled="//@cromModel/@elements.1/@parts.0/@role" filler="//@cromModel/@elements.0"/> + <relations xsi:type="crom_l1_composed:Fulfillment" filled="//@cromModel/@elements.1/@parts.1/@role" filler="//@cromModel/@elements.0"/> + </cromModel> +</ts:TestCase> diff --git a/org.framed.orm.transformation.test/testcases/InterRelationshipExclusion/relationshipImplication_test_1.xmi b/org.framed.orm.transformation.test/testcases/InterRelationshipExclusion/relationshipImplication_test_1.xmi new file mode 100644 index 00000000..6a44f04c --- /dev/null +++ b/org.framed.orm.transformation.test/testcases/InterRelationshipExclusion/relationshipImplication_test_1.xmi @@ -0,0 +1,100 @@ +<?xml version="1.0" encoding="ASCII"?> +<ts:TestCase xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:crom_l1_composed="platform:/resource/org.rosi.crom.metamodel/" + xmlns:org.framed.iorm.model="http://iorm/1.0" xmlns:ts="http://org.framed/testmodel" + title="Simple TestCase for RelationshipImplications" description="Simple TestCase for RelationshipImplications"> + <framedModel> + <elements xsi:type="org.framed.iorm.model:Shape" name="NT" outgoingRelations="//@framedModel/@elements.2" type="NaturalType"> + <firstSegment/> + <secondSegment/> + </elements> + <elements xsi:type="org.framed.iorm.model:Shape" name="CT" incomingRelations="//@framedModel/@elements.2"> + <firstSegment/> + <secondSegment/> + <model> + <elements xsi:type="org.framed.iorm.model:Shape" name="roleType" incomingRelations="//@framedModel/@elements.1/@model/@elements.3" outgoingRelations="//@framedModel/@elements.1/@model/@elements.2" type="RoleType"> + <firstSegment/> + <secondSegment/> + <description name="*"/> + </elements> + <elements xsi:type="org.framed.iorm.model:Shape" name="roleType1" incomingRelations="//@framedModel/@elements.1/@model/@elements.2" outgoingRelations="//@framedModel/@elements.1/@model/@elements.3" type="RoleType"> + <firstSegment/> + <secondSegment/> + <description name="*"/> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="rst" incomingRelations="//@framedModel/@elements.1/@model/@elements.4" type="Relationship" target="//@framedModel/@elements.1/@model/@elements.1" source="//@framedModel/@elements.1/@model/@elements.0"> + <sourceLabel name="1"/> + <targetLabel name="1..*"/> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="subrst" outgoingRelations="//@framedModel/@elements.1/@model/@elements.4" type="Relationship" target="//@framedModel/@elements.1/@model/@elements.0" source="//@framedModel/@elements.1/@model/@elements.1"> + <sourceLabel name="*"/> + <targetLabel name="0..1"/> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" type="RelationshipImplication" target="//@framedModel/@elements.1/@model/@elements.2" source="//@framedModel/@elements.1/@model/@elements.3"/> + </model> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" type="Fulfillment" target="//@framedModel/@elements.1" source="//@framedModel/@elements.0" referencedRoles="//@framedModel/@elements.1/@model/@elements.0 //@framedModel/@elements.1/@model/@elements.1"/> + <framedConfiguration> + <features/> + <features name="Role_Types"/> + <features name="Role_Structure"/> + <features name="Role_Properties" manuallySelected="true"/> + <features name="Role_Behavior"/> + <features name="Role_Inheritance" manuallySelected="true"/> + <features name="Playable"/> + <features name="Players"/> + <features name="Naturals"/> + <features name="Roles"/> + <features name="Compartments" manuallySelected="true"/> + <features name="Dates" manuallySelected="true"/> + <features name="Dependent"/> + <features name="On_Compartments"/> + <features name="On_Relationships"/> + <features name="Role_Constraints"/> + <features name="Role_Implication" manuallySelected="true"/> + <features name="Role_Prohibition" manuallySelected="true"/> + <features name="Role_Equivalence"/> + <features name="Group_Constraints" manuallySelected="true"/> + <features name="Occurrence_Constraints" manuallySelected="true"/> + <features name="Relationships"/> + <features name="Relationship_Constraints"/> + <features name="Relationship_Cardinality" manuallySelected="true"/> + <features name="Intra_Relationship_Constraints"/> + <features name="Parthood_Constraints" manuallySelected="true"/> + <features name="Inter_Relationship_Constraints" manuallySelected="true"/> + <features name="Compartment_Types"/> + <features name="Compartment_Structure"/> + <features name="Compartment_Properties" manuallySelected="true"/> + <features name="Compartment_Behavior"/> + <features name="Compartment_Inheritance" manuallySelected="true"/> + <features name="Participants"/> + <features name="Contains_Compartments" manuallySelected="true"/> + <features name="Playable_by_Defining_Compartment" manuallySelected="true"/> + <features name="Data_Types"/> + <features name="Data_Type_Inheritance" manuallySelected="true"/> + </framedConfiguration> + </framedModel> + <cromModel> + <elements xsi:type="crom_l1_composed:NaturalType" name="NT"/> + <elements xsi:type="crom_l1_composed:CompartmentType" name="CT"> + <parts> + <role xsi:type="crom_l1_composed:RoleType" name="roleType" incoming="//@cromModel/@elements.1/@relationships.1" outgoing="//@cromModel/@elements.1/@relationships.0"/> + </parts> + <parts> + <role xsi:type="crom_l1_composed:RoleType" name="roleType1" incoming="//@cromModel/@elements.1/@relationships.0" outgoing="//@cromModel/@elements.1/@relationships.1"/> + </parts> + <relationships name="rst"> + <first lower="1" upper="1" holder="//@cromModel/@elements.1/@parts.0/@role"/> + <second lower="1" holder="//@cromModel/@elements.1/@parts.1/@role"/> + </relationships> + <relationships name="subrst"> + <first holder="//@cromModel/@elements.1/@parts.1/@role"/> + <second upper="1" holder="//@cromModel/@elements.1/@parts.0/@role"/> + </relationships> + <constraints xsi:type="crom_l1_composed:RelationshipImplication" first="//@cromModel/@elements.1/@relationships.1" second="//@cromModel/@elements.1/@relationships.0"/> + </elements> + <relations xsi:type="crom_l1_composed:Fulfillment" filled="//@cromModel/@elements.1/@parts.0/@role" filler="//@cromModel/@elements.0"/> + <relations xsi:type="crom_l1_composed:Fulfillment" filled="//@cromModel/@elements.1/@parts.1/@role" filler="//@cromModel/@elements.0"/> + </cromModel> +</ts:TestCase> diff --git a/org.framed.orm.transformation.test/testcases/IntraRelationshipConstraint/RelationshipConstraintTestGenerator.py b/org.framed.orm.transformation.test/testcases/IntraRelationshipConstraint/RelationshipConstraintTestGenerator.py new file mode 100644 index 00000000..8bc1c778 --- /dev/null +++ b/org.framed.orm.transformation.test/testcases/IntraRelationshipConstraint/RelationshipConstraintTestGenerator.py @@ -0,0 +1,315 @@ +#!/usr/bin/env python + +#FRaMED testcase generator for (n)-relationships and relationship constraints. +# +#This generator creates testcases for (n)-relationships or testcases for (n)-relationships with all possible combinations of constraints (unregarded impossible constraint combination, e.g. cyclic - acyclic). The generator will create a new folder (Relationship or RelationshipConstraint) in which all testcases (relationship_test_n/relationshipconstraint_test_n) are created. It is called by cmd/terminal with: +# "python TestGenerator.py n" (Create testcases for n-relationships) +# "python TestGenerator.py n true" (Create testcases for n-relationships with all possible constraint combinations) + +import sys, os, itertools + +__author__ = "Duc Dung Dam" +__date__ = "24/04/16" +__version__ = "1.0" +__maintainer__ = "Duc Dung Dam" +__email__ = "dung.dam_duc@tu-dresden.de" +__status__ = "Prototype" + + +types = ['RoleType'] +constraints = ['Irreflexive', 'Reflexive', 'Cyclic', 'Acyclic', 'Total'] + +def write(filename, content, mode): + #0 = create relationship tests + #1 = create relationshipconstraint tests + if mode == 0: + path = os.path.dirname(os.path.realpath(__file__))+"/Relationship"; + if not os.path.exists(path): + os.mkdir(path) + dirPath = "Relationship/" + if mode == 1: + path = os.path.dirname(os.path.realpath(__file__))+"/RelationshipConstraint"; + if not os.path.exists(path): + os.mkdir(path) + dirPath = "RelationshipConstraint/" + filename += '.xmi' + try: + file = open(dirPath+filename, "w") + file.write(content) + file.close() + except: + sys.exit(0) + +def createRelationshipTestcases(n): + print "createRelationshipTestcases" + + for x in types: + for y in range(1, n+1): + content = framedModel = cromModel = '' + + #Header + filename = 'relationship_test_'+str(y) + description = "TestCase for "+ str(y) +" relationship(s) between two " + x + "(s)" + title = "TestCase for "+ str(y) +" relationship(s)" + header = ('<?xml version="1.0" encoding="ASCII"?>\n' + '<ts:TestCase\n' + '\txmi:version=\"2.0"\n' + '\txmlns:xmi="http://www.omg.org/XMI"\n' + '\txmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n' + '\txmlns:crom_l1_composed="platform:/resource/org.rosi.crom.metamodel/"\n' + '\txmlns:org.framed.orm.model="http://orm/1.0"\n' + '\txmlns:ts="http://org.framed/testmodel"\n' + '\ttitle="'+title+'"\n' + '\tdescription="'+description+'">\n') + content += header + print filename + + #FramedModel + framedModel += ('\t<framedModel>\n' + '\t\t<elements\n' + '\t\t\txsi:type="org.framed.orm.model:Shape"\n' + '\t\t\tname="Test">\n' + '\t\t\t<model>\n') + + #FramedModel - Elements + #FramedModel - Elements - Loop for outgoingRelations/incomingRelations + framedRelations = '' + for z in range (0, y): + framedRelations += '//@framedModel/@elements.0/@model/@elements.'+str(z+2)+' ' + framedRelations = framedRelations[:-1] + framedModel += ('\t\t\t\t<elements\n' + '\t\t\t\t\txsi:type="org.framed.orm.model:Shape"\n' + '\t\t\t\t\tname="RoleType1"\n' + '\t\t\t\t\toutgoingRelations="') + framedModel += framedRelations + framedModel += '"\n\t\t\t\t\ttype="'+ x +'"/>\n' + framedModel += ('\t\t\t\t<elements\n' + '\t\t\t\t\txsi:type="org.framed.orm.model:Shape"\n' + '\t\t\t\t\tname="RoleType2"\n' + '\t\t\t\t\tincomingRelations="') + framedModel += framedRelations + framedModel += '\"\n\t\t\t\t\ttype=\"'+ x +'\"/>\n' + + #FramedModel - Relations + for z in range (0, y): + framedModel += ('\t\t\t\t<elements\n' + '\t\t\t\t\txsi:type="org.framed.orm.model:Relation"\n' + '\t\t\t\t\tname="testRelation_'+str(z)+'"\n' + '\t\t\t\t\ttype="Relationship"\n' + '\t\t\t\t\ttarget="//@framedModel/@elements.0/@model/@elements.1"\n' + '\t\t\t\t\tsource="//@framedModel/@elements.0/@model/@elements.0"/>\n') + + framedModel += ('\t\t\t</model>\n' + '\t\t</elements>\n' + '\t</framedModel>\n') + content += framedModel + + #CromModel + cromModel += ('\t<cromModel>\n' + '\t\t<elements\n' + '\t\t\txsi:type="crom_l1_composed:CompartmentType"\n' + '\t\t\tname="Test">\n') + + #CromModel - Elements + #CromModel - Elements - Loop for outgoingRelations/incomingRelations + cromRelations = '' + for z in range (0, y): + cromRelations += '//@cromModel/@elements.0/@relationships.'+str(z)+' ' + cromRelations = cromRelations[:-1] + cromModel += ('\t\t\t<parts>\n' + '\t\t\t\t<role\n' + '\t\t\t\txsi:type="crom_l1_composed:'+ x +'"\n' + '\t\t\t\tname="RoleType1"\n' + '\t\t\t\toutgoing=\"') + cromModel += cromRelations + cromModel += ('"/>\n' + '\t\t\t</parts>\n') + + cromModel += ('\t\t\t<parts>\n' + '\t\t\t\t<role\n' + '\t\t\t\t\txsi:type="crom_l1_composed:'+ x +'"\n' + '\t\t\t\t\tname="RoleType2"\n' + '\t\t\t\t\tincoming="') + cromModel += cromRelations + cromModel += ('"/>\n' + '\t\t\t</parts>\n') + + #CromModel - Relations + for z in xrange(0, y): + cromModel += '\t\t\t<relationships name=\"testRelation_'+ str(z) +'\"/>\n' + + cromModel += ('\t\t</elements>\n' + '\t</cromModel>\n') + content += cromModel + + #Footer + footer = "</ts:TestCase>" + content += footer + + write(filename, content, 0) + +def createRelationshipConstraintsTestcases(n): + print "createRelationshipConstraintsTestcases" + + #Generate all possible combinations of constraints for n relationships + cons = [] + for y in range(1,len(constraints)+1): + cons.extend(itertools.combinations(constraints, y)) + cons_combinations = [] + for n_relationship in range(1, n+1): + cons_combinations.extend(itertools.product(cons, repeat = n_relationship)) + + #Start generate testcase + counter = 1 + for tupel_constraint in cons_combinations: + #print "testcase with " + str(len(tupel_constraint)) + " relationship(s) and " + str(tupel_constraint) + " constraint(s)" + + #Init + content = framedModel = cromModel = '' + + #Create all elements for FramedModel and CromModel + + framedRelations = framedRelationships = framedConstraints = '' + cromRelations = cromRelationships = cromConstraints = '' + + + framedElementsCounter = 2 #2 because elements.0 and elements.1 are Roletypes + relationshipCounter = 0 + framedElementsConstraintCounter = framedElementsCounter+len(tupel_constraint) + + for constraint in tupel_constraint: + #outgoing/incoming relations + #framedModel + framedRelations += '//@framedModel/@elements.0/@model/@elements.'+str(framedElementsCounter)+" " + #cromModel + cromRelations += '//@cromModel/@elements.0/@relationships.'+str(relationshipCounter)+" " + #constraint elements + referencedRelation = 'referencedRelation="' + for element_constraint in constraint: + #framedModel + framedConstraints += ('\t\t\t\t<elements\n' + '\t\t\t\t\txsi:type="org.framed.orm.model:Relation"\n' + '\t\t\t\t\tname="'+element_constraint+'" type="'+element_constraint+'"\n' + '\t\t\t\t\ttarget="//@framedModel/@elements.0/@model/@elements.1"\n' + '\t\t\t\t\tsource="//@framedModel/@elements.0/@model/@elements.0"\n' + '\t\t\t\t\treferencedRelation="//@framedModel/@elements.0/@model/@elements.'+str(framedElementsCounter)+'"/>\n') + referencedRelation += '//@framedModel/@elements.0/@model/@elements.'+str(framedElementsConstraintCounter)+' ' + framedElementsConstraintCounter += 1 + #cromModel + cromConstraints += ('\t\t\t\t<constraints\n' + '\t\t\t\t\txsi:type="crom_l1_composed:'+element_constraint+'"\n' + '\t\t\t\t\trelation="//@cromModel/@elements.0/@relationships.'+str(relationshipCounter)+'"/>\n') + referencedRelation = referencedRelation[:-1]+'"' + + #relationship elements + #framedModel + framedRelationships += ('\t\t\t\t<elements\n' + '\t\t\t\t\txsi:type="org.framed.orm.model:Relation"\n' + '\t\t\t\t\tname="testRelation_' +str(relationshipCounter)+ '"\n' + '\t\t\t\t\ttype="Relationship"\n' + '\t\t\t\t\ttarget="//@framedModel/@elements.0/@model/@elements.1"\n' + '\t\t\t\t\tsource="//@framedModel/@elements.0/@model/@elements.0"\n' + '\t\t\t\t\t'+referencedRelation+'/>\n') + + #cromModel + cromRelationships += ('\t\t\t\t<relationships name="testRelation_'+str(relationshipCounter)+'"/>\n') + + framedElementsCounter += 1 + relationshipCounter += 1 + + #Header + filename = 'relationshipconstraint_test_'+str(counter) + description = "TestCase for "+ str(len(tupel_constraint)) +" relationship(s) with constraints "+ str(tupel_constraint) +" between two " + types[0] + title = "TestCase for "+ str(len(tupel_constraint)) +" relationship(s) with constraints "+ str(tupel_constraint) + header = ("<?xml version=\"1.0\" encoding=\"ASCII\"?>\n" + "<ts:TestCase\n" + "\txmi:version=\"2.0\"\n" + "\txmlns:xmi=\"http://www.omg.org/XMI\"\n" + "\txmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" + "\txmlns:crom_l1_composed=\"platform:/resource/org.rosi.crom.metamodel/\"\n" + "\txmlns:org.framed.orm.model=\"http://orm/1.0\"\n" + "\txmlns:ts=\"http://org.framed/testmodel\"\n" + "\ttitle=\""+title+"\"\n" + "\tdescription=\""+description+"\">\n") + content += header + #FramedModel + #Header + framedModel += '\t<framedModel>\n' + #Content + framedModel += ('\t\t<elements\n' + '\t\t\txsi:type="org.framed.orm.model:Shape"\n' + '\t\t\tname="Test">\n' + '\t\t\t<model>\n' + #Roletype1 + '\t\t\t\t<elements\n' + '\t\t\t\t\t\txsi:type="org.framed.orm.model:Shape"\n' + '\t\t\t\t\t\tname="'+types[0]+'1"\n' + '\t\t\t\t\t\toutgoingRelations="'+framedRelations+'"\n' + '\t\t\t\t\t\ttype="RoleType"/>\n' + #Roletype2 + '\t\t\t\t<elements\n' + '\t\t\t\t\t\txsi:type="org.framed.orm.model:Shape"\n' + '\t\t\t\t\t\tname="'+types[0]+'2"\n' + '\t\t\t\t\t\tincomingRelations="'+framedRelations+'"\n' + '\t\t\t\t\t\ttype="RoleType"/>\n') + #Relationships + framedModel += framedRelationships + #Constraints + framedModel += framedConstraints + #Footer + framedModel += ('\t\t\t</model>\n' + '\t\t</elements>\n' + '\t</framedModel>\n') + content += framedModel + + #CromModel + #Header + cromModel += '\t<cromModel>\n' + #Content + cromModel += ('\t\t<elements\n' + '\t\t\txsi:type="crom_l1_composed:CompartmentType"\n' + '\t\t\tname="Test">\n' + #Roletype1 + '\t\t\t<parts>\n' + '\t\t\t\t<role\n' + '\t\t\t\t\txsi:type="crom_l1_composed:RoleType"\n' + '\t\t\t\t\tname="RoleType1"\n' + '\t\t\t\t\toutgoing="'+cromRelations+'"/>\n' + '\t\t\t</parts>\n' + #Roletype2 + '\t\t\t<parts>\n' + '\t\t\t\t<role\n' + '\t\t\t\t\txsi:type="crom_l1_composed:RoleType"\n' + '\t\t\t\t\tname="RoleType2"\n' + '\t\t\t\t\tincoming="'+cromRelations+'"/>\n' + '\t\t\t</parts>\n') + #Relationships + cromModel += cromRelationships + #Constraints + cromModel += cromConstraints + #Footer + cromModel += ('\t\t</elements>\n' + '\t</cromModel>\n') + content += cromModel + + #Footer + footer = "</ts:TestCase>" + content += footer + + write(filename, content, 1) + counter += 1 + +def init(): + print "Generating Testcases:" + if sys.argv is not None: + #python TestGenerator (int)n (creates testcases from 1 to n relationships) + if len(sys.argv) == 2: + createRelationshipTestcases(int(sys.argv[1])) + + #python TestGenerator (int)n (bool)true (creates testcases from 1 to n relationships with all possible constraint combinations) + if len(sys.argv) == 3 and bool(sys.argv[2]) is True: + createRelationshipConstraintsTestcases(int(sys.argv[1])) + else: + createRelationshipTestcases(1) + +init() diff --git a/org.framed.orm.transformation.test/testcases/IntraRelationshipConstraint/relationshipConstraint_test_1.xmi b/org.framed.orm.transformation.test/testcases/IntraRelationshipConstraint/relationshipConstraint_test_1.xmi new file mode 100644 index 00000000..a13b04be --- /dev/null +++ b/org.framed.orm.transformation.test/testcases/IntraRelationshipConstraint/relationshipConstraint_test_1.xmi @@ -0,0 +1,233 @@ +<?xml version="1.0" encoding="ASCII"?> +<ts:TestCase xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:crom_l1_composed="platform:/resource/org.rosi.crom.metamodel/" + xmlns:org.framed.iorm.model="http://iorm/1.0" xmlns:ts="http://org.framed/testmodel" + title="TestCase for 3 relationship(s) with constraints (('Irreflexive', 'Reflexive', 'Cyclic', 'Acyclic', 'Total'), ('Irreflexive', 'Reflexive', 'Cyclic', 'Acyclic', 'Total'), ('Irreflexive', 'Reflexive', 'Cyclic', 'Acyclic', 'Total'))" + description="TestCase for 3 relationship(s) with constraints (('Irreflexive', 'Reflexive', 'Cyclic', 'Acyclic', 'Total'), ('Irreflexive', 'Reflexive', 'Cyclic', 'Acyclic', 'Total'), ('Irreflexive', 'Reflexive', 'Cyclic', 'Acyclic', 'Total')) between two RoleType"> + <framedModel> + <elements xsi:type="org.framed.iorm.model:Shape" name="NT" + outgoingRelations="//@framedModel/@elements.2" type="NaturalType"> + <firstSegment /> + <secondSegment /> + </elements> + <elements xsi:type="org.framed.iorm.model:Shape" name="CT" + incomingRelations="//@framedModel/@elements.2"> + <firstSegment /> + <secondSegment /> + <model> + <elements xsi:type="org.framed.iorm.model:Shape" name="RT1" + incomingRelations="//@framedModel/@elements.1/@model/@elements.2 //@framedModel/@elements.1/@model/@elements.3 //@framedModel/@elements.1/@model/@elements.4 //@framedModel/@elements.1/@model/@elements.5 //@framedModel/@elements.1/@model/@elements.6 //@framedModel/@elements.1/@model/@elements.7 //@framedModel/@elements.1/@model/@elements.8 //@framedModel/@elements.1/@model/@elements.9 //@framedModel/@elements.1/@model/@elements.10 //@framedModel/@elements.1/@model/@elements.11 //@framedModel/@elements.1/@model/@elements.12 //@framedModel/@elements.1/@model/@elements.13 //@framedModel/@elements.1/@model/@elements.14 //@framedModel/@elements.1/@model/@elements.15 //@framedModel/@elements.1/@model/@elements.16 //@framedModel/@elements.1/@model/@elements.17 //@framedModel/@elements.1/@model/@elements.18 //@framedModel/@elements.1/@model/@elements.19" + type="RoleType"> + <firstSegment /> + <secondSegment /> + <description name="*" /> + </elements> + <elements xsi:type="org.framed.iorm.model:Shape" name="RT2" + outgoingRelations="//@framedModel/@elements.1/@model/@elements.2 //@framedModel/@elements.1/@model/@elements.3 //@framedModel/@elements.1/@model/@elements.4 //@framedModel/@elements.1/@model/@elements.5 //@framedModel/@elements.1/@model/@elements.6 //@framedModel/@elements.1/@model/@elements.7 //@framedModel/@elements.1/@model/@elements.8 //@framedModel/@elements.1/@model/@elements.9 //@framedModel/@elements.1/@model/@elements.10 //@framedModel/@elements.1/@model/@elements.11 //@framedModel/@elements.1/@model/@elements.12 //@framedModel/@elements.1/@model/@elements.13 //@framedModel/@elements.1/@model/@elements.14 //@framedModel/@elements.1/@model/@elements.15 //@framedModel/@elements.1/@model/@elements.16 //@framedModel/@elements.1/@model/@elements.17 //@framedModel/@elements.1/@model/@elements.18 //@framedModel/@elements.1/@model/@elements.19" + type="RoleType"> + <firstSegment /> + <secondSegment /> + <description name="*" /> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="rst" + type="Relationship" target="//@framedModel/@elements.1/@model/@elements.0" + source="//@framedModel/@elements.1/@model/@elements.1" + referencedRelation="//@framedModel/@elements.1/@model/@elements.3 //@framedModel/@elements.1/@model/@elements.4 //@framedModel/@elements.1/@model/@elements.8 //@framedModel/@elements.1/@model/@elements.9 //@framedModel/@elements.1/@model/@elements.10"> + <sourceLabel name="*" /> + <targetLabel name="*" /> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="Irreflexive" + type="Irreflexive" target="//@framedModel/@elements.1/@model/@elements.0" + source="//@framedModel/@elements.1/@model/@elements.1" + referencedRelation="//@framedModel/@elements.1/@model/@elements.2"> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="Acyclic" + type="Acyclic" target="//@framedModel/@elements.1/@model/@elements.0" + source="//@framedModel/@elements.1/@model/@elements.1" + referencedRelation="//@framedModel/@elements.1/@model/@elements.2"> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="rst2" + type="Relationship" target="//@framedModel/@elements.1/@model/@elements.0" + source="//@framedModel/@elements.1/@model/@elements.1" + referencedRelation="//@framedModel/@elements.1/@model/@elements.7 //@framedModel/@elements.1/@model/@elements.11 //@framedModel/@elements.1/@model/@elements.12 //@framedModel/@elements.1/@model/@elements.13 //@framedModel/@elements.1/@model/@elements.14"> + <sourceLabel name="*" /> + <targetLabel name="*" /> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="rst3" + type="Relationship" target="//@framedModel/@elements.1/@model/@elements.0" + source="//@framedModel/@elements.1/@model/@elements.1" + referencedRelation="//@framedModel/@elements.1/@model/@elements.15 //@framedModel/@elements.1/@model/@elements.16 //@framedModel/@elements.1/@model/@elements.17 //@framedModel/@elements.1/@model/@elements.18 //@framedModel/@elements.1/@model/@elements.19"> + <sourceLabel name="*" /> + <targetLabel name="*" /> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="Irreflexive" + type="Irreflexive" target="//@framedModel/@elements.1/@model/@elements.0" + source="//@framedModel/@elements.1/@model/@elements.1" + referencedRelation="//@framedModel/@elements.1/@model/@elements.5"> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="Reflexive" + type="Reflexive" target="//@framedModel/@elements.1/@model/@elements.0" + source="//@framedModel/@elements.1/@model/@elements.1" + referencedRelation="//@framedModel/@elements.1/@model/@elements.2"> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="Total" + type="Total" target="//@framedModel/@elements.1/@model/@elements.0" + source="//@framedModel/@elements.1/@model/@elements.1" + referencedRelation="//@framedModel/@elements.1/@model/@elements.2"> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="Cyclic" + type="Cyclic" target="//@framedModel/@elements.1/@model/@elements.0" + source="//@framedModel/@elements.1/@model/@elements.1" + referencedRelation="//@framedModel/@elements.1/@model/@elements.2"> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="Reflexive" + type="Reflexive" target="//@framedModel/@elements.1/@model/@elements.0" + source="//@framedModel/@elements.1/@model/@elements.1" + referencedRelation="//@framedModel/@elements.1/@model/@elements.5"> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="Total" + type="Total" target="//@framedModel/@elements.1/@model/@elements.0" + source="//@framedModel/@elements.1/@model/@elements.1" + referencedRelation="//@framedModel/@elements.1/@model/@elements.5"> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="Cyclic" + type="Cyclic" target="//@framedModel/@elements.1/@model/@elements.0" + source="//@framedModel/@elements.1/@model/@elements.1" + referencedRelation="//@framedModel/@elements.1/@model/@elements.5"> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="Acyclic" + type="Acyclic" target="//@framedModel/@elements.1/@model/@elements.0" + source="//@framedModel/@elements.1/@model/@elements.1" + referencedRelation="//@framedModel/@elements.1/@model/@elements.5"> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="Reflexive" + type="Reflexive" target="//@framedModel/@elements.1/@model/@elements.0" + source="//@framedModel/@elements.1/@model/@elements.1" + referencedRelation="//@framedModel/@elements.1/@model/@elements.6"> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="Irreflexive" + type="Irreflexive" target="//@framedModel/@elements.1/@model/@elements.0" + source="//@framedModel/@elements.1/@model/@elements.1" + referencedRelation="//@framedModel/@elements.1/@model/@elements.6"> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="Total" + type="Total" target="//@framedModel/@elements.1/@model/@elements.0" + source="//@framedModel/@elements.1/@model/@elements.1" + referencedRelation="//@framedModel/@elements.1/@model/@elements.6"> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="Cyclic" + type="Cyclic" target="//@framedModel/@elements.1/@model/@elements.0" + source="//@framedModel/@elements.1/@model/@elements.1" + referencedRelation="//@framedModel/@elements.1/@model/@elements.6"> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="Acyclic" + type="Acyclic" target="//@framedModel/@elements.1/@model/@elements.0" + source="//@framedModel/@elements.1/@model/@elements.1" + referencedRelation="//@framedModel/@elements.1/@model/@elements.6"> + </elements> + </model> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" type="Fulfillment" + target="//@framedModel/@elements.1" source="//@framedModel/@elements.0" + referencedRoles="//@framedModel/@elements.1/@model/@elements.0 //@framedModel/@elements.1/@model/@elements.1" /> + <framedConfiguration> + <features/> + <features name="Role_Types"/> + <features name="Role_Structure"/> + <features name="Role_Properties" manuallySelected="true"/> + <features name="Role_Behavior"/> + <features name="Role_Inheritance" manuallySelected="true"/> + <features name="Playable"/> + <features name="Players"/> + <features name="Naturals"/> + <features name="Roles"/> + <features name="Compartments" manuallySelected="true"/> + <features name="Dates" manuallySelected="true"/> + <features name="Dependent"/> + <features name="On_Compartments"/> + <features name="On_Relationships"/> + <features name="Role_Constraints"/> + <features name="Role_Implication" manuallySelected="true"/> + <features name="Role_Prohibition" manuallySelected="true"/> + <features name="Role_Equivalence"/> + <features name="Group_Constraints" manuallySelected="true"/> + <features name="Occurrence_Constraints" manuallySelected="true"/> + <features name="Relationships"/> + <features name="Relationship_Constraints"/> + <features name="Relationship_Cardinality" manuallySelected="true"/> + <features name="Intra_Relationship_Constraints"/> + <features name="Parthood_Constraints" manuallySelected="true"/> + <features name="Inter_Relationship_Constraints" manuallySelected="true"/> + <features name="Compartment_Types"/> + <features name="Compartment_Structure"/> + <features name="Compartment_Properties" manuallySelected="true"/> + <features name="Compartment_Behavior"/> + <features name="Compartment_Inheritance" manuallySelected="true"/> + <features name="Participants"/> + <features name="Contains_Compartments" manuallySelected="true"/> + <features name="Playable_by_Defining_Compartment" manuallySelected="true"/> + <features name="Data_Types"/> + <features name="Data_Type_Inheritance" manuallySelected="true"/> + </framedConfiguration> + </framedModel> + <cromModel> + <elements xsi:type="crom_l1_composed:NaturalType" name="NT" /> + <elements xsi:type="crom_l1_composed:CompartmentType" name="CT"> + <parts> + <role xsi:type="crom_l1_composed:RoleType" name="RT1" + incoming="//@cromModel/@elements.1/@relationships.0 //@cromModel/@elements.1/@relationships.1 //@cromModel/@elements.1/@relationships.2" /> + </parts> + <parts> + <role xsi:type="crom_l1_composed:RoleType" name="RT2" + outgoing="//@cromModel/@elements.1/@relationships.0 //@cromModel/@elements.1/@relationships.1 //@cromModel/@elements.1/@relationships.2" /> + </parts> + <relationships name="rst"> + <first holder="//@cromModel/@elements.1/@parts.1/@role" /> + <second holder="//@cromModel/@elements.1/@parts.0/@role" /> + </relationships> + <relationships name="rst2"> + <first holder="//@cromModel/@elements.1/@parts.1/@role" /> + <second holder="//@cromModel/@elements.1/@parts.0/@role" /> + </relationships> + <relationships name="rst3"> + <first holder="//@cromModel/@elements.1/@parts.1/@role" /> + <second holder="//@cromModel/@elements.1/@parts.0/@role" /> + </relationships> + <constraints xsi:type="crom_l1_composed:Irreflexive" + relation="//@cromModel/@elements.1/@relationships.0" /> + <constraints xsi:type="crom_l1_composed:Acyclic" + relation="//@cromModel/@elements.1/@relationships.0" /> + <constraints xsi:type="crom_l1_composed:Irreflexive" + relation="//@cromModel/@elements.1/@relationships.1" /> + <constraints xsi:type="crom_l1_composed:Reflexive" + relation="//@cromModel/@elements.1/@relationships.0" /> + <constraints xsi:type="crom_l1_composed:Total" + relation="//@cromModel/@elements.1/@relationships.0" /> + <constraints xsi:type="crom_l1_composed:Cyclic" + relation="//@cromModel/@elements.1/@relationships.0" /> + <constraints xsi:type="crom_l1_composed:Reflexive" + relation="//@cromModel/@elements.1/@relationships.1" /> + <constraints xsi:type="crom_l1_composed:Total" + relation="//@cromModel/@elements.1/@relationships.1" /> + <constraints xsi:type="crom_l1_composed:Cyclic" + relation="//@cromModel/@elements.1/@relationships.1" /> + <constraints xsi:type="crom_l1_composed:Acyclic" + relation="//@cromModel/@elements.1/@relationships.1" /> + <constraints xsi:type="crom_l1_composed:Reflexive" + relation="//@cromModel/@elements.1/@relationships.2" /> + <constraints xsi:type="crom_l1_composed:Irreflexive" + relation="//@cromModel/@elements.1/@relationships.2" /> + <constraints xsi:type="crom_l1_composed:Total" + relation="//@cromModel/@elements.1/@relationships.2" /> + <constraints xsi:type="crom_l1_composed:Cyclic" + relation="//@cromModel/@elements.1/@relationships.2" /> + <constraints xsi:type="crom_l1_composed:Acyclic" + relation="//@cromModel/@elements.1/@relationships.2" /> + </elements> + <relations xsi:type="crom_l1_composed:Fulfillment" + filled="//@cromModel/@elements.1/@parts.0/@role" filler="//@cromModel/@elements.0" /> + <relations xsi:type="crom_l1_composed:Fulfillment" + filled="//@cromModel/@elements.1/@parts.1/@role" filler="//@cromModel/@elements.0" /> + </cromModel> +</ts:TestCase> \ No newline at end of file diff --git a/org.framed.orm.transformation.test/testcases/IntraRelationshipConstraint/relationshipConstraint_test_2.xmi b/org.framed.orm.transformation.test/testcases/IntraRelationshipConstraint/relationshipConstraint_test_2.xmi new file mode 100644 index 00000000..31c7fa5c --- /dev/null +++ b/org.framed.orm.transformation.test/testcases/IntraRelationshipConstraint/relationshipConstraint_test_2.xmi @@ -0,0 +1,127 @@ +<?xml version="1.0" encoding="ASCII"?> +<ts:TestCase xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:crom_l1_composed="platform:/resource/org.rosi.crom.metamodel/" + xmlns:org.framed.iorm.model="http://iorm/1.0" xmlns:ts="http://org.framed/testmodel" + title="TestCase for 1 relationship(s) with constraint" + description="TestCase for 1 relationship(s) with constraint between two RoleType(s)"> + <framedModel> + <elements xsi:type="org.framed.iorm.model:Shape" name="NT" + outgoingRelations="//@framedModel/@elements.2" type="NaturalType"> + <firstSegment /> + <secondSegment /> + </elements> + <elements xsi:type="org.framed.iorm.model:Shape" name="CT" + incomingRelations="//@framedModel/@elements.2"> + <firstSegment /> + <secondSegment /> + <model> + <elements xsi:type="org.framed.iorm.model:Shape" name="RT1" + incomingRelations="//@framedModel/@elements.1/@model/@elements.2 //@framedModel/@elements.1/@model/@elements.3 //@framedModel/@elements.1/@model/@elements.4 //@framedModel/@elements.1/@model/@elements.5" + type="RoleType"> + <firstSegment /> + <secondSegment /> + <description name="*" /> + </elements> + <elements xsi:type="org.framed.iorm.model:Shape" name="RT2" + outgoingRelations="//@framedModel/@elements.1/@model/@elements.2 //@framedModel/@elements.1/@model/@elements.3 //@framedModel/@elements.1/@model/@elements.4 //@framedModel/@elements.1/@model/@elements.5" + type="RoleType"> + <firstSegment /> + <secondSegment /> + <description name="*" /> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="rst" + type="Relationship" target="//@framedModel/@elements.1/@model/@elements.0" + source="//@framedModel/@elements.1/@model/@elements.1" + referencedRelation="//@framedModel/@elements.1/@model/@elements.3 //@framedModel/@elements.1/@model/@elements.4 //@framedModel/@elements.1/@model/@elements.5"> + <sourceLabel name="*" /> + <targetLabel name="*" /> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="Irreflexive" + type="Irreflexive" target="//@framedModel/@elements.1/@model/@elements.0" + source="//@framedModel/@elements.1/@model/@elements.1" + referencedRelation="//@framedModel/@elements.1/@model/@elements.2"> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="Total" + type="Total" target="//@framedModel/@elements.1/@model/@elements.0" + source="//@framedModel/@elements.1/@model/@elements.1" + referencedRelation="//@framedModel/@elements.1/@model/@elements.2"> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="Acyclic" + type="Acyclic" target="//@framedModel/@elements.1/@model/@elements.0" + source="//@framedModel/@elements.1/@model/@elements.1" + referencedRelation="//@framedModel/@elements.1/@model/@elements.2"> + </elements> + </model> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" type="Fulfillment" + target="//@framedModel/@elements.1" source="//@framedModel/@elements.0" + referencedRoles="//@framedModel/@elements.1/@model/@elements.0 //@framedModel/@elements.1/@model/@elements.1" /> + <framedConfiguration> + <features/> + <features name="Role_Types"/> + <features name="Role_Structure"/> + <features name="Role_Properties" manuallySelected="true"/> + <features name="Role_Behavior"/> + <features name="Role_Inheritance" manuallySelected="true"/> + <features name="Playable"/> + <features name="Players"/> + <features name="Naturals"/> + <features name="Roles"/> + <features name="Compartments" manuallySelected="true"/> + <features name="Dates" manuallySelected="true"/> + <features name="Dependent"/> + <features name="On_Compartments"/> + <features name="On_Relationships"/> + <features name="Role_Constraints"/> + <features name="Role_Implication" manuallySelected="true"/> + <features name="Role_Prohibition" manuallySelected="true"/> + <features name="Role_Equivalence"/> + <features name="Group_Constraints" manuallySelected="true"/> + <features name="Occurrence_Constraints" manuallySelected="true"/> + <features name="Relationships"/> + <features name="Relationship_Constraints"/> + <features name="Relationship_Cardinality" manuallySelected="true"/> + <features name="Intra_Relationship_Constraints"/> + <features name="Parthood_Constraints" manuallySelected="true"/> + <features name="Inter_Relationship_Constraints" manuallySelected="true"/> + <features name="Compartment_Types"/> + <features name="Compartment_Structure"/> + <features name="Compartment_Properties" manuallySelected="true"/> + <features name="Compartment_Behavior"/> + <features name="Compartment_Inheritance" manuallySelected="true"/> + <features name="Participants"/> + <features name="Contains_Compartments" manuallySelected="true"/> + <features name="Playable_by_Defining_Compartment" manuallySelected="true"/> + <features name="Data_Types"/> + <features name="Data_Type_Inheritance" manuallySelected="true"/> + </framedConfiguration> + </framedModel> + <cromModel> + <elements xsi:type="crom_l1_composed:NaturalType" name="NT" /> + <elements xsi:type="crom_l1_composed:CompartmentType" name="CT"> + <parts> + <role xsi:type="crom_l1_composed:RoleType" name="RT1" + incoming="//@cromModel/@elements.1/@relationships.0" /> + </parts> + <parts> + <role xsi:type="crom_l1_composed:RoleType" name="RT2" + outgoing="//@cromModel/@elements.1/@relationships.0" /> + </parts> + <relationships name="rst"> + <first holder="//@cromModel/@elements.1/@parts.1/@role" /> + <second holder="//@cromModel/@elements.1/@parts.0/@role" /> + </relationships> + <constraints xsi:type="crom_l1_composed:Irreflexive" + relation="//@cromModel/@elements.1/@relationships.0" /> + <constraints xsi:type="crom_l1_composed:Total" + relation="//@cromModel/@elements.1/@relationships.0" /> + <constraints xsi:type="crom_l1_composed:Acyclic" + relation="//@cromModel/@elements.1/@relationships.0" /> + </elements> + <relations xsi:type="crom_l1_composed:Fulfillment" + filled="//@cromModel/@elements.1/@parts.0/@role" filler="//@cromModel/@elements.0" /> + <relations xsi:type="crom_l1_composed:Fulfillment" + filled="//@cromModel/@elements.1/@parts.1/@role" filler="//@cromModel/@elements.0" /> + </cromModel> +</ts:TestCase> \ No newline at end of file diff --git a/org.framed.orm.transformation.test/testcases/Relationship/relationship_test_10.xmi b/org.framed.orm.transformation.test/testcases/Relationship/relationship_test_10.xmi new file mode 100644 index 00000000..2077d5c2 --- /dev/null +++ b/org.framed.orm.transformation.test/testcases/Relationship/relationship_test_10.xmi @@ -0,0 +1,108 @@ +<?xml version="1.0" encoding="ASCII"?> +<ts:TestCase + xmi:version="2.0" + xmlns:xmi="http://www.omg.org/XMI" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:crom_l1_composed="platform:/resource/org.rosi.crom.metamodel/" + xmlns:org.framed.iorm.model="http://iorm/1.0" + xmlns:ts="http://org.framed/testmodel" + title="TestCase for 1 relationship(s)" + description="TestCase for 1 relationship(s) between two RoleType(s)"> + <framedModel> + <elements xsi:type="org.framed.iorm.model:Shape" name="NT" + outgoingRelations="//@framedModel/@elements.2" type="NaturalType"> + <firstSegment /> + <secondSegment /> + </elements> + <elements xsi:type="org.framed.iorm.model:Shape" name="CT" + incomingRelations="//@framedModel/@elements.2"> + <firstSegment /> + <secondSegment /> + <model> + <elements xsi:type="org.framed.iorm.model:Shape" name="RT1" + incomingRelations="//@framedModel/@elements.1/@model/@elements.2" + type="RoleType"> + <firstSegment /> + <secondSegment /> + <description name="*" /> + </elements> + <elements xsi:type="org.framed.iorm.model:Shape" name="RT2" + outgoingRelations="//@framedModel/@elements.1/@model/@elements.2" + type="RoleType"> + <firstSegment /> + <secondSegment /> + <description name="*" /> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="rst" + type="Relationship" target="//@framedModel/@elements.1/@model/@elements.0" + source="//@framedModel/@elements.1/@model/@elements.1"> + <sourceLabel name="*" /> + <targetLabel name="*" /> + </elements> + </model> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" type="Fulfillment" + target="//@framedModel/@elements.1" source="//@framedModel/@elements.0" + referencedRoles="//@framedModel/@elements.1/@model/@elements.0 //@framedModel/@elements.1/@model/@elements.1" /> + <framedConfiguration> + <features/> + <features name="Role_Types"/> + <features name="Role_Structure"/> + <features name="Role_Properties" manuallySelected="true"/> + <features name="Role_Behavior"/> + <features name="Role_Inheritance" manuallySelected="true"/> + <features name="Playable"/> + <features name="Players"/> + <features name="Naturals"/> + <features name="Roles"/> + <features name="Compartments" manuallySelected="true"/> + <features name="Dates" manuallySelected="true"/> + <features name="Dependent"/> + <features name="On_Compartments"/> + <features name="On_Relationships"/> + <features name="Role_Constraints"/> + <features name="Role_Implication" manuallySelected="true"/> + <features name="Role_Prohibition" manuallySelected="true"/> + <features name="Role_Equivalence"/> + <features name="Group_Constraints" manuallySelected="true"/> + <features name="Occurrence_Constraints" manuallySelected="true"/> + <features name="Relationships"/> + <features name="Relationship_Constraints"/> + <features name="Relationship_Cardinality" manuallySelected="true"/> + <features name="Intra_Relationship_Constraints"/> + <features name="Parthood_Constraints" manuallySelected="true"/> + <features name="Inter_Relationship_Constraints" manuallySelected="true"/> + <features name="Compartment_Types"/> + <features name="Compartment_Structure"/> + <features name="Compartment_Properties" manuallySelected="true"/> + <features name="Compartment_Behavior"/> + <features name="Compartment_Inheritance" manuallySelected="true"/> + <features name="Participants"/> + <features name="Contains_Compartments" manuallySelected="true"/> + <features name="Playable_by_Defining_Compartment" manuallySelected="true"/> + <features name="Data_Types"/> + <features name="Data_Type_Inheritance" manuallySelected="true"/> + </framedConfiguration> + </framedModel> + <cromModel> + <elements xsi:type="crom_l1_composed:NaturalType" name="NT" /> + <elements xsi:type="crom_l1_composed:CompartmentType" name="CT"> + <parts> + <role xsi:type="crom_l1_composed:RoleType" name="RT1" + incoming="//@cromModel/@elements.1/@relationships.0" /> + </parts> + <parts> + <role xsi:type="crom_l1_composed:RoleType" name="RT2" + outgoing="//@cromModel/@elements.1/@relationships.0" /> + </parts> + <relationships name="rst"> + <first holder="//@cromModel/@elements.1/@parts.1/@role" /> + <second holder="//@cromModel/@elements.1/@parts.0/@role" /> + </relationships> + </elements> + <relations xsi:type="crom_l1_composed:Fulfillment" + filled="//@cromModel/@elements.1/@parts.0/@role" filler="//@cromModel/@elements.0" /> + <relations xsi:type="crom_l1_composed:Fulfillment" + filled="//@cromModel/@elements.1/@parts.1/@role" filler="//@cromModel/@elements.0" /> + </cromModel> +</ts:TestCase> diff --git a/org.framed.orm.transformation.test/testcases/Relationship/relationship_test_11.xmi b/org.framed.orm.transformation.test/testcases/Relationship/relationship_test_11.xmi new file mode 100644 index 00000000..e00aa90e --- /dev/null +++ b/org.framed.orm.transformation.test/testcases/Relationship/relationship_test_11.xmi @@ -0,0 +1,121 @@ +<?xml version="1.0" encoding="ASCII"?> +<ts:TestCase + xmi:version="2.0" + xmlns:xmi="http://www.omg.org/XMI" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:crom_l1_composed="platform:/resource/org.rosi.crom.metamodel/" + xmlns:org.framed.iorm.model="http://iorm/1.0" + xmlns:ts="http://org.framed/testmodel" + title="TestCase for 2 relationship(s)" + description="TestCase for 2 relationship(s) between two RoleType(s)"> + <framedModel> + <elements xsi:type="org.framed.iorm.model:Shape" name="NT" + outgoingRelations="//@framedModel/@elements.2" type="NaturalType"> + <firstSegment /> + <secondSegment /> + </elements> + <elements xsi:type="org.framed.iorm.model:Shape" name="CT" + incomingRelations="//@framedModel/@elements.2"> + <firstSegment /> + <secondSegment /> + <model> + <elements xsi:type="org.framed.iorm.model:Shape" name="RT1" + incomingRelations="//@framedModel/@elements.1/@model/@elements.3" + outgoingRelations="//@framedModel/@elements.1/@model/@elements.2" + type="RoleType"> + <firstSegment /> + <secondSegment /> + <description name="*" /> + </elements> + <elements xsi:type="org.framed.iorm.model:Shape" name="RT2" + incomingRelations="//@framedModel/@elements.1/@model/@elements.2" + outgoingRelations="//@framedModel/@elements.1/@model/@elements.3" + type="RoleType"> + <firstSegment /> + <secondSegment /> + <description name="*" /> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="rst" + type="Relationship" target="//@framedModel/@elements.1/@model/@elements.1" + source="//@framedModel/@elements.1/@model/@elements.0"> + <sourceLabel name="1" /> + <targetLabel name="1..*" /> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="subrst" + type="Relationship" target="//@framedModel/@elements.1/@model/@elements.0" + source="//@framedModel/@elements.1/@model/@elements.1"> + <sourceLabel name="*" /> + <targetLabel name="0..1" /> + </elements> + </model> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" type="Fulfillment" + target="//@framedModel/@elements.1" source="//@framedModel/@elements.0" + referencedRoles="//@framedModel/@elements.1/@model/@elements.0 //@framedModel/@elements.1/@model/@elements.1" /> + <framedConfiguration> + <features/> + <features name="Role_Types"/> + <features name="Role_Structure"/> + <features name="Role_Properties" manuallySelected="true"/> + <features name="Role_Behavior"/> + <features name="Role_Inheritance" manuallySelected="true"/> + <features name="Playable"/> + <features name="Players"/> + <features name="Naturals"/> + <features name="Roles"/> + <features name="Compartments" manuallySelected="true"/> + <features name="Dates" manuallySelected="true"/> + <features name="Dependent"/> + <features name="On_Compartments"/> + <features name="On_Relationships"/> + <features name="Role_Constraints"/> + <features name="Role_Implication" manuallySelected="true"/> + <features name="Role_Prohibition" manuallySelected="true"/> + <features name="Role_Equivalence"/> + <features name="Group_Constraints" manuallySelected="true"/> + <features name="Occurrence_Constraints" manuallySelected="true"/> + <features name="Relationships"/> + <features name="Relationship_Constraints"/> + <features name="Relationship_Cardinality" manuallySelected="true"/> + <features name="Intra_Relationship_Constraints"/> + <features name="Parthood_Constraints" manuallySelected="true"/> + <features name="Inter_Relationship_Constraints" manuallySelected="true"/> + <features name="Compartment_Types"/> + <features name="Compartment_Structure"/> + <features name="Compartment_Properties" manuallySelected="true"/> + <features name="Compartment_Behavior"/> + <features name="Compartment_Inheritance" manuallySelected="true"/> + <features name="Participants"/> + <features name="Contains_Compartments" manuallySelected="true"/> + <features name="Playable_by_Defining_Compartment" manuallySelected="true"/> + <features name="Data_Types"/> + <features name="Data_Type_Inheritance" manuallySelected="true"/> + </framedConfiguration> + </framedModel> + <cromModel> + <elements xsi:type="crom_l1_composed:NaturalType" name="NT" /> + <elements xsi:type="crom_l1_composed:CompartmentType" name="CT"> + <parts> + <role xsi:type="crom_l1_composed:RoleType" name="RT1" + incoming="//@cromModel/@elements.1/@relationships.1" outgoing="//@cromModel/@elements.1/@relationships.0" /> + </parts> + <parts> + <role xsi:type="crom_l1_composed:RoleType" name="RT2" + incoming="//@cromModel/@elements.1/@relationships.0" outgoing="//@cromModel/@elements.1/@relationships.1" /> + </parts> + <relationships name="rst"> + <first lower="1" upper="1" + holder="//@cromModel/@elements.1/@parts.0/@role" /> + <second lower="1" holder="//@cromModel/@elements.1/@parts.1/@role" /> + </relationships> + <relationships name="subrst"> + <first holder="//@cromModel/@elements.1/@parts.1/@role" /> + <second upper="1" holder="//@cromModel/@elements.1/@parts.0/@role" /> + </relationships> + </elements> + <relations xsi:type="crom_l1_composed:Fulfillment" + filled="//@cromModel/@elements.1/@parts.0/@role" filler="//@cromModel/@elements.0" /> + <relations xsi:type="crom_l1_composed:Fulfillment" + filled="//@cromModel/@elements.1/@parts.1/@role" filler="//@cromModel/@elements.0" /> + </cromModel> +</ts:TestCase> \ No newline at end of file diff --git a/org.framed.orm.transformation.test/testcases/Relationship/relationship_test_9.xmi b/org.framed.orm.transformation.test/testcases/Relationship/relationship_test_9.xmi new file mode 100644 index 00000000..688a16d7 --- /dev/null +++ b/org.framed.orm.transformation.test/testcases/Relationship/relationship_test_9.xmi @@ -0,0 +1,123 @@ +<?xml version="1.0" encoding="ASCII"?> +<ts:TestCase + xmi:version="2.0" + xmlns:xmi="http://www.omg.org/XMI" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:crom_l1_composed="platform:/resource/org.rosi.crom.metamodel/" + xmlns:org.framed.iorm.model="http://iorm/1.0" + xmlns:ts="http://org.framed/testmodel" + title="TestCase for cyclic,total relationships" + description="TestCase for cyclic,total relationships where one RoleType is referenced by a cyclic,total relationship to another RoleType"> + <framedModel> + <elements xsi:type="org.framed.iorm.model:Shape" name="NT" + outgoingRelations="//@framedModel/@elements.2" type="NaturalType"> + <firstSegment /> + <secondSegment /> + </elements> + <elements xsi:type="org.framed.iorm.model:Shape" name="CT" + incomingRelations="//@framedModel/@elements.2"> + <firstSegment /> + <secondSegment /> + <model> + <elements xsi:type="org.framed.iorm.model:Shape" name="RT1" + incomingRelations="//@framedModel/@elements.1/@model/@elements.2 //@framedModel/@elements.1/@model/@elements.3 //@framedModel/@elements.1/@model/@elements.4" + type="RoleType"> + <firstSegment /> + <secondSegment /> + <description name="*" /> + </elements> + <elements xsi:type="org.framed.iorm.model:Shape" name="RT2" + outgoingRelations="//@framedModel/@elements.1/@model/@elements.2 //@framedModel/@elements.1/@model/@elements.3 //@framedModel/@elements.1/@model/@elements.4" + type="RoleType"> + <firstSegment /> + <secondSegment /> + <description name="*" /> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="rst" + type="Relationship" target="//@framedModel/@elements.1/@model/@elements.0" + source="//@framedModel/@elements.1/@model/@elements.1" + referencedRelation="//@framedModel/@elements.1/@model/@elements.3 //@framedModel/@elements.1/@model/@elements.4"> + <sourceLabel name="*" /> + <targetLabel name="*" /> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="Irreflexive" + type="Irreflexive" target="//@framedModel/@elements.1/@model/@elements.0" + source="//@framedModel/@elements.1/@model/@elements.1" + referencedRelation="//@framedModel/@elements.1/@model/@elements.2"> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="Total" + type="Total" target="//@framedModel/@elements.1/@model/@elements.0" + source="//@framedModel/@elements.1/@model/@elements.1" + referencedRelation="//@framedModel/@elements.1/@model/@elements.2"> + </elements> + </model> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" type="Fulfillment" + target="//@framedModel/@elements.1" source="//@framedModel/@elements.0" + referencedRoles="//@framedModel/@elements.1/@model/@elements.0 //@framedModel/@elements.1/@model/@elements.1" /> + <framedConfiguration> + <features/> + <features name="Role_Types"/> + <features name="Role_Structure"/> + <features name="Role_Properties" manuallySelected="true"/> + <features name="Role_Behavior"/> + <features name="Role_Inheritance" manuallySelected="true"/> + <features name="Playable"/> + <features name="Players"/> + <features name="Naturals"/> + <features name="Roles"/> + <features name="Compartments" manuallySelected="true"/> + <features name="Dates" manuallySelected="true"/> + <features name="Dependent"/> + <features name="On_Compartments"/> + <features name="On_Relationships"/> + <features name="Role_Constraints"/> + <features name="Role_Implication" manuallySelected="true"/> + <features name="Role_Prohibition" manuallySelected="true"/> + <features name="Role_Equivalence"/> + <features name="Group_Constraints" manuallySelected="true"/> + <features name="Occurrence_Constraints" manuallySelected="true"/> + <features name="Relationships"/> + <features name="Relationship_Constraints"/> + <features name="Relationship_Cardinality" manuallySelected="true"/> + <features name="Intra_Relationship_Constraints"/> + <features name="Parthood_Constraints" manuallySelected="true"/> + <features name="Inter_Relationship_Constraints" manuallySelected="true"/> + <features name="Compartment_Types"/> + <features name="Compartment_Structure"/> + <features name="Compartment_Properties" manuallySelected="true"/> + <features name="Compartment_Behavior"/> + <features name="Compartment_Inheritance" manuallySelected="true"/> + <features name="Participants"/> + <features name="Contains_Compartments" manuallySelected="true"/> + <features name="Playable_by_Defining_Compartment" manuallySelected="true"/> + <features name="Data_Types"/> + <features name="Data_Type_Inheritance" manuallySelected="true"/> + </framedConfiguration> + </framedModel> + <cromModel> + <elements xsi:type="crom_l1_composed:NaturalType" name="NT" /> + <elements xsi:type="crom_l1_composed:CompartmentType" name="CT"> + <parts> + <role xsi:type="crom_l1_composed:RoleType" name="RT1" + incoming="//@cromModel/@elements.1/@relationships.0" /> + </parts> + <parts> + <role xsi:type="crom_l1_composed:RoleType" name="RT2" + outgoing="//@cromModel/@elements.1/@relationships.0" /> + </parts> + <relationships name="rst"> + <first holder="//@cromModel/@elements.1/@parts.1/@role" /> + <second holder="//@cromModel/@elements.1/@parts.0/@role" /> + </relationships> + <constraints xsi:type="crom_l1_composed:Irreflexive" + relation="//@cromModel/@elements.1/@relationships.0" /> + <constraints xsi:type="crom_l1_composed:Total" + relation="//@cromModel/@elements.1/@relationships.0" /> + </elements> + <relations xsi:type="crom_l1_composed:Fulfillment" + filled="//@cromModel/@elements.1/@parts.0/@role" filler="//@cromModel/@elements.0" /> + <relations xsi:type="crom_l1_composed:Fulfillment" + filled="//@cromModel/@elements.1/@parts.1/@role" filler="//@cromModel/@elements.0" /> + </cromModel> +</ts:TestCase> \ No newline at end of file diff --git a/org.framed.orm.transformation.test/testcases/RelationshipCardinality/relationshipcardinality_test_1.xmi b/org.framed.orm.transformation.test/testcases/RelationshipCardinality/relationshipcardinality_test_1.xmi new file mode 100644 index 00000000..787c1772 --- /dev/null +++ b/org.framed.orm.transformation.test/testcases/RelationshipCardinality/relationshipcardinality_test_1.xmi @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="ASCII"?> +<ts:TestCase + xmi:version="2.0" + xmlns:xmi="http://www.omg.org/XMI" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:crom_l1_composed="platform:/resource/org.rosi.crom.metamodel/" + xmlns:org.framed.iorm.model="http://iorm/1.0" + xmlns:ts="http://org.framed/testmodel" + title="TestCase for Relationship Cardinality (1)" + description="TestCase for Relationship Cardinality (1) (2)"> +<framedModel> + <elements xsi:type="org.framed.iorm.model:Shape" name="CT"> + <firstSegment /> + <secondSegment /> + <model> + <elements xsi:type="org.framed.iorm.model:Shape" name="RT1" + incomingRelations="//@framedModel/@elements.0/@model/@elements.2" + type="RoleType"> + <firstSegment /> + <secondSegment /> + <description name="*" /> + </elements> + <elements xsi:type="org.framed.iorm.model:Shape" name="RT2" + outgoingRelations="//@framedModel/@elements.0/@model/@elements.2" + type="RoleType"> + <firstSegment /> + <secondSegment /> + <description name="*" /> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="rst" + type="Relationship" target="//@framedModel/@elements.0/@model/@elements.0" + source="//@framedModel/@elements.0/@model/@elements.1"> + <sourceLabel name="1" /> + <targetLabel name="2" /> + </elements> + </model> + </elements> + <framedConfiguration> + <features/> + <features name="Role_Types"/> + <features name="Role_Structure"/> + <features name="Role_Properties" manuallySelected="true"/> + <features name="Role_Behavior"/> + <features name="Role_Inheritance" manuallySelected="true"/> + <features name="Playable"/> + <features name="Players"/> + <features name="Naturals"/> + <features name="Roles"/> + <features name="Compartments" manuallySelected="true"/> + <features name="Dates" manuallySelected="true"/> + <features name="Dependent"/> + <features name="On_Compartments"/> + <features name="On_Relationships"/> + <features name="Role_Constraints"/> + <features name="Role_Implication" manuallySelected="true"/> + <features name="Role_Prohibition" manuallySelected="true"/> + <features name="Role_Equivalence"/> + <features name="Group_Constraints" manuallySelected="true"/> + <features name="Occurrence_Constraints" manuallySelected="true"/> + <features name="Relationships"/> + <features name="Relationship_Constraints"/> + <features name="Relationship_Cardinality" manuallySelected="true"/> + <features name="Intra_Relationship_Constraints"/> + <features name="Parthood_Constraints" manuallySelected="true"/> + <features name="Inter_Relationship_Constraints" manuallySelected="true"/> + <features name="Compartment_Types"/> + <features name="Compartment_Structure"/> + <features name="Compartment_Properties" manuallySelected="true"/> + <features name="Compartment_Behavior"/> + <features name="Compartment_Inheritance" manuallySelected="true"/> + <features name="Participants"/> + <features name="Contains_Compartments" manuallySelected="true"/> + <features name="Playable_by_Defining_Compartment" manuallySelected="true"/> + <features name="Data_Types"/> + <features name="Data_Type_Inheritance" manuallySelected="true"/> + </framedConfiguration> + </framedModel> + <cromModel> + <elements xsi:type="crom_l1_composed:CompartmentType" name="CT"> + <parts> + <role xsi:type="crom_l1_composed:RoleType" name="RT1" + incoming="//@cromModel/@elements.0/@relationships.0" /> + </parts> + <parts> + <role xsi:type="crom_l1_composed:RoleType" name="RT2" + outgoing="//@cromModel/@elements.0/@relationships.0" /> + </parts> + <relationships name="rst"> + <first lower="1" upper="1" holder="//@cromModel/@elements.0/@parts.1/@role" /> + <second lower="2" upper="2" holder="//@cromModel/@elements.0/@parts.0/@role" /> + </relationships> + </elements> + </cromModel> +</ts:TestCase> diff --git a/org.framed.orm.transformation.test/testcases/RelationshipCardinality/relationshipcardinality_test_2.xmi b/org.framed.orm.transformation.test/testcases/RelationshipCardinality/relationshipcardinality_test_2.xmi new file mode 100644 index 00000000..a67828e9 --- /dev/null +++ b/org.framed.orm.transformation.test/testcases/RelationshipCardinality/relationshipcardinality_test_2.xmi @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="ASCII"?> +<ts:TestCase + xmi:version="2.0" + xmlns:xmi="http://www.omg.org/XMI" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:crom_l1_composed="platform:/resource/org.rosi.crom.metamodel/" + xmlns:org.framed.iorm.model="http://iorm/1.0" + xmlns:ts="http://org.framed/testmodel" + title="TestCase for Relationship Cardinality (1..2)" + description="TestCase for Relationship Cardinality (1..2) (2..3)"> +<framedModel> + <elements xsi:type="org.framed.iorm.model:Shape" name="CT"> + <firstSegment /> + <secondSegment /> + <model> + <elements xsi:type="org.framed.iorm.model:Shape" name="RT1" + incomingRelations="//@framedModel/@elements.0/@model/@elements.2" + type="RoleType"> + <firstSegment /> + <secondSegment /> + <description name="*" /> + </elements> + <elements xsi:type="org.framed.iorm.model:Shape" name="RT2" + outgoingRelations="//@framedModel/@elements.0/@model/@elements.2" + type="RoleType"> + <firstSegment /> + <secondSegment /> + <description name="*" /> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="rst" + type="Relationship" target="//@framedModel/@elements.0/@model/@elements.0" + source="//@framedModel/@elements.0/@model/@elements.1"> + <sourceLabel name="1..2" /> + <targetLabel name="3..4" /> + </elements> + </model> + </elements> + <framedConfiguration> + <features/> + <features name="Role_Types"/> + <features name="Role_Structure"/> + <features name="Role_Properties" manuallySelected="true"/> + <features name="Role_Behavior"/> + <features name="Role_Inheritance" manuallySelected="true"/> + <features name="Playable"/> + <features name="Players"/> + <features name="Naturals"/> + <features name="Roles"/> + <features name="Compartments" manuallySelected="true"/> + <features name="Dates" manuallySelected="true"/> + <features name="Dependent"/> + <features name="On_Compartments"/> + <features name="On_Relationships"/> + <features name="Role_Constraints"/> + <features name="Role_Implication" manuallySelected="true"/> + <features name="Role_Prohibition" manuallySelected="true"/> + <features name="Role_Equivalence"/> + <features name="Group_Constraints" manuallySelected="true"/> + <features name="Occurrence_Constraints" manuallySelected="true"/> + <features name="Relationships"/> + <features name="Relationship_Constraints"/> + <features name="Relationship_Cardinality" manuallySelected="true"/> + <features name="Intra_Relationship_Constraints"/> + <features name="Parthood_Constraints" manuallySelected="true"/> + <features name="Inter_Relationship_Constraints" manuallySelected="true"/> + <features name="Compartment_Types"/> + <features name="Compartment_Structure"/> + <features name="Compartment_Properties" manuallySelected="true"/> + <features name="Compartment_Behavior"/> + <features name="Compartment_Inheritance" manuallySelected="true"/> + <features name="Participants"/> + <features name="Contains_Compartments" manuallySelected="true"/> + <features name="Playable_by_Defining_Compartment" manuallySelected="true"/> + <features name="Data_Types"/> + <features name="Data_Type_Inheritance" manuallySelected="true"/> + </framedConfiguration> + </framedModel> + <cromModel> + <elements xsi:type="crom_l1_composed:CompartmentType" name="CT"> + <parts> + <role xsi:type="crom_l1_composed:RoleType" name="RT1" + incoming="//@cromModel/@elements.0/@relationships.0" /> + </parts> + <parts> + <role xsi:type="crom_l1_composed:RoleType" name="RT2" + outgoing="//@cromModel/@elements.0/@relationships.0" /> + </parts> + <relationships name="rst"> + <first lower="1" upper="2" holder="//@cromModel/@elements.0/@parts.1/@role" /> + <second lower="3" upper="4" holder="//@cromModel/@elements.0/@parts.0/@role" /> + </relationships> + </elements> + </cromModel> +</ts:TestCase> diff --git a/org.framed.orm.transformation.test/testcases/RelationshipCardinality/relationshipcardinality_test_3.xmi b/org.framed.orm.transformation.test/testcases/RelationshipCardinality/relationshipcardinality_test_3.xmi new file mode 100644 index 00000000..299baa22 --- /dev/null +++ b/org.framed.orm.transformation.test/testcases/RelationshipCardinality/relationshipcardinality_test_3.xmi @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="ASCII"?> +<ts:TestCase + xmi:version="2.0" + xmlns:xmi="http://www.omg.org/XMI" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:crom_l1_composed="platform:/resource/org.rosi.crom.metamodel/" + xmlns:org.framed.iorm.model="http://iorm/1.0" + xmlns:ts="http://org.framed/testmodel" + title="TestCase for Relationship Cardinality (1..*)" + description="TestCase for Relationship Cardinality (1..*) (2..*)"> +<framedModel> + <elements xsi:type="org.framed.iorm.model:Shape" name="CT"> + <firstSegment /> + <secondSegment /> + <model> + <elements xsi:type="org.framed.iorm.model:Shape" name="RT1" + incomingRelations="//@framedModel/@elements.0/@model/@elements.2" + type="RoleType"> + <firstSegment /> + <secondSegment /> + <description name="*" /> + </elements> + <elements xsi:type="org.framed.iorm.model:Shape" name="RT2" + outgoingRelations="//@framedModel/@elements.0/@model/@elements.2" + type="RoleType"> + <firstSegment /> + <secondSegment /> + <description name="*" /> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="rst" + type="Relationship" target="//@framedModel/@elements.0/@model/@elements.0" + source="//@framedModel/@elements.0/@model/@elements.1"> + <sourceLabel name="1..*" /> + <targetLabel name="2..*" /> + </elements> + </model> + </elements> + <framedConfiguration> + <features/> + <features name="Role_Types"/> + <features name="Role_Structure"/> + <features name="Role_Properties" manuallySelected="true"/> + <features name="Role_Behavior"/> + <features name="Role_Inheritance" manuallySelected="true"/> + <features name="Playable"/> + <features name="Players"/> + <features name="Naturals"/> + <features name="Roles"/> + <features name="Compartments" manuallySelected="true"/> + <features name="Dates" manuallySelected="true"/> + <features name="Dependent"/> + <features name="On_Compartments"/> + <features name="On_Relationships"/> + <features name="Role_Constraints"/> + <features name="Role_Implication" manuallySelected="true"/> + <features name="Role_Prohibition" manuallySelected="true"/> + <features name="Role_Equivalence"/> + <features name="Group_Constraints" manuallySelected="true"/> + <features name="Occurrence_Constraints" manuallySelected="true"/> + <features name="Relationships"/> + <features name="Relationship_Constraints"/> + <features name="Relationship_Cardinality" manuallySelected="true"/> + <features name="Intra_Relationship_Constraints"/> + <features name="Parthood_Constraints" manuallySelected="true"/> + <features name="Inter_Relationship_Constraints" manuallySelected="true"/> + <features name="Compartment_Types"/> + <features name="Compartment_Structure"/> + <features name="Compartment_Properties" manuallySelected="true"/> + <features name="Compartment_Behavior"/> + <features name="Compartment_Inheritance" manuallySelected="true"/> + <features name="Participants"/> + <features name="Contains_Compartments" manuallySelected="true"/> + <features name="Playable_by_Defining_Compartment" manuallySelected="true"/> + <features name="Data_Types"/> + <features name="Data_Type_Inheritance" manuallySelected="true"/> + </framedConfiguration> + </framedModel> + <cromModel> + <elements xsi:type="crom_l1_composed:CompartmentType" name="CT"> + <parts> + <role xsi:type="crom_l1_composed:RoleType" name="RT1" + incoming="//@cromModel/@elements.0/@relationships.0" /> + </parts> + <parts> + <role xsi:type="crom_l1_composed:RoleType" name="RT2" + outgoing="//@cromModel/@elements.0/@relationships.0" /> + </parts> + <relationships name="rst"> + <first lower="1" holder="//@cromModel/@elements.0/@parts.1/@role" /> + <second lower="2" holder="//@cromModel/@elements.0/@parts.0/@role" /> + </relationships> + </elements> + </cromModel> +</ts:TestCase> diff --git a/org.framed.orm.transformation.test/testcases/RoleConstraints/roleEquivalence_test_1.xmi b/org.framed.orm.transformation.test/testcases/RoleConstraints/roleEquivalence_test_1.xmi new file mode 100644 index 00000000..cb078cee --- /dev/null +++ b/org.framed.orm.transformation.test/testcases/RoleConstraints/roleEquivalence_test_1.xmi @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="ASCII"?> +<ts:TestCase + xmi:version="2.0" + xmlns:xmi="http://www.omg.org/XMI" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:crom_l1_composed="platform:/resource/org.rosi.crom.metamodel/" + xmlns:org.framed.iorm.model="http://iorm/1.0" + xmlns:ts="http://org.framed/testmodel" + title="Simple TestCase for RoleImplications" + description="Simple TestCase for RoleImplications"> + <framedModel> + <elements + xsi:type="org.framed.iorm.model:Shape" + name="compType1"> + <model> + <elements + xsi:type="org.framed.iorm.model:Shape" + name="roleType1" + outgoingRelations="//@framedModel/@elements.0/@model/@elements.2" + type="RoleType"/> + <elements + xsi:type="org.framed.iorm.model:Shape" + name="roleType2" + incomingRelations="//@framedModel/@elements.0/@model/@elements.2" + type="RoleType"/> + <elements + xsi:type="org.framed.iorm.model:Relation" + name="" + type="RoleEquivalence" + target="//@framedModel/@elements.0/@model/@elements.1" + source="//@framedModel/@elements.0/@model/@elements.0"/> + </model> + </elements> + <framedConfiguration> + <features/> + <features name="Role_Types"/> + <features name="Role_Structure"/> + <features name="Role_Properties" manuallySelected="true"/> + <features name="Role_Behavior"/> + <features name="Role_Inheritance" manuallySelected="true"/> + <features name="Playable"/> + <features name="Players"/> + <features name="Naturals"/> + <features name="Roles"/> + <features name="Compartments" manuallySelected="true"/> + <features name="Dates" manuallySelected="true"/> + <features name="Dependent"/> + <features name="On_Compartments"/> + <features name="On_Relationships"/> + <features name="Role_Constraints"/> + <features name="Role_Implication" manuallySelected="true"/> + <features name="Role_Prohibition" manuallySelected="true"/> + <features name="Role_Equivalence"/> + <features name="Group_Constraints" manuallySelected="true"/> + <features name="Occurrence_Constraints" manuallySelected="true"/> + <features name="Relationships"/> + <features name="Relationship_Constraints"/> + <features name="Relationship_Cardinality" manuallySelected="true"/> + <features name="Intra_Relationship_Constraints"/> + <features name="Parthood_Constraints" manuallySelected="true"/> + <features name="Inter_Relationship_Constraints" manuallySelected="true"/> + <features name="Compartment_Types"/> + <features name="Compartment_Structure"/> + <features name="Compartment_Properties" manuallySelected="true"/> + <features name="Compartment_Behavior"/> + <features name="Compartment_Inheritance" manuallySelected="true"/> + <features name="Participants"/> + <features name="Contains_Compartments" manuallySelected="true"/> + <features name="Playable_by_Defining_Compartment" manuallySelected="true"/> + <features name="Data_Types"/> + <features name="Data_Type_Inheritance" manuallySelected="true"/> + </framedConfiguration> + </framedModel> + <cromModel> + <elements + xsi:type="crom_l1_composed:CompartmentType" + name="compType1"> + <parts> + <role + xsi:type="crom_l1_composed:RoleType" + name="roleType1"/> + </parts> + <parts> + <role + xsi:type="crom_l1_composed:RoleType" + name="roleType2"/> + </parts> + <constraints + xsi:type="crom_l1_composed:RoleEquivalence" + first="//@cromModel/@elements.0/@parts.0/@role" + second="//@cromModel/@elements.0/@parts.1/@role"/> + </elements> + </cromModel> +</ts:TestCase> diff --git a/org.framed.orm.transformation.test/testcases/RoleConstraints/roleImplication_test_1.xmi b/org.framed.orm.transformation.test/testcases/RoleConstraints/roleImplication_test_1.xmi new file mode 100644 index 00000000..be604885 --- /dev/null +++ b/org.framed.orm.transformation.test/testcases/RoleConstraints/roleImplication_test_1.xmi @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="ASCII"?> +<ts:TestCase + xmi:version="2.0" + xmlns:xmi="http://www.omg.org/XMI" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:crom_l1_composed="platform:/resource/org.rosi.crom.metamodel/" + xmlns:org.framed.iorm.model="http://iorm/1.0" + xmlns:ts="http://org.framed/testmodel" + title="Simple TestCase for RoleImplications" + description="Simple TestCase for RoleImplications"> + <framedModel> + <elements + xsi:type="org.framed.iorm.model:Shape" + name="compType1"> + <model> + <elements + xsi:type="org.framed.iorm.model:Shape" + name="roleType1" + outgoingRelations="//@framedModel/@elements.0/@model/@elements.2" + type="RoleType"/> + <elements + xsi:type="org.framed.iorm.model:Shape" + name="roleType2" + incomingRelations="//@framedModel/@elements.0/@model/@elements.2" + type="RoleType"/> + <elements + xsi:type="org.framed.iorm.model:Relation" + name="" + type="RoleImplication" + target="//@framedModel/@elements.0/@model/@elements.1" + source="//@framedModel/@elements.0/@model/@elements.0"/> + </model> + </elements> + <framedConfiguration> + <features/> + <features name="Role_Types"/> + <features name="Role_Structure"/> + <features name="Role_Properties" manuallySelected="true"/> + <features name="Role_Behavior"/> + <features name="Role_Inheritance" manuallySelected="true"/> + <features name="Playable"/> + <features name="Players"/> + <features name="Naturals"/> + <features name="Roles"/> + <features name="Compartments" manuallySelected="true"/> + <features name="Dates" manuallySelected="true"/> + <features name="Dependent"/> + <features name="On_Compartments"/> + <features name="On_Relationships"/> + <features name="Role_Constraints"/> + <features name="Role_Implication" manuallySelected="true"/> + <features name="Role_Prohibition" manuallySelected="true"/> + <features name="Role_Equivalence"/> + <features name="Group_Constraints" manuallySelected="true"/> + <features name="Occurrence_Constraints" manuallySelected="true"/> + <features name="Relationships"/> + <features name="Relationship_Constraints"/> + <features name="Relationship_Cardinality" manuallySelected="true"/> + <features name="Intra_Relationship_Constraints"/> + <features name="Parthood_Constraints" manuallySelected="true"/> + <features name="Inter_Relationship_Constraints" manuallySelected="true"/> + <features name="Compartment_Types"/> + <features name="Compartment_Structure"/> + <features name="Compartment_Properties" manuallySelected="true"/> + <features name="Compartment_Behavior"/> + <features name="Compartment_Inheritance" manuallySelected="true"/> + <features name="Participants"/> + <features name="Contains_Compartments" manuallySelected="true"/> + <features name="Playable_by_Defining_Compartment" manuallySelected="true"/> + <features name="Data_Types"/> + <features name="Data_Type_Inheritance" manuallySelected="true"/> + </framedConfiguration> + </framedModel> + <cromModel> + <elements + xsi:type="crom_l1_composed:CompartmentType" + name="compType1"> + <parts> + <role + xsi:type="crom_l1_composed:RoleType" + name="roleType1"/> + </parts> + <parts> + <role + xsi:type="crom_l1_composed:RoleType" + name="roleType2"/> + </parts> + <constraints + xsi:type="crom_l1_composed:RoleImplication" + first="//@cromModel/@elements.0/@parts.0/@role" + second="//@cromModel/@elements.0/@parts.1/@role"/> + </elements> + </cromModel> +</ts:TestCase> diff --git a/org.framed.orm.transformation.test/testcases/RoleConstraints/roleProhibition_test_1.xmi b/org.framed.orm.transformation.test/testcases/RoleConstraints/roleProhibition_test_1.xmi new file mode 100644 index 00000000..b85f9fbe --- /dev/null +++ b/org.framed.orm.transformation.test/testcases/RoleConstraints/roleProhibition_test_1.xmi @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="ASCII"?> +<ts:TestCase + xmi:version="2.0" + xmlns:xmi="http://www.omg.org/XMI" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:crom_l1_composed="platform:/resource/org.rosi.crom.metamodel/" + xmlns:org.framed.iorm.model="http://iorm/1.0" + xmlns:ts="http://org.framed/testmodel" + title="Simple TestCase for RoleImplications" + description="Simple TestCase for RoleImplications"> + <framedModel> + <elements + xsi:type="org.framed.iorm.model:Shape" + name="compType1"> + <model> + <elements + xsi:type="org.framed.iorm.model:Shape" + name="roleType1" + outgoingRelations="//@framedModel/@elements.0/@model/@elements.2" + type="RoleType"/> + <elements + xsi:type="org.framed.iorm.model:Shape" + name="roleType2" + incomingRelations="//@framedModel/@elements.0/@model/@elements.2" + type="RoleType"/> + <elements + xsi:type="org.framed.iorm.model:Relation" + name="" + type="RoleProhibition" + target="//@framedModel/@elements.0/@model/@elements.1" + source="//@framedModel/@elements.0/@model/@elements.0"/> + </model> + </elements> + <framedConfiguration> + <features/> + <features name="Role_Types"/> + <features name="Role_Structure"/> + <features name="Role_Properties" manuallySelected="true"/> + <features name="Role_Behavior"/> + <features name="Role_Inheritance" manuallySelected="true"/> + <features name="Playable"/> + <features name="Players"/> + <features name="Naturals"/> + <features name="Roles"/> + <features name="Compartments" manuallySelected="true"/> + <features name="Dates" manuallySelected="true"/> + <features name="Dependent"/> + <features name="On_Compartments"/> + <features name="On_Relationships"/> + <features name="Role_Constraints"/> + <features name="Role_Implication" manuallySelected="true"/> + <features name="Role_Prohibition" manuallySelected="true"/> + <features name="Role_Equivalence"/> + <features name="Group_Constraints" manuallySelected="true"/> + <features name="Occurrence_Constraints" manuallySelected="true"/> + <features name="Relationships"/> + <features name="Relationship_Constraints"/> + <features name="Relationship_Cardinality" manuallySelected="true"/> + <features name="Intra_Relationship_Constraints"/> + <features name="Parthood_Constraints" manuallySelected="true"/> + <features name="Inter_Relationship_Constraints" manuallySelected="true"/> + <features name="Compartment_Types"/> + <features name="Compartment_Structure"/> + <features name="Compartment_Properties" manuallySelected="true"/> + <features name="Compartment_Behavior"/> + <features name="Compartment_Inheritance" manuallySelected="true"/> + <features name="Participants"/> + <features name="Contains_Compartments" manuallySelected="true"/> + <features name="Playable_by_Defining_Compartment" manuallySelected="true"/> + <features name="Data_Types"/> + <features name="Data_Type_Inheritance" manuallySelected="true"/> + </framedConfiguration> + </framedModel> + <cromModel> + <elements + xsi:type="crom_l1_composed:CompartmentType" + name="compType1"> + <parts> + <role + xsi:type="crom_l1_composed:RoleType" + name="roleType1"/> + </parts> + <parts> + <role + xsi:type="crom_l1_composed:RoleType" + name="roleType2"/> + </parts> + <constraints + xsi:type="crom_l1_composed:RoleProhibition" + first="//@cromModel/@elements.0/@parts.0/@role" + second="//@cromModel/@elements.0/@parts.1/@role"/> + </elements> + </cromModel> +</ts:TestCase> diff --git a/org.framed.orm.transformation.test/testcases/integration/bank_example_test.xmi b/org.framed.orm.transformation.test/testcases/integration/bank_example_test.xmi new file mode 100644 index 00000000..349d7fb4 --- /dev/null +++ b/org.framed.orm.transformation.test/testcases/integration/bank_example_test.xmi @@ -0,0 +1,407 @@ +<?xml version="1.0" encoding="ASCII"?> +<ts:TestCase xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:crom_l1_composed="platform:/resource/org.rosi.crom.metamodel/" + xmlns:org.framed.iorm.model="http://iorm/1.0" xmlns:ts="http://org.framed/testmodel" + title="BankExample Test" description="BankExample Test"> + <framedModel> + <elements xsi:type="org.framed.iorm.model:Shape" name="Person" + outgoingRelations="//@framedModel/@elements.11" type="NaturalType"> + <firstSegment> + <elements name="title : String" /> + <elements name="firstName : String" /> + <elements name="lastName : String" /> + <elements name="address : String" /> + </firstSegment> + </elements> + <elements xsi:type="org.framed.iorm.model:Shape" name="Company" + outgoingRelations="//@framedModel/@elements.12" type="NaturalType"> + <firstSegment> + <elements name="name : String" /> + <elements name="legalForm : String" /> + <elements name="addresses : String" /> + <elements name="POBox : String" /> + </firstSegment> + </elements> + <elements xsi:type="org.framed.iorm.model:Shape" name="Bank" + incomingRelations="//@framedModel/@elements.11 //@framedModel/@elements.12 //@framedModel/@elements.13 //@framedModel/@elements.15 //@framedModel/@elements.14"> + <firstSegment> + <elements name="name : String" /> + </firstSegment> + <secondSegment> + <elements name="executeTransactions()" /> + </secondSegment> + <model> + <elements xsi:type="org.framed.iorm.model:Shape" name="Customer" + incomingRelations="//@framedModel/@elements.2/@model/@elements.2" + outgoingRelations="//@framedModel/@elements.2/@model/@elements.5 //@framedModel/@elements.2/@model/@elements.6" + type="RoleType"> + <firstSegment> + <elements name="id : Integer" /> + <elements name="name : String" /> + </firstSegment> + <secondSegment> + <elements name="addSavingsAccount() : Boolean" /> + <elements name="addCheckingsAccount() : Boolean" /> + <elements name="getAccounts() : Integer" /> + <elements name="getBalance(id : Integer) : Money" /> + <elements name="transfer(from : Integer, to : Integer) : Boolean" /> + <elements name="sendAccountStatement(id : Integer) : Boolean" /> + </secondSegment> + <description name="0..*" /> + </elements> + <elements xsi:type="org.framed.iorm.model:Shape" name="Consultant" + outgoingRelations="//@framedModel/@elements.2/@model/@elements.2" + type="RoleType"> + <firstSegment> + <elements name="Phone : String" /> + </firstSegment> + <secondSegment> + <elements name="consult(id : Integer)" /> + </secondSegment> + <description name="1..*" /> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="advices" + type="Relationship" target="//@framedModel/@elements.2/@model/@elements.0" + source="//@framedModel/@elements.2/@model/@elements.1"> + <sourceLabel name="0..*" /> + <targetLabel name="1..*" /> + </elements> + <elements xsi:type="org.framed.iorm.model:Shape" name="Transaction" + type="RoleType"> + <firstSegment> + <elements name="execution : DateTime" /> + </firstSegment> + <secondSegment> + <elements name="execute() : Boolean" /> + <elements name="isExecuted() : Boolean" /> + </secondSegment> + <description name="0..*" /> + </elements> + <elements xsi:type="org.framed.iorm.model:Shape" name="RoleGroup (1..1)" + type="RoleGroup"> + <model> + <elements xsi:type="org.framed.iorm.model:Shape" name="CheckingsAccount" + incomingRelations="//@framedModel/@elements.2/@model/@elements.5" + type="RoleType"> + <firstSegment> + <elements name="limit : Money" /> + </firstSegment> + <secondSegment> + <elements name="decrease(amount : Money) " /> + <elements name="getLimit() : Money" /> + <elements name="setLimit(limit : Money) " /> + </secondSegment> + </elements> + <elements xsi:type="org.framed.iorm.model:Shape" name="SavingsAccount" + incomingRelations="//@framedModel/@elements.2/@model/@elements.6" + type="RoleType"> + <firstSegment> + <elements name="transactionFee:Double" /> + </firstSegment> + <secondSegment> + <elements name="decrease(amount : Money) " /> + </secondSegment> + </elements> + </model> + <description name="0..*" /> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="own_ca" + type="Relationship" + target="//@framedModel/@elements.2/@model/@elements.4/@model/@elements.0" + source="//@framedModel/@elements.2/@model/@elements.0"> + <sourceLabel name="1" /> + <targetLabel name="0..*" /> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="own_sa" + type="Relationship" + target="//@framedModel/@elements.2/@model/@elements.4/@model/@elements.1" + source="//@framedModel/@elements.2/@model/@elements.0"> + <sourceLabel name="1..*" /> + <targetLabel name="0..*" /> + </elements> + </model> + </elements> + <elements xsi:type="org.framed.iorm.model:Shape" name="String" + type="DataType" /> + <elements xsi:type="org.framed.iorm.model:Shape" name="Transaction" + outgoingRelations="//@framedModel/@elements.13"> + <firstSegment> + <elements name="creationtime : DateTime" /> + <elements name="amount : Money" /> + </firstSegment> + <secondSegment> + <elements name="bind(source:Account, target:Account):Boolean" /> + <elements name="execute() : Boolean" /> + </secondSegment> + <model> + <elements xsi:type="org.framed.iorm.model:Shape" name="RoleGroup (1..1)" + type="RoleGroup"> + <model> + <elements xsi:type="org.framed.iorm.model:Shape" name="Source" + outgoingRelations="//@framedModel/@elements.4/@model/@elements.0/@model/@elements.2 //@framedModel/@elements.4/@model/@elements.0/@model/@elements.3" + type="RoleType"> + <secondSegment> + <elements name="withdraw(amount:Money)" /> + </secondSegment> + </elements> + <elements xsi:type="org.framed.iorm.model:Shape" name="Target" + incomingRelations="//@framedModel/@elements.4/@model/@elements.0/@model/@elements.2 //@framedModel/@elements.4/@model/@elements.0/@model/@elements.3" + type="RoleType"> + <secondSegment> + <elements name="deposite(amount:Money)" /> + </secondSegment> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="trans" + type="Relationship" + target="//@framedModel/@elements.4/@model/@elements.0/@model/@elements.1" + source="//@framedModel/@elements.4/@model/@elements.0/@model/@elements.0" + referencedRelation="//@framedModel/@elements.4/@model/@elements.0/@model/@elements.3"> + <sourceLabel name="1" /> + <targetLabel name="1" /> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="" + type="Irreflexive" + target="//@framedModel/@elements.4/@model/@elements.0/@model/@elements.1" + source="//@framedModel/@elements.4/@model/@elements.0/@model/@elements.0" + referencedRelation="//@framedModel/@elements.4/@model/@elements.0/@model/@elements.2" /> + </model> + <description name="2..2" /> + </elements> + </model> + </elements> + <elements xsi:type="org.framed.iorm.model:Shape" name="Account" + outgoingRelations="//@framedModel/@elements.14 //@framedModel/@elements.15" + type="NaturalType"> + <firstSegment> + <elements name="id : Integer" /> + <elements name="balance : Money" /> + </firstSegment> + <secondSegment> + <elements name="getBalance() : Money" /> + <elements name="getId() : Integer" /> + <elements name="increase(amount: Money)" /> + <elements name="decrease(amount : Money)" /> + </secondSegment> + </elements> + <elements xsi:type="org.framed.iorm.model:Shape" name="Integer" + type="DataType" /> + <elements xsi:type="org.framed.iorm.model:Shape" name="Boolean" + type="DataType" /> + <elements xsi:type="org.framed.iorm.model:Shape" name="Money" + type="DataType" /> + <elements xsi:type="org.framed.iorm.model:Shape" name="Double" + type="DataType" /> + <elements xsi:type="org.framed.iorm.model:Shape" name="DateTime" + type="DataType" /> + <elements xsi:type="org.framed.iorm.model:Relation" name="" + type="Fulfillment" target="//@framedModel/@elements.2" source="//@framedModel/@elements.0" + referencedRoles="//@framedModel/@elements.2/@model/@elements.1 //@framedModel/@elements.2/@model/@elements.0" /> + <elements xsi:type="org.framed.iorm.model:Relation" name="" + type="Fulfillment" target="//@framedModel/@elements.2" source="//@framedModel/@elements.1" + referencedRoles="//@framedModel/@elements.2/@model/@elements.0" /> + <elements xsi:type="org.framed.iorm.model:Relation" name="" + type="Fulfillment" target="//@framedModel/@elements.2" source="//@framedModel/@elements.4" + referencedRoles="//@framedModel/@elements.2/@model/@elements.3" /> + <elements xsi:type="org.framed.iorm.model:Relation" type="Fulfillment" + target="//@framedModel/@elements.2" source="//@framedModel/@elements.5" + referencedRoles="//@framedModel/@elements.2/@model/@elements.4" /> + <elements xsi:type="org.framed.iorm.model:Relation" type="Fulfillment" + target="//@framedModel/@elements.2" source="//@framedModel/@elements.5" + referencedRoles="//@framedModel/@elements.4/@model/@elements.0" /> + <framedConfiguration> + <features/> + <features name="Role_Types"/> + <features name="Role_Structure"/> + <features name="Role_Properties" manuallySelected="true"/> + <features name="Role_Behavior"/> + <features name="Role_Inheritance" manuallySelected="true"/> + <features name="Playable"/> + <features name="Players"/> + <features name="Naturals"/> + <features name="Roles"/> + <features name="Compartments" manuallySelected="true"/> + <features name="Dates" manuallySelected="true"/> + <features name="Dependent"/> + <features name="On_Compartments"/> + <features name="On_Relationships"/> + <features name="Role_Constraints"/> + <features name="Role_Implication" manuallySelected="true"/> + <features name="Role_Prohibition" manuallySelected="true"/> + <features name="Role_Equivalence"/> + <features name="Group_Constraints" manuallySelected="true"/> + <features name="Occurrence_Constraints" manuallySelected="true"/> + <features name="Relationships"/> + <features name="Relationship_Constraints"/> + <features name="Relationship_Cardinality" manuallySelected="true"/> + <features name="Intra_Relationship_Constraints"/> + <features name="Parthood_Constraints" manuallySelected="true"/> + <features name="Inter_Relationship_Constraints" manuallySelected="true"/> + <features name="Compartment_Types"/> + <features name="Compartment_Structure"/> + <features name="Compartment_Properties" manuallySelected="true"/> + <features name="Compartment_Behavior"/> + <features name="Compartment_Inheritance" manuallySelected="true"/> + <features name="Participants"/> + <features name="Contains_Compartments" manuallySelected="true"/> + <features name="Playable_by_Defining_Compartment" manuallySelected="true"/> + <features name="Data_Types"/> + <features name="Data_Type_Inheritance" manuallySelected="true"/> + </framedConfiguration> + </framedModel> + <cromModel> + <elements xsi:type="crom_l1_composed:NaturalType" name="Person"> + <attributes name="title" type="//@cromModel/@elements.3" /> + <attributes name="firstName" type="//@cromModel/@elements.3" /> + <attributes name="lastName" type="//@cromModel/@elements.3" /> + <attributes name="address" type="//@cromModel/@elements.3" /> + </elements> + <elements xsi:type="crom_l1_composed:NaturalType" name="Company"> + <attributes name="name" type="//@cromModel/@elements.3" /> + <attributes name="legalForm" type="//@cromModel/@elements.3" /> + <attributes name="addresses" type="//@cromModel/@elements.3" /> + <attributes name="POBox" type="//@cromModel/@elements.3" /> + </elements> + <elements xsi:type="crom_l1_composed:CompartmentType" name="Bank"> + <attributes name="name" type="//@cromModel/@elements.3" /> + <operations name="executeTransactions" /> + <parts> + <role xsi:type="crom_l1_composed:RoleType" name="Customer" + incoming="//@cromModel/@elements.2/@relationships.0" + outgoing="//@cromModel/@elements.2/@relationships.1 //@cromModel/@elements.2/@relationships.2"> + <attributes name="id" type="//@cromModel/@elements.6" /> + <attributes name="name" type="//@cromModel/@elements.3" /> + <operations name="addSavingsAccount" type="//@cromModel/@elements.7" /> + <operations name="addCheckingsAccount" type="//@cromModel/@elements.7" /> + <operations name="getAccounts" type="//@cromModel/@elements.6" /> + <operations name="getBalance" type="//@cromModel/@elements.8"> + <params name="id" type="//@cromModel/@elements.6" /> + </operations> + <operations name="transfer" type="//@cromModel/@elements.7"> + <params name="from" type="//@cromModel/@elements.6" /> + <params name="to" type="//@cromModel/@elements.6" /> + </operations> + <operations name="sendAccountStatement" type="//@cromModel/@elements.7"> + <params name="id" type="//@cromModel/@elements.6" /> + </operations> + </role> + </parts> + <parts lower="1"> + <role xsi:type="crom_l1_composed:RoleType" name="Consultant" + outgoing="//@cromModel/@elements.2/@relationships.0"> + <attributes name="Phone" type="//@cromModel/@elements.3" /> + <operations name="consult"> + <params name="id" type="//@cromModel/@elements.6" /> + </operations> + </role> + </parts> + <parts> + <role xsi:type="crom_l1_composed:RoleType" name="Transaction"> + <attributes name="execution" type="//@cromModel/@elements.10" /> + <operations name="execute" type="//@cromModel/@elements.7" /> + <operations name="isExecuted" type="//@cromModel/@elements.7" /> + </role> + </parts> + <parts> + <role xsi:type="crom_l1_composed:RoleGroup" name="RoleGroup" + lower="1" upper="1"> + <elements xsi:type="crom_l1_composed:RoleType" name="CheckingsAccount" + incoming="//@cromModel/@elements.2/@relationships.1"> + <attributes name="limit" type="//@cromModel/@elements.8" /> + <operations name="decrease"> + <params name="amount" type="//@cromModel/@elements.8" /> + </operations> + <operations name="getLimit" type="//@cromModel/@elements.8" /> + <operations name="setLimit"> + <params name="limit" type="//@cromModel/@elements.8" /> + </operations> + </elements> + <elements xsi:type="crom_l1_composed:RoleType" name="SavingsAccount" + incoming="//@cromModel/@elements.2/@relationships.2"> + <attributes name="transactionFee" type="//@cromModel/@elements.9" /> + <operations name="decrease"> + <params name="amount" type="//@cromModel/@elements.8" /> + </operations> + </elements> + </role> + </parts> + <relationships name="advices"> + <first holder="//@cromModel/@elements.2/@parts.1/@role" /> + <second lower="1" holder="//@cromModel/@elements.2/@parts.0/@role" /> + </relationships> + <relationships name="own_ca"> + <first lower="1" upper="1" + holder="//@cromModel/@elements.2/@parts.0/@role" /> + <second holder="//@cromModel/@elements.2/@parts.3/@role/@elements.0" /> + </relationships> + <relationships name="own_sa"> + <first lower="1" holder="//@cromModel/@elements.2/@parts.0/@role" /> + <second holder="//@cromModel/@elements.2/@parts.3/@role/@elements.1" /> + </relationships> + </elements> + <elements xsi:type="crom_l1_composed:DataType" name="String" /> + <elements xsi:type="crom_l1_composed:CompartmentType" name="Transaction"> + <attributes name="creationtime" type="//@cromModel/@elements.10" /> + <attributes name="amount" type="//@cromModel/@elements.8" /> + <operations name="bind" type="//@cromModel/@elements.7"> + <params name="source" type="//@cromModel/@elements.5" /> + <params name="target" type="//@cromModel/@elements.5" /> + </operations> + <operations name="execute" type="//@cromModel/@elements.7" /> + <parts lower="2" upper="2"> + <role xsi:type="crom_l1_composed:RoleGroup" name="RoleGroup" + lower="1" upper="1"> + <elements xsi:type="crom_l1_composed:RoleType" name="Source" + outgoing="//@cromModel/@elements.4/@relationships.0"> + <operations name="withdraw"> + <params name="amount" type="//@cromModel/@elements.8" /> + </operations> + </elements> + <elements xsi:type="crom_l1_composed:RoleType" name="Target" + incoming="//@cromModel/@elements.4/@relationships.0"> + <operations name="deposite"> + <params name="amount" type="//@cromModel/@elements.8" /> + </operations> + </elements> + </role> + </parts> + <relationships name="trans"> + <first lower="1" upper="1" + holder="//@cromModel/@elements.4/@parts.0/@role/@elements.0" /> + <second lower="1" upper="1" + holder="//@cromModel/@elements.4/@parts.0/@role/@elements.1" /> + </relationships> + <constraints xsi:type="crom_l1_composed:Irreflexive" + relation="//@cromModel/@elements.4/@relationships.0" /> + </elements> + <elements xsi:type="crom_l1_composed:NaturalType" name="Account"> + <attributes name="id" type="//@cromModel/@elements.6" /> + <attributes name="balance" type="//@cromModel/@elements.8" /> + <operations name="getBalance" type="//@cromModel/@elements.8" /> + <operations name="getId" type="//@cromModel/@elements.6" /> + <operations name="increase"> + <params name="amount" type="//@cromModel/@elements.8" /> + </operations> + <operations name="decrease"> + <params name="amount" type="//@cromModel/@elements.8" /> + </operations> + </elements> + <elements xsi:type="crom_l1_composed:DataType" name="Integer" /> + <elements xsi:type="crom_l1_composed:DataType" name="Boolean" /> + <elements xsi:type="crom_l1_composed:DataType" name="Money" /> + <elements xsi:type="crom_l1_composed:DataType" name="Double" /> + <elements xsi:type="crom_l1_composed:DataType" name="DateTime" /> + <relations xsi:type="crom_l1_composed:Fulfillment" + filled="//@cromModel/@elements.2/@parts.1/@role" filler="//@cromModel/@elements.0" /> + <relations xsi:type="crom_l1_composed:Fulfillment" + filled="//@cromModel/@elements.2/@parts.0/@role" filler="//@cromModel/@elements.0" /> + <relations xsi:type="crom_l1_composed:Fulfillment" + filled="//@cromModel/@elements.2/@parts.0/@role" filler="//@cromModel/@elements.1" /> + <relations xsi:type="crom_l1_composed:Fulfillment" + filled="//@cromModel/@elements.2/@parts.2/@role" filler="//@cromModel/@elements.4" /> + <relations xsi:type="crom_l1_composed:Fulfillment" + filled="//@cromModel/@elements.2/@parts.3/@role" filler="//@cromModel/@elements.5" /> + <relations xsi:type="crom_l1_composed:Fulfillment" + filled="//@cromModel/@elements.4/@parts.0/@role" filler="//@cromModel/@elements.5" /> + </cromModel> +</ts:TestCase> diff --git a/org.framed.orm.transformation.test/testcases1/RelationshipImplication/relationshipImplication_test_1.xmi b/org.framed.orm.transformation.test/testcases1/RelationshipImplication/relationshipImplication_test_1.xmi index 94c0a440..f6779d93 100644 --- a/org.framed.orm.transformation.test/testcases1/RelationshipImplication/relationshipImplication_test_1.xmi +++ b/org.framed.orm.transformation.test/testcases1/RelationshipImplication/relationshipImplication_test_1.xmi @@ -15,57 +15,41 @@ <firstSegment /> <secondSegment /> <model> - <elements xsi:type="org.framed.orm.model:Shape" name="RT1" - incomingRelations="//@framedModel/@elements.1/@model/@elements.6" - outgoingRelations="//@framedModel/@elements.1/@model/@elements.3" - type="RoleType"> - <firstSegment /> - <secondSegment /> - <description name="*" /> - </elements> - <elements xsi:type="org.framed.orm.model:Shape" name="RT2" - incomingRelations="//@framedModel/@elements.1/@model/@elements.3" - outgoingRelations="//@framedModel/@elements.1/@model/@elements.6" - type="RoleType"> - <firstSegment /> - <secondSegment /> - <description name="*" /> - </elements> - <elements xsi:type="org.framed.orm.model:Shape" name="" - incomingRelations="//@framedModel/@elements.1/@model/@elements.8" - type="RelationshipShapeChild"> - </elements> - <elements xsi:type="org.framed.orm.model:Relation" name="rst" - type="Relationship" target="//@framedModel/@elements.1/@model/@elements.1" - source="//@framedModel/@elements.1/@model/@elements.0" - connectionAnchor="//@framedModel/@elements.1/@model/@elements.2"> - <sourceLabel name="1" /> - <targetLabel name="1..*" /> - </elements> - <elements xsi:type="org.framed.orm.model:Shape" name="" - type="RelationshipShapeChild"> - </elements> - <elements xsi:type="org.framed.orm.model:Shape" name="" - outgoingRelations="//@framedModel/@elements.1/@model/@elements.8" - type="RelationshipShapeChild"> - </elements> - <elements xsi:type="org.framed.orm.model:Relation" name="subrst" - type="Relationship" target="//@framedModel/@elements.1/@model/@elements.0" - source="//@framedModel/@elements.1/@model/@elements.1" - connectionAnchor="//@framedModel/@elements.1/@model/@elements.5"> - <sourceLabel name="*" /> - <targetLabel name="0..1" /> - </elements> - <elements xsi:type="org.framed.orm.model:Shape" name="" - type="RelationshipShapeChild"> - </elements> - <elements xsi:type="org.framed.orm.model:Relation" type="RelationshipImplication" - target="//@framedModel/@elements.1/@model/@elements.2" source="//@framedModel/@elements.1/@model/@elements.5" /> - </model> - </elements> - <elements xsi:type="org.framed.orm.model:Relation" type="Fulfillment" - target="//@framedModel/@elements.1" source="//@framedModel/@elements.0" - referencedRoles="//@framedModel/@elements.1/@model/@elements.0 //@framedModel/@elements.1/@model/@elements.1" /> + <elements xsi:type="org.framed.iorm.model:Shape" name="NT" outgoingRelations="/1/@elements.2" type="NaturalType"> + <firstSegment/> + <secondSegment/> + </elements> + <elements xsi:type="org.framed.iorm.model:Shape" name="CT" incomingRelations="/1/@elements.2"> + <firstSegment/> + <secondSegment/> + <model> + <elements xsi:type="org.framed.iorm.model:Shape" name="roleType" incomingRelations="/1/@elements.1/@model/@elements.3" outgoingRelations="/1/@elements.1/@model/@elements.2" type="RoleType"> + <firstSegment/> + <secondSegment/> + <description name="*"/> + </elements> + <elements xsi:type="org.framed.iorm.model:Shape" name="roleType1" incomingRelations="/1/@elements.1/@model/@elements.2" outgoingRelations="/1/@elements.1/@model/@elements.3" type="RoleType"> + <firstSegment/> + <secondSegment/> + <description name="*"/> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="rst" incomingRelations="/1/@elements.1/@model/@elements.4" type="Relationship" target="/1/@elements.1/@model/@elements.1" source="/1/@elements.1/@model/@elements.0"> + <sourceLabel name="1"/> + <targetLabel name="1..*"/> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" name="subrst" outgoingRelations="/1/@elements.1/@model/@elements.4" type="Relationship" target="/1/@elements.1/@model/@elements.0" source="/1/@elements.1/@model/@elements.1"> + <sourceLabel name="*"/> + <targetLabel name="0..1"/> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" type="RelationshipImplication" target="/1/@elements.1/@model/@elements.2" source="/1/@elements.1/@model/@elements.3"/> + </model> + </elements> + <elements xsi:type="org.framed.iorm.model:Relation" type="Fulfillment" target="/1/@elements.1" source="/1/@elements.0" referencedRoles="/1/@elements.1/@model/@elements.0 /1/@elements.1/@model/@elements.1"/> + </model> + </elements> + <elements xsi:type="org.framed.orm.model:Relation" type="Fulfillment" + target="//@framedModel/@elements.1" source="//@framedModel/@elements.0" + referencedRoles="//@framedModel/@elements.1/@model/@elements.0 //@framedModel/@elements.1/@model/@elements.1" /> <framedConfiguration> <features/> <features name="Role_Types"/> @@ -107,31 +91,25 @@ </framedConfiguration> </framedModel> <cromModel> - <elements xsi:type="crom_l1_composed:NaturalType" name="NT" /> - <elements xsi:type="crom_l1_composed:CompartmentType" name="CT"> - <parts> - <role xsi:type="crom_l1_composed:RoleType" name="RT1" - incoming="//@cromModel/@elements.1/@relationships.1" outgoing="//@cromModel/@elements.1/@relationships.0" /> - </parts> - <parts> - <role xsi:type="crom_l1_composed:RoleType" name="RT2" - incoming="//@cromModel/@elements.1/@relationships.0" outgoing="//@cromModel/@elements.1/@relationships.1" /> - </parts> - <relationships name="rst"> - <first lower="1" upper="1" - holder="//@cromModel/@elements.1/@parts.0/@role" /> - <second lower="1" holder="//@cromModel/@elements.1/@parts.1/@role" /> - </relationships> - <relationships name="subrst"> - <first holder="//@cromModel/@elements.1/@parts.1/@role" /> - <second upper="1" holder="//@cromModel/@elements.1/@parts.0/@role" /> - </relationships> - <constraints xsi:type="crom_l1_composed:RelationshipImplication" - first="//@cromModel/@elements.1/@relationships.1" second="//@cromModel/@elements.1/@relationships.0" /> - </elements> - <relations xsi:type="crom_l1_composed:Fulfillment" - filled="//@cromModel/@elements.1/@parts.0/@role" filler="//@cromModel/@elements.0" /> - <relations xsi:type="crom_l1_composed:Fulfillment" - filled="//@cromModel/@elements.1/@parts.1/@role" filler="//@cromModel/@elements.0" /> + <elements xsi:type="crom_l1_composed:NaturalType" name="NT"/> + <elements xsi:type="crom_l1_composed:CompartmentType" name="CT"> + <parts> + <role xsi:type="crom_l1_composed:RoleType" name="roleType" incoming="//@elements.1/@relationships.1" outgoing="//@elements.1/@relationships.0"/> + </parts> + <parts> + <role xsi:type="crom_l1_composed:RoleType" name="roleType1" incoming="//@elements.1/@relationships.0" outgoing="//@elements.1/@relationships.1"/> + </parts> + <relationships name="rst"> + <first lower="1" upper="1" holder="//@elements.1/@parts.0/@role"/> + <second lower="1" holder="//@elements.1/@parts.1/@role"/> + </relationships> + <relationships name="subrst"> + <first holder="//@elements.1/@parts.1/@role"/> + <second upper="1" holder="//@elements.1/@parts.0/@role"/> + </relationships> + <constraints xsi:type="crom_l1_composed:RelationshipImplication" first="//@elements.1/@relationships.1" second="//@elements.1/@relationships.0"/> + </elements> + <relations xsi:type="crom_l1_composed:Fulfillment" filled="//@elements.1/@parts.0/@role" filler="//@elements.0"/> + <relations xsi:type="crom_l1_composed:Fulfillment" filled="//@elements.1/@parts.1/@role" filler="//@elements.0"/> </cromModel> </ts:TestCase> diff --git a/org.framed.orm.transformation.test/testcases1/integration/bank_example_test.xmi b/org.framed.orm.transformation.test/testcases1/integration/bank_example_test.xmi index 8b71b5d2..c0a075c4 100644 --- a/org.framed.orm.transformation.test/testcases1/integration/bank_example_test.xmi +++ b/org.framed.orm.transformation.test/testcases1/integration/bank_example_test.xmi @@ -2,10 +2,10 @@ <ts:TestCase xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:crom_l1_composed="platform:/resource/org.rosi.crom.metamodel/" - xmlns:org.framed.orm.model="http://orm/1.0" xmlns:ts="http://org.framed/testmodel" + xmlns:org.framed.iorm.model="http://iorm/1.0" xmlns:ts="http://org.framed/testmodel" title="BankExample Test" description="BankExample Test"> <framedModel> - <elements xsi:type="org.framed.orm.model:Shape" name="Person" + <elements xsi:type="org.framed.iorm.model:Shape" name="Person" outgoingRelations="//@framedModel/@elements.11" type="NaturalType"> <firstSegment> <elements name="title : String" /> @@ -14,7 +14,7 @@ <elements name="address : String" /> </firstSegment> </elements> - <elements xsi:type="org.framed.orm.model:Shape" name="Company" + <elements xsi:type="org.framed.iorm.model:Shape" name="Company" outgoingRelations="//@framedModel/@elements.12" type="NaturalType"> <firstSegment> <elements name="name : String" /> @@ -23,7 +23,7 @@ <elements name="POBox : String" /> </firstSegment> </elements> - <elements xsi:type="org.framed.orm.model:Shape" name="Bank" + <elements xsi:type="org.framed.iorm.model:Shape" name="Bank" incomingRelations="//@framedModel/@elements.11 //@framedModel/@elements.12 //@framedModel/@elements.13 //@framedModel/@elements.15 //@framedModel/@elements.14"> <firstSegment> <elements name="name : String" /> @@ -32,7 +32,7 @@ <elements name="executeTransactions()" /> </secondSegment> <model> - <elements xsi:type="org.framed.orm.model:Shape" name="Customer" + <elements xsi:type="org.framed.iorm.model:Shape" name="Customer" incomingRelations="//@framedModel/@elements.2/@model/@elements.2" outgoingRelations="//@framedModel/@elements.2/@model/@elements.5 //@framedModel/@elements.2/@model/@elements.6" type="RoleType"> @@ -50,7 +50,7 @@ </secondSegment> <description name="0..*" /> </elements> - <elements xsi:type="org.framed.orm.model:Shape" name="Consultant" + <elements xsi:type="org.framed.iorm.model:Shape" name="Consultant" outgoingRelations="//@framedModel/@elements.2/@model/@elements.2" type="RoleType"> <firstSegment> @@ -61,13 +61,13 @@ </secondSegment> <description name="1..*" /> </elements> - <elements xsi:type="org.framed.orm.model:Relation" name="advices" + <elements xsi:type="org.framed.iorm.model:Relation" name="advices" type="Relationship" target="//@framedModel/@elements.2/@model/@elements.0" source="//@framedModel/@elements.2/@model/@elements.1"> <sourceLabel name="0..*" /> <targetLabel name="1..*" /> </elements> - <elements xsi:type="org.framed.orm.model:Shape" name="Transaction" + <elements xsi:type="org.framed.iorm.model:Shape" name="Transaction" type="RoleType"> <firstSegment> <elements name="execution : DateTime" /> @@ -78,10 +78,10 @@ </secondSegment> <description name="0..*" /> </elements> - <elements xsi:type="org.framed.orm.model:Shape" name="RoleGroup (1..1)" + <elements xsi:type="org.framed.iorm.model:Shape" name="RoleGroup (1..1)" type="RoleGroup"> <model> - <elements xsi:type="org.framed.orm.model:Shape" name="CheckingsAccount" + <elements xsi:type="org.framed.iorm.model:Shape" name="CheckingsAccount" incomingRelations="//@framedModel/@elements.2/@model/@elements.5" type="RoleType"> <firstSegment> @@ -93,7 +93,7 @@ <elements name="setLimit(limit : Money) " /> </secondSegment> </elements> - <elements xsi:type="org.framed.orm.model:Shape" name="SavingsAccount" + <elements xsi:type="org.framed.iorm.model:Shape" name="SavingsAccount" incomingRelations="//@framedModel/@elements.2/@model/@elements.6" type="RoleType"> <firstSegment> @@ -106,14 +106,14 @@ </model> <description name="0..*" /> </elements> - <elements xsi:type="org.framed.orm.model:Relation" name="own_ca" + <elements xsi:type="org.framed.iorm.model:Relation" name="own_ca" type="Relationship" target="//@framedModel/@elements.2/@model/@elements.4/@model/@elements.0" source="//@framedModel/@elements.2/@model/@elements.0"> <sourceLabel name="1" /> <targetLabel name="0..*" /> </elements> - <elements xsi:type="org.framed.orm.model:Relation" name="own_sa" + <elements xsi:type="org.framed.iorm.model:Relation" name="own_sa" type="Relationship" target="//@framedModel/@elements.2/@model/@elements.4/@model/@elements.1" source="//@framedModel/@elements.2/@model/@elements.0"> @@ -122,9 +122,9 @@ </elements> </model> </elements> - <elements xsi:type="org.framed.orm.model:Shape" name="String" + <elements xsi:type="org.framed.iorm.model:Shape" name="String" type="DataType" /> - <elements xsi:type="org.framed.orm.model:Shape" name="Transaction" + <elements xsi:type="org.framed.iorm.model:Shape" name="Transaction" outgoingRelations="//@framedModel/@elements.13"> <firstSegment> <elements name="creationtime : DateTime" /> @@ -135,24 +135,24 @@ <elements name="execute() : Boolean" /> </secondSegment> <model> - <elements xsi:type="org.framed.orm.model:Shape" name="RoleGroup (1..1)" + <elements xsi:type="org.framed.iorm.model:Shape" name="RoleGroup (1..1)" type="RoleGroup"> <model> - <elements xsi:type="org.framed.orm.model:Shape" name="Source" + <elements xsi:type="org.framed.iorm.model:Shape" name="Source" outgoingRelations="//@framedModel/@elements.4/@model/@elements.0/@model/@elements.2 //@framedModel/@elements.4/@model/@elements.0/@model/@elements.3" type="RoleType"> <secondSegment> <elements name="withdraw(amount:Money)" /> </secondSegment> </elements> - <elements xsi:type="org.framed.orm.model:Shape" name="Target" + <elements xsi:type="org.framed.iorm.model:Shape" name="Target" incomingRelations="//@framedModel/@elements.4/@model/@elements.0/@model/@elements.2 //@framedModel/@elements.4/@model/@elements.0/@model/@elements.3" type="RoleType"> <secondSegment> <elements name="deposite(amount:Money)" /> </secondSegment> </elements> - <elements xsi:type="org.framed.orm.model:Relation" name="trans" + <elements xsi:type="org.framed.iorm.model:Relation" name="trans" type="Relationship" target="//@framedModel/@elements.4/@model/@elements.0/@model/@elements.1" source="//@framedModel/@elements.4/@model/@elements.0/@model/@elements.0" @@ -160,7 +160,7 @@ <sourceLabel name="1" /> <targetLabel name="1" /> </elements> - <elements xsi:type="org.framed.orm.model:Relation" name="" + <elements xsi:type="org.framed.iorm.model:Relation" name="" type="Irreflexive" target="//@framedModel/@elements.4/@model/@elements.0/@model/@elements.1" source="//@framedModel/@elements.4/@model/@elements.0/@model/@elements.0" @@ -170,7 +170,7 @@ </elements> </model> </elements> - <elements xsi:type="org.framed.orm.model:Shape" name="Account" + <elements xsi:type="org.framed.iorm.model:Shape" name="Account" outgoingRelations="//@framedModel/@elements.14 //@framedModel/@elements.15" type="NaturalType"> <firstSegment> @@ -184,29 +184,29 @@ <elements name="decrease(amount : Money)" /> </secondSegment> </elements> - <elements xsi:type="org.framed.orm.model:Shape" name="Integer" + <elements xsi:type="org.framed.iorm.model:Shape" name="Integer" type="DataType" /> - <elements xsi:type="org.framed.orm.model:Shape" name="Boolean" + <elements xsi:type="org.framed.iorm.model:Shape" name="Boolean" type="DataType" /> - <elements xsi:type="org.framed.orm.model:Shape" name="Money" + <elements xsi:type="org.framed.iorm.model:Shape" name="Money" type="DataType" /> - <elements xsi:type="org.framed.orm.model:Shape" name="Double" + <elements xsi:type="org.framed.iorm.model:Shape" name="Double" type="DataType" /> - <elements xsi:type="org.framed.orm.model:Shape" name="DateTime" + <elements xsi:type="org.framed.iorm.model:Shape" name="DateTime" type="DataType" /> - <elements xsi:type="org.framed.orm.model:Relation" name="" + <elements xsi:type="org.framed.iorm.model:Relation" name="" type="Fulfillment" target="//@framedModel/@elements.2" source="//@framedModel/@elements.0" referencedRoles="//@framedModel/@elements.2/@model/@elements.1 //@framedModel/@elements.2/@model/@elements.0" /> - <elements xsi:type="org.framed.orm.model:Relation" name="" + <elements xsi:type="org.framed.iorm.model:Relation" name="" type="Fulfillment" target="//@framedModel/@elements.2" source="//@framedModel/@elements.1" referencedRoles="//@framedModel/@elements.2/@model/@elements.0" /> - <elements xsi:type="org.framed.orm.model:Relation" name="" + <elements xsi:type="org.framed.iorm.model:Relation" name="" type="Fulfillment" target="//@framedModel/@elements.2" source="//@framedModel/@elements.4" referencedRoles="//@framedModel/@elements.2/@model/@elements.3" /> - <elements xsi:type="org.framed.orm.model:Relation" type="Fulfillment" + <elements xsi:type="org.framed.iorm.model:Relation" type="Fulfillment" target="//@framedModel/@elements.2" source="//@framedModel/@elements.5" referencedRoles="//@framedModel/@elements.2/@model/@elements.4" /> - <elements xsi:type="org.framed.orm.model:Relation" type="Fulfillment" + <elements xsi:type="org.framed.iorm.model:Relation" type="Fulfillment" target="//@framedModel/@elements.2" source="//@framedModel/@elements.5" referencedRoles="//@framedModel/@elements.4/@model/@elements.0" /> <framedConfiguration> @@ -258,7 +258,7 @@ </elements> <elements xsi:type="crom_l1_composed:NaturalType" name="Company"> <attributes name="name" type="//@cromModel/@elements.3" /> - <attributes name="legalForm" type="//@cromModel/@elements.3" /> + <attributes name="legalFiorm" type="//@cromModel/@elements.3" /> <attributes name="addresses" type="//@cromModel/@elements.3" /> <attributes name="POBox" type="//@cromModel/@elements.3" /> </elements> -- GitLab