Skip to content

Commit 19d3867

Browse files
committed
ST6RI-896 Added a test of directedUsage for item/action/constraint defs.
1 parent 55c2d0f commit 19d3867

1 file changed

Lines changed: 49 additions & 0 deletions

File tree

org.omg.sysml.interactive.tests/src/org/omg/sysml/interactive/tests/DerivedPropertyAndOperationTest.java

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import org.omg.sysml.lang.sysml.Definition;
3838
import org.omg.sysml.lang.sysml.Element;
3939
import org.omg.sysml.lang.sysml.Expression;
40+
import org.omg.sysml.lang.sysml.Feature;
4041
import org.omg.sysml.lang.sysml.ItemUsage;
4142
import org.omg.sysml.lang.sysml.Namespace;
4243
import org.omg.sysml.lang.sysml.Relationship;
@@ -172,4 +173,52 @@ public void testPathOperation() throws Exception {
172173
assertEquals("TopLevel/3/1/1/1", TopLevel_3_1_1.getOwnedRelatedElement().get(0).path());
173174
}
174175

176+
public final String directedUsageTest =
177+
"package Test {\n"
178+
+ " item def I {\n"
179+
+ " in x;\n"
180+
+ " in y;\n"
181+
+ " }"
182+
+ " action def A {\n"
183+
+ " in x;\n"
184+
+ " in y;\n"
185+
+ " }"
186+
+ " constraint def C {\n"
187+
+ " in x;\n"
188+
+ " in y;\n"
189+
+ " }"
190+
+ "}";
191+
192+
@Test
193+
public void testDirectedUsage() throws Exception {
194+
SysMLInteractive instance = getSysMLInteractiveInstance();
195+
SysMLInteractiveResult result = instance.process(directedUsageTest);
196+
Element root = result.getRootElement();
197+
List<Element> elements = ((Namespace)root).getOwnedMember();
198+
List<Element> ownedMembers = ((Namespace)elements.get(0)).getOwnedMember();
199+
List<Feature> directedFeatures = ((Definition)ownedMembers.get(0)).getDirectedFeature();
200+
List<Usage> directedUsages = ((Definition)ownedMembers.get(0)).getDirectedUsage();
201+
assertEquals("item def (directedFeatures.size)", 2, directedFeatures.size());
202+
assertEquals("item def (directedUsages.size)", 2, directedUsages.size());
203+
assertEquals("item def (directedUsages)", directedFeatures, directedUsages);
204+
205+
// Check that getting directedFeatures and directedUsages work for ActionDefinitions and
206+
// ConstraintDefinitions, even though they are kinds of Behaviors, and Behavior redefines
207+
// directedFeature as parameter.
208+
209+
directedFeatures = ((Definition)ownedMembers.get(1)).getDirectedFeature();
210+
directedUsages = ((Definition)ownedMembers.get(1)).getDirectedUsage();
211+
assertEquals("action def (directedFeatures.size)", 2, directedFeatures.size());
212+
assertEquals("action def (directedUsages.size)", 2, directedUsages.size());
213+
assertEquals("action def (directedUsages)", directedFeatures, directedUsages);
214+
215+
// The ConstraintDefinition "C" has three directedFeatures, including its return parameter,
216+
// but only the first two are Usages.
217+
directedFeatures = ((Definition)ownedMembers.get(2)).getDirectedFeature();
218+
directedUsages = ((Definition)ownedMembers.get(2)).getDirectedUsage();
219+
assertEquals("constraint def (directedFeatures.size)", 3, directedFeatures.size());
220+
assertEquals("constraint def (directedUsages.size)", 2, directedUsages.size());
221+
assertEquals("constraint def (directedUsages)", directedFeatures.subList(0, 2), directedUsages);
222+
}
223+
175224
}

0 commit comments

Comments
 (0)