Skip to content

Commit cd97bc9

Browse files
committed
SYSM2L_-89 Added special semantics tests for
checkTransitionStateUsageSpecialization.
1 parent 2f377e2 commit cd97bc9

2 files changed

Lines changed: 61 additions & 3 deletions

File tree

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ true,checkPerformActionUsageSpecialization,PerformActionUsage,Parts::Part::perfo
6565
true,checkStateUsageSpecialization,StateUsage,States::stateActions,Package,OwningMembership
6666
true,checkStateUsageExclusiveStateSpecialization,StateUsage,States::StateAction::exclusiveStates,StateUsage,FeatureMembership
6767
true,checkTransitionUsageSpecialization,TransitionUsage,Actions::transitionActions,Package,OwningMembership
68-
true,checkTransitionUsageStateSpecialization,TransitionUsage,States::StateAction::stateTransitions,StateDefinition,FeatureMembership
69-
true,checkTransitionUsageStateSpecialization,TransitionUsage,States::StateAction::stateTransitions,StateUsage,FeatureMembership
68+
false,checkTransitionUsageStateSpecialization,TransitionUsage,States::StateAction::stateTransitions,StateDefinition,FeatureMembership
69+
false,checkTransitionUsageStateSpecialization,TransitionUsage,States::StateAction::stateTransitions,StateUsage,FeatureMembership
7070
true,checkTransitionUsageActionSpecialization,TransitionUsage,Actions::Action::decisionTransitions,ActionUsage,FeatureMembership
7171
true,checkTransitionUsageActionSpecialization,TransitionUsage,Actions::Action::decisionTransitions,ActionDefinition,FeatureMembership
7272
true,checkCalculationUsageSpecialization,CalculationUsage,Calculations::calculations,Package,OwningMembership

org.omg.sysml.interactive.tests/src/org/omg/sysml/semantics/tests/SysMLSpecializationSpecialTest.java

Lines changed: 59 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/**
22
* SysML 2 Pilot Implementation
3-
* Copyright (C) 2024 Model Driven Solutions, Inc.
3+
* Copyright (C) 2024-2025 Model Driven Solutions, Inc.
44
*
55
* This program is free software: you can redistribute it and/or modify
66
* it under the terms of the GNU Lesser General Public License as published by
@@ -19,11 +19,26 @@
1919
*
2020
* Contributors:
2121
* Laszlo Gati, MDS
22+
* Ed Seidewitz, MDS
2223
*/
2324
package org.omg.sysml.semantics.tests;
2425

26+
import static org.junit.Assert.assertTrue;
27+
28+
import org.eclipse.emf.ecore.EClass;
29+
import org.eclipse.emf.ecore.EClassifier;
2530
import org.junit.Ignore;
2631
import org.junit.Test;
32+
import org.omg.sysml.lang.sysml.Element;
33+
import org.omg.sysml.lang.sysml.StateUsage;
34+
import org.omg.sysml.lang.sysml.SysMLFactory;
35+
import org.omg.sysml.lang.sysml.SysMLPackage;
36+
import org.omg.sysml.lang.sysml.TransitionUsage;
37+
import org.omg.sysml.lang.sysml.Type;
38+
import org.omg.sysml.lang.sysml.util.SysMLLibraryUtil;
39+
import org.omg.sysml.util.ElementUtil;
40+
import org.omg.sysml.util.NamespaceUtil;
41+
import org.omg.sysml.util.TypeUtil;
2742

2843
/**
2944
* Semantic constraint tests for "Implied Definition Subclassification Relationships" and
@@ -33,6 +48,49 @@
3348
*/
3449
public class SysMLSpecializationSpecialTest extends SysMLSemanticTest {
3550

51+
protected void checkTransitionUsageStateSpecialization(String owningTypeName) {
52+
//create and add root package
53+
org.omg.sysml.lang.sysml.Package root = SysMLFactory.eINSTANCE.createPackage();
54+
getResource().getContents().add(root);
55+
56+
//check if library element exists
57+
Element libraryElement = SysMLLibraryUtil.getLibraryElement(root, "States::StateAction::stateTransitions");
58+
assertTrue(libraryElement instanceof Type);
59+
60+
//create owning type
61+
EClassifier ownerEClass = SysMLPackage.eINSTANCE.getEClassifier(owningTypeName);
62+
Type owner = (Type) SysMLFactory.eINSTANCE.create((EClass) ownerEClass);
63+
NamespaceUtil.addOwnedMemberTo(root, owner);
64+
65+
//create source state usage
66+
StateUsage state = SysMLFactory.eINSTANCE.createStateUsage();
67+
state.setIsReference(false);
68+
TypeUtil.addOwnedFeatureTo(owner, state);
69+
70+
//create transition usage
71+
TransitionUsage transition = SysMLFactory.eINSTANCE.createTransitionUsage();
72+
transition.setIsReference(false);
73+
TypeUtil.addOwnedFeatureTo(owner, transition);
74+
75+
//add source state usage to transition usage
76+
NamespaceUtil.addMemberTo(transition, state);
77+
78+
//run transformation, add implicit elements
79+
ElementUtil.transformAll(root, true);
80+
81+
assertTrue(String.format("TransitionUsage specializes stateTransitions instead of %s", getSpecifics(transition)), transition.specializes((Type)libraryElement));
82+
}
83+
84+
@Test
85+
public void checkTransitionUsageStateSpecialization_StateDefinition() {
86+
checkTransitionUsageStateSpecialization("StateDefinition");
87+
}
88+
89+
@Test
90+
public void checkTransitionUsageStateSpecialization_StateUsage() {
91+
checkTransitionUsageStateSpecialization("StateUsage");
92+
}
93+
3694
@Test
3795
@Ignore("TBD")
3896
public void checkLifeClassOccurrenceSpecialization() {

0 commit comments

Comments
 (0)