Skip to content

Commit 8fb0de9

Browse files
committed
ST6RI-805 Added specific test cases for SysML semantic constraints
- also added some more cases to parameterized tests
1 parent dbe7577 commit 8fb0de9

6 files changed

Lines changed: 664 additions & 86 deletions

File tree

org.omg.sysml.interactive.tests/resources/org/omg/sysml/semantics/tests/sysml-simple-specializations.csv

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,12 @@ checkItemUsageSubitemSpecialization,ItemUsage,Items::Item::subitems,ItemDefiniti
3232
checkPartUsageSpecialization,PartUsage,Parts::parts,Package,OwningMembership
3333
checkPartUsageSubpartSpecialization,PartUsage,Items::Item::subparts,ItemUsage,FeatureMembership
3434
checkPartUsageSubpartSpecialization,PartUsage,Items::Item::subparts,ItemDefinition,FeatureMembership
35+
checkPartUsageActorSpecialization,PartUsage,Requirements::RequirementCheck::actors,RequirementDefinition,ActorMembership
36+
checkPartUsageActorSpecialization,PartUsage,Requirements::RequirementCheck::actors,RequirementUsage,ActorMembership
37+
checkPartUsageActorSpecialization,PartUsage,Requirements::RequirementCheck::stakeholders,RequirementDefinition,StakeholderMembership
38+
checkPartUsageStakeholderSpecialization,PartUsage,Requirements::RequirementCheck::stakeholders,RequirementUsage,StakeholderMembership
39+
checkPartUsageActorSpecialization,PartUsage,Cases::Case::actors,CaseDefinition,ActorMembership
40+
checkPartUsageActorSpecialization,PartUsage,Cases::Case::actors,CaseUsage,ActorMembership
3541
checkPortUsageSpecialization,PortUsage,Ports::ports,Package,OwningMembership
3642
checkPortSubportSpecialization,PortUsage,Ports::Port::subports,PortUsage,FeatureMembership
3743
checkPortSubportSpecialization,PortUsage,Ports::Port::subports,PortDefinition,FeatureMembership
@@ -53,9 +59,15 @@ checkAcceptActionUsageSubactionSpecialization,AcceptActionUsage,Actions::Action:
5359
checkIfActionUsageSubactionSpecialization,IfActionUsage,Actions::Action::ifSubactions,ActionUsage,FeatureMembership
5460
checkWhileLoopActionUsageSubactionSpecialization,WhileLoopActionUsage,Actions::Action::whileLoops,ActionUsage,FeatureMembership
5561
checkForLoopActionUsageSubactionSpecialization,ForLoopActionUsage,Actions::Action::forLoops,ActionUsage,FeatureMembership
62+
checkPerformActionUsageSpecialization,PerformActionUsage,Parts::Part::performedActions,PartUsage,FeatureMembership
63+
checkPerformActionUsageSpecialization,PerformActionUsage,Parts::Part::performedActions,PartDefinition,FeatureMembership
5664
checkStateUsageSpecialization,StateUsage,States::stateActions,Package,OwningMembership
5765
checkStateUsageExclusiveStateSpecialization,StateUsage,States::StateAction::exclusiveStates,StateUsage,FeatureMembership
5866
checkTransitionUsageSpecialization,TransitionUsage,Actions::transitionActions,Package,OwningMembership
67+
checkTransitionUsageStateSpecialization,TransitionUsage,States::StateAction::stateTransitions,StateDefinition,FeatureMembership
68+
checkTransitionUsageStateSpecialization,TransitionUsage,States::StateAction::stateTransitions,StateUsage,FeatureMembership
69+
checkTransitionUsageActionSpecialization,TransitionUsage,Actions::Action::decisionTransitions,ActionUsage,FeatureMembership
70+
checkTransitionUsageActionSpecialization,TransitionUsage,Actions::Action::decisionTransitions,ActionDefinition,FeatureMembership
5971
checkCalculationUsageSpecialization,CalculationUsage,Calculations::calculations,Package,OwningMembership
6072
checkCalculationUsageSubcalculationSpecialization,CalculationUsage,Calculations::Calculation::subcalculations,CalculationUsage,FeatureMembership
6173
checkCalculationUsageSubcalculationSpecialization,CalculationUsage,Calculations::Calculation::subcalculations,CalculationDefinition,FeatureMembership
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
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 from Table 32. Other Implied Relationships
35+
*/
36+
public class SysMLBinaryRelationTest extends SysMLSemanticTest {
37+
38+
@Test
39+
public void checkConnectionDefinitionBinarySpecialization() {
40+
var resource = getResource();
41+
var connectionDefinition = SysMLFactory.eINSTANCE.createConnectionDefinition();
42+
43+
resource.getContents().add(connectionDefinition);
44+
45+
addEndTo(connectionDefinition);
46+
addEndTo(connectionDefinition);
47+
48+
ElementUtil.transformAll(connectionDefinition, true);
49+
50+
assertTrue(specializes(connectionDefinition, "Connections::BinaryConnection"));
51+
}
52+
53+
@Test
54+
public void checkInterfaceDefinitionBinarySpecialization() {
55+
var resource = getResource();
56+
var interfaceDefinition = SysMLFactory.eINSTANCE.createInterfaceDefinition();
57+
58+
resource.getContents().add(interfaceDefinition);
59+
60+
addEndTo(interfaceDefinition);
61+
addEndTo(interfaceDefinition);
62+
63+
ElementUtil.transformAll(interfaceDefinition, true);
64+
65+
assertTrue(specializes(interfaceDefinition, "Interfaces::BinaryInterface"));
66+
}
67+
68+
@Test
69+
public void checkConnectionUsageBinarySpecialization() {
70+
var resource = getResource();
71+
var interfaceDefinition = SysMLFactory.eINSTANCE.createConnectionUsage();
72+
73+
resource.getContents().add(interfaceDefinition);
74+
75+
addEndTo(interfaceDefinition);
76+
addEndTo(interfaceDefinition);
77+
78+
ElementUtil.transformAll(interfaceDefinition, true);
79+
80+
assertTrue(specializes(interfaceDefinition, "Connections::binaryConnections"));
81+
}
82+
83+
@Test
84+
public void checkInterfaceUsageBinarySpecialization() {
85+
var resource = getResource();
86+
var interfaceDefinition = SysMLFactory.eINSTANCE.createInterfaceUsage();
87+
88+
resource.getContents().add(interfaceDefinition);
89+
90+
addEndTo(interfaceDefinition);
91+
addEndTo(interfaceDefinition);
92+
93+
ElementUtil.transformAll(interfaceDefinition, true);
94+
95+
assertTrue(specializes(interfaceDefinition, "Interfaces::binaryInterfaces"));
96+
}
97+
98+
@Test
99+
public void checkSuccessionFlowConnectionUsageSpecialization() {
100+
//Succession flow connection is always binary, no base case
101+
var resource = getResource();
102+
var interfaceDefinition = SysMLFactory.eINSTANCE.createSuccessionFlowConnectionUsage();
103+
104+
resource.getContents().add(interfaceDefinition);
105+
106+
addEndTo(interfaceDefinition);
107+
addEndTo(interfaceDefinition);
108+
109+
ElementUtil.transformAll(interfaceDefinition, true);
110+
111+
assertTrue(specializes(interfaceDefinition, "Connections::successionFlowConnections"));
112+
}
113+
114+
//Utility methods
115+
116+
public static void addEndTo(Type type) {
117+
var end = SysMLFactory.eINSTANCE.createFeature();
118+
var endMembership = SysMLFactory.eINSTANCE.createEndFeatureMembership();
119+
endMembership.setFeature(end);
120+
type.getOwnedRelationship().add(endMembership);
121+
}
122+
}

0 commit comments

Comments
 (0)