Skip to content

Commit 7379b22

Browse files
authored
Merge pull request #606 from Systems-Modeling/ST6RI-805
ST6RI-805 Make adapter handling more robust in case of multiple inheritance
2 parents 945483c + 45563f0 commit 7379b22

23 files changed

Lines changed: 1488 additions & 3 deletions

org.omg.sysml.interactive.tests/.classpath

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
<attribute name="maven.pomderived" value="true"/>
1616
</attributes>
1717
</classpathentry>
18+
<classpathentry kind="src" path="resources"/>
1819
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
1920
<attributes>
2021
<attribute name="maven.pomderived" value="true"/>
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
eclipse.preferences.version=1
2+
encoding/<project>=UTF-8
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
source.. = src/
1+
source.. = src/,\
2+
resources/
23
output.. = target/classes
34
bin.includes = META-INF/,\
45
.
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
true,checkLifeClassLifeSpecialization,LifeClass,Occurrences::Life,Package,OwningMembership
2+
true,checkItemDefinitionSpecialization,ItemDefinition,Items::Item,Package,OwningMembership
3+
true,checkPartDefinitionSpecialization,PartDefinition,Parts::Part,Package,OwningMembership
4+
true,checkPortDefinitionSpecialization,PortDefinition,Ports::Port,Package,OwningMembership
5+
true,checkConnectionDefinitionSpecialization,ConnectionDefinition,Connections::Connection,Package,OwningMembership
6+
false,checkFlowConnectionDefinitionSpecialization,FlowConnectionDefinition,Connections::MessageConnection,Package,OwningMembership
7+
true,checkInterfaceDefinitionSpecialization,InterfaceDefinition,Interfaces::Interface,Package,OwningMembership
8+
true,checkAllocationDefinitionSpecialization,AllocationDefinition,Allocations::Allocation,Package,OwningMembership
9+
true,checkActionDefinitionSpecialization,ActionDefinition,Actions::Action,Package,OwningMembership
10+
true,checkStateDefinitionSpecialization,StateDefinition,States::StateAction,Package,OwningMembership
11+
true,checkCalculationDefinitionSpecialization,CalculationDefinition,Calculations::Calculation,Package,OwningMembership
12+
true,checkConstraintDefinitionSpecialization,ConstraintDefinition,Constraints::ConstraintCheck,Package,OwningMembership
13+
true,checkRequirementDefinitionSpecialization,RequirementDefinition,Requirements::RequirementCheck,Package,OwningMembership
14+
true,checkConcernDefinitionSpecialization,ConcernDefinition,Requirements::ConcernCheck,Package,OwningMembership
15+
true,checkCaseDefinitionSpecialization,CaseDefinition,Cases::Case,Package,OwningMembership
16+
true,checkAnalysisCaseDefinitionSpecialization,AnalysisCaseDefinition,AnalysisCases::AnalysisCase,Package,OwningMembership
17+
true,checkVerificationCaseDefinitionSpecialization,VerificationCaseDefinition,VerificationCases::VerificationCase,Package,OwningMembership
18+
true,checkUseCaseDefinitionSpecialization,UseCaseDefinition,UseCases::UseCase,Package,OwningMembership
19+
true,checkViewDefinitionSpecialization,ViewDefinition,Views::View,Package,OwningMembership
20+
true,checkViewpointDefinitionSpecialization,ViewpointDefinition,Views::ViewpointCheck,Package,OwningMembership
21+
true,checkRenderingDefinitionSpecialization,RenderingDefinition,Views::Rendering,Package,OwningMembership
22+
true,checkMetadataDefinitionSpecialization,MetadataDefinition,Metadata::MetadataItem,Package,OwningMembership
23+
true,checkAttributeUsageSpecialization,AttributeUsage,Base::dataValues,Package,OwningMembership
24+
true,checkEventOccurrenceSpecialization,EventOccurrenceUsage,Occurrences::Occurrence::timeEnclosedOccurrences,OccurrenceDefinition,FeatureMembership
25+
true,checkEventOccurrenceSpecialization,EventOccurrenceUsage,Occurrences::Occurrence::timeEnclosedOccurrences,OccurrenceUsage,FeatureMembership
26+
true,checkOccurrenceUsageSpecialization,OccurrenceUsage,Occurrences::occurrences,Package,OwningMembership
27+
true,checkOccurrenceUsageSuboccurrencesSpecialization,OccurrenceUsage,Occurrences::Occurrence::suboccurrences,OccurrenceUsage,FeatureMembership
28+
true,checkOccurrenceUsageSuboccurrencesSpecialization,OccurrenceUsage,Occurrences::Occurrence::suboccurrences,Class,FeatureMembership
29+
true,checkItemUsageSpecialization,ItemUsage,Items::items,Package,OwningMembership
30+
true,checkItemUsageSubitemSpecialization,ItemUsage,Items::Item::subitems,ItemUsage,FeatureMembership
31+
true,checkItemUsageSubitemSpecialization,ItemUsage,Items::Item::subitems,ItemDefinition,FeatureMembership
32+
true,checkPartUsageSpecialization,PartUsage,Parts::parts,Package,OwningMembership
33+
true,checkPartUsageSubpartSpecialization,PartUsage,Items::Item::subparts,ItemUsage,FeatureMembership
34+
true,checkPartUsageSubpartSpecialization,PartUsage,Items::Item::subparts,ItemDefinition,FeatureMembership
35+
true,checkPartUsageActorSpecialization,PartUsage,Requirements::RequirementCheck::actors,RequirementDefinition,ActorMembership
36+
true,checkPartUsageActorSpecialization,PartUsage,Requirements::RequirementCheck::actors,RequirementUsage,ActorMembership
37+
true,checkPartUsageActorSpecialization,PartUsage,Requirements::RequirementCheck::stakeholders,RequirementDefinition,StakeholderMembership
38+
true,checkPartUsageStakeholderSpecialization,PartUsage,Requirements::RequirementCheck::stakeholders,RequirementUsage,StakeholderMembership
39+
true,checkPartUsageActorSpecialization,PartUsage,Cases::Case::actors,CaseDefinition,ActorMembership
40+
true,checkPartUsageActorSpecialization,PartUsage,Cases::Case::actors,CaseUsage,ActorMembership
41+
true,checkPortUsageSpecialization,PortUsage,Ports::ports,Package,OwningMembership
42+
true,checkPortSubportSpecialization,PortUsage,Ports::Port::subports,PortUsage,FeatureMembership
43+
true,checkPortSubportSpecialization,PortUsage,Ports::Port::subports,PortDefinition,FeatureMembership
44+
true,checkConnectionUsageSpecialization,ConnectionUsage,Connections::connections,Package,OwningMembership
45+
true,checkSuccessionFlowConnectionUsageSpecialization,SuccessionFlowConnectionUsage,Connections::successionFlowConnections,Package,OwningMembership
46+
true,checkInterfaceUsageSpecialization,InterfaceUsage,Interfaces::interfaces,Package,OwningMembership
47+
true,checkAllocationUsageSpecialization,AllocationUsage,Allocations::allocations,Package,OwningMembership
48+
true,checkActionUsageSpecialization,ActionUsage,Actions::actions,Package,OwningMembership
49+
true,checkActionUsageSubactionSpecialization,ActionUsage,Actions::Action::subactions,ActionDefinition,FeatureMembership
50+
true,checkActionUsageSubactionSpecialization,ActionUsage,Actions::Action::subactions,ActionUsage,FeatureMembership
51+
true,checkActionUsageOwnedActionSpecialization,ActionUsage,Parts::Part::ownedActions,PartUsage,FeatureMembership
52+
true,checkActionUsageOwnedActionSpecialization,ActionUsage,Parts::Part::ownedActions,PartDefinition,FeatureMembership
53+
true,checkJoinNodeSpecialization,JoinNode,Actions::Action::joins,ActionDefinition,FeatureMembership
54+
true,checkForkNodeSpecialization,ForkNode,Actions::Action::forks,ActionDefinition,FeatureMembership
55+
true,checkMergeNodeSpecialization,MergeNode,Actions::Action::merges,ActionDefinition,FeatureMembership
56+
true,checkDecisionNodeSpecialization,DecisionNode,Actions::Action::decisions,ActionDefinition,FeatureMembership
57+
true,checkSendActionUsageSubactionSpecialization,SendActionUsage,Actions::Action::sendSubactions,ActionUsage,FeatureMembership
58+
true,checkAcceptActionUsageSubactionSpecialization,AcceptActionUsage,Actions::Action::acceptSubactions,ActionUsage,FeatureMembership
59+
true,checkIfActionUsageSubactionSpecialization,IfActionUsage,Actions::Action::ifSubactions,ActionUsage,FeatureMembership
60+
true,checkWhileLoopActionUsageSubactionSpecialization,WhileLoopActionUsage,Actions::Action::whileLoops,ActionUsage,FeatureMembership
61+
true,checkForLoopActionUsageSubactionSpecialization,ForLoopActionUsage,Actions::Action::forLoops,ActionUsage,FeatureMembership
62+
true,checkPerformActionUsageSpecialization,PerformActionUsage,Parts::Part::performedActions,PartUsage,FeatureMembership
63+
true,checkPerformActionUsageSpecialization,PerformActionUsage,Parts::Part::performedActions,PartDefinition,FeatureMembership
64+
true,checkStateUsageSpecialization,StateUsage,States::stateActions,Package,OwningMembership
65+
true,checkStateUsageExclusiveStateSpecialization,StateUsage,States::StateAction::exclusiveStates,StateUsage,FeatureMembership
66+
true,checkTransitionUsageSpecialization,TransitionUsage,Actions::transitionActions,Package,OwningMembership
67+
true,checkTransitionUsageStateSpecialization,TransitionUsage,States::StateAction::stateTransitions,StateDefinition,FeatureMembership
68+
true,checkTransitionUsageStateSpecialization,TransitionUsage,States::StateAction::stateTransitions,StateUsage,FeatureMembership
69+
true,checkTransitionUsageActionSpecialization,TransitionUsage,Actions::Action::decisionTransitions,ActionUsage,FeatureMembership
70+
true,checkTransitionUsageActionSpecialization,TransitionUsage,Actions::Action::decisionTransitions,ActionDefinition,FeatureMembership
71+
true,checkCalculationUsageSpecialization,CalculationUsage,Calculations::calculations,Package,OwningMembership
72+
true,checkCalculationUsageSubcalculationSpecialization,CalculationUsage,Calculations::Calculation::subcalculations,CalculationUsage,FeatureMembership
73+
true,checkCalculationUsageSubcalculationSpecialization,CalculationUsage,Calculations::Calculation::subcalculations,CalculationDefinition,FeatureMembership
74+
true,checkConstraintUsageSpecialization,ConstraintUsage,Constraints::constraintChecks,Package,OwningMembership
75+
true,checkConstraintUsageCheckedConstraintSpecialization,ConstraintUsage,Items::Item::checkedConstraints,ItemUsage,FeatureMembership
76+
true,checkConstraintUsageCheckedConstraintSpecialization,ConstraintUsage,Items::Item::checkedConstraints,ItemDefinition,FeatureMembership
77+
true,checkRequirementUsageSpecialization,RequirementUsage,Requirements::requirementChecks,Package,OwningMembership
78+
true,checkRequirementUsageSubrequirementSpecialization,RequirementUsage,Requirements::RequirementCheck::subrequirements,RequirementDefinition,FeatureMembership
79+
true,checkRequirementUsageSubrequirementSpecialization,RequirementUsage,Requirements::RequirementCheck::subrequirements,RequirementUsage,FeatureMembership
80+
true,checkConcernUsageSpecialization,ConcernUsage,Requirements::concernChecks,Package,OwningMembership
81+
true,checkConcernUsageFramedConcernSpecialization,ConcernUsage,Requirements::RequirementCheck::concerns,PartUsage,FramedConcernMembership
82+
true,checkCaseUsageSpecialization,CaseUsage,Cases::cases,Package,OwningMembership
83+
true,checkCaseUsageSubcaseSpecialization,CaseUsage,Cases::Case::subcases,CaseUsage,FeatureMembership
84+
true,checkAnalysisCaseUsageSpecialization,AnalysisCaseUsage,AnalysisCases::analysisCases,Package,OwningMembership
85+
false,checkAnalysisCaseUsageSubAnalysisCaseSpecialization,AnalysisCaseUsage,AnalysisCases::AnalysisCase::subAnalysisCases,AnalysisCaseUsage,FeatureMembership
86+
false,checkAnalysisCaseUsageSubAnalysisCaseSpecialization,AnalysisCaseUsage,AnalysisCases::AnalysisCase::subAnalysisCases,AnalysisCaseDefinition,FeatureMembership
87+
true,checkVerificationCaseUsageSpecialization,VerificationCaseUsage,VerificationCases::verificationCases,Package,OwningMembership
88+
false,checkVerificationCaseUsageSubVerificationCaseSpecialization,VerificationCaseUsage,VerificationCases::VerificationCase::subVerificationCases,VerificationCaseUsage,FeatureMembership
89+
false,checkVerificationCaseUsageSubVerificationCaseSpecialization,VerificationCaseUsage,VerificationCases::VerificationCase::subVerificationCases,VerificationCaseDefinition,FeatureMembership
90+
true,checkUseCaseUsageSpecialization,UseCaseUsage,UseCases::useCases,Package,OwningMembership
91+
true,checkUseCaseUsageSubUseCaseSpecialization,UseCaseUsage,UseCases::UseCase::subUseCases,UseCaseUsage,FeatureMembership
92+
true,checkUseCaseUsageSubUseCaseSpecialization,UseCaseUsage,UseCases::UseCase::subUseCases,UseCaseDefinition,FeatureMembership
93+
false,checkIncludeUseCaseUsageSpecialization,IncludeUseCaseUsage,UseCases::UseCase::includedUseCases,UseCaseUsage,FeatureMembership
94+
false,checkIncludeUseCaseUsageSpecialization,IncludeUseCaseUsage,UseCases::UseCase::includedUseCases,UseCaseDefinition,FeatureMembership
95+
true,checkViewUsageSpecialization,ViewUsage,Views::views,Package,OwningMembership
96+
true,checkViewUsageSubviewSpecialization,ViewUsage,Views::View::subviews,ViewUsage,FeatureMembership
97+
true,checkViewUsageSubviewSpecialization,ViewUsage,Views::View::subviews,ViewDefinition,FeatureMembership
98+
false,checkViewpointUsageSpecialization,ViewpointUsage,Views::viewpoints,Package,OwningMembership
99+
true,checkViewpointUsageViewpointSatisfactionSpecialization,ViewpointUsage,Views::View::viewpointSatisfactions,ViewDefinition,FeatureMembership
100+
true,checkViewpointUsageViewpointSatisfactionSpecialization,ViewpointUsage,Views::View::viewpointSatisfactions,ViewUsage,FeatureMembership
101+
true,checkRenderingUsageSpecialization,RenderingUsage,Views::renderings,Package,OwningMembership
102+
true,checkRenderingUsageSubrenderingSpecialization,RenderingUsage,Views::Rendering::subrenderings,RenderingUsage,FeatureMembership
103+
true,checkRenderingUsageSubrenderingSpecialization,RenderingUsage,Views::Rendering::subrenderings,RenderingDefinition,FeatureMembership
104+
true,checkMetadataUsageSpecialization,MetadataUsage,Metadata::metadataItems,Package,OwningMembership
Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
/**
2+
* SysML 2 Pilot Implementation
3+
* Copyright (C) 2024 Model Driven Solutions, Inc.
4+
*
5+
* This program is free software: you can redistribute it and/or modify
6+
* it under the terms of the GNU Lesser General Public License as published by
7+
* the Free Software Foundation, either version 3 of the License, or
8+
* (at your option) any later version.
9+
*
10+
* This program is distributed in the hope that it will be useful,
11+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13+
* GNU Lesser General Public License for more details.
14+
*
15+
* You should have received a copy of the GNU Lesser General Public License
16+
* along with this program. If not, see <https://www.gnu.org/licenses/>.
17+
*
18+
* @license LGPL-3.0-or-later <http://spdx.org/licenses/LGPL-3.0-or-later>
19+
*
20+
* Contributors:
21+
* Laszlo Gati, MDS
22+
*/
23+
package org.omg.sysml.semantics.tests;
24+
25+
import static org.junit.Assert.assertTrue;
26+
27+
import org.junit.Test;
28+
import org.omg.sysml.lang.sysml.SysMLFactory;
29+
import org.omg.sysml.lang.sysml.Type;
30+
import org.omg.sysml.util.ElementUtil;
31+
32+
33+
/**
34+
* Semantic constraint tests for binary cases for "Implied Definition Subclassification Relationships" and
35+
* "Implied Usage Subsetting Relationships" (SysML v2 Specification, Tables 30 and 31)
36+
*/
37+
public class SysMLBinaryRelationTest extends SysMLSemanticTest {
38+
39+
@Test
40+
public void checkConnectionDefinitionBinarySpecialization() {
41+
var resource = getResource();
42+
var connectionDefinition = SysMLFactory.eINSTANCE.createConnectionDefinition();
43+
44+
resource.getContents().add(connectionDefinition);
45+
46+
addEndTo(connectionDefinition);
47+
addEndTo(connectionDefinition);
48+
49+
ElementUtil.transformAll(connectionDefinition, true);
50+
51+
assertTrue(specializes(connectionDefinition, "Connections::BinaryConnection"));
52+
}
53+
54+
@Test
55+
public void checkInterfaceDefinitionBinarySpecialization() {
56+
var resource = getResource();
57+
var interfaceDefinition = SysMLFactory.eINSTANCE.createInterfaceDefinition();
58+
59+
resource.getContents().add(interfaceDefinition);
60+
61+
addEndTo(interfaceDefinition);
62+
addEndTo(interfaceDefinition);
63+
64+
ElementUtil.transformAll(interfaceDefinition, true);
65+
66+
assertTrue(specializes(interfaceDefinition, "Interfaces::BinaryInterface"));
67+
}
68+
69+
@Test
70+
public void checkConnectionUsageBinarySpecialization() {
71+
var resource = getResource();
72+
var interfaceDefinition = SysMLFactory.eINSTANCE.createConnectionUsage();
73+
74+
resource.getContents().add(interfaceDefinition);
75+
76+
addEndTo(interfaceDefinition);
77+
addEndTo(interfaceDefinition);
78+
79+
ElementUtil.transformAll(interfaceDefinition, true);
80+
81+
assertTrue(specializes(interfaceDefinition, "Connections::binaryConnections"));
82+
}
83+
84+
@Test
85+
public void checkInterfaceUsageBinarySpecialization() {
86+
var resource = getResource();
87+
var interfaceDefinition = SysMLFactory.eINSTANCE.createInterfaceUsage();
88+
89+
resource.getContents().add(interfaceDefinition);
90+
91+
addEndTo(interfaceDefinition);
92+
addEndTo(interfaceDefinition);
93+
94+
ElementUtil.transformAll(interfaceDefinition, true);
95+
96+
assertTrue(specializes(interfaceDefinition, "Interfaces::binaryInterfaces"));
97+
}
98+
99+
@Test
100+
public void checkSuccessionFlowConnectionUsageSpecialization() {
101+
//Succession flow connection is always binary, no base case
102+
var resource = getResource();
103+
var interfaceDefinition = SysMLFactory.eINSTANCE.createSuccessionFlowConnectionUsage();
104+
105+
resource.getContents().add(interfaceDefinition);
106+
107+
addEndTo(interfaceDefinition);
108+
addEndTo(interfaceDefinition);
109+
110+
ElementUtil.transformAll(interfaceDefinition, true);
111+
112+
assertTrue(specializes(interfaceDefinition, "Connections::successionFlowConnections"));
113+
}
114+
115+
//Utility methods
116+
117+
public static void addEndTo(Type type) {
118+
var end = SysMLFactory.eINSTANCE.createFeature();
119+
var endMembership = SysMLFactory.eINSTANCE.createEndFeatureMembership();
120+
endMembership.setFeature(end);
121+
type.getOwnedRelationship().add(endMembership);
122+
}
123+
}

0 commit comments

Comments
 (0)