@@ -175,7 +175,7 @@ public void testPathOperation() throws Exception {
175175 assertEquals ("TopLevel/3/1/1/1" , TopLevel_3_1_1 .getOwnedRelatedElement ().get (0 ).path ());
176176 }
177177
178- public final String directedUsageTest =
178+ public final String directedUsageTest1 =
179179 "package Test {\n "
180180 + " item def I {\n "
181181 + " in x;\n "
@@ -192,9 +192,9 @@ public void testPathOperation() throws Exception {
192192 + "}" ;
193193
194194 @ Test
195- public void testDirectedUsage () throws Exception {
195+ public void testDirectedUsage1 () throws Exception {
196196 SysMLInteractive instance = getSysMLInteractiveInstance ();
197- SysMLInteractiveResult result = instance .process (directedUsageTest );
197+ SysMLInteractiveResult result = instance .process (directedUsageTest1 );
198198 Element root = result .getRootElement ();
199199 List <Element > elements = ((Namespace )root ).getOwnedMember ();
200200 List <Element > ownedMembers = ((Namespace )elements .get (0 )).getOwnedMember ();
@@ -222,6 +222,53 @@ public void testDirectedUsage() throws Exception {
222222 assertEquals ("constraint def (directedUsages.size)" , 2 , directedUsages .size ());
223223 assertEquals ("constraint def (directedUsages)" , directedFeatures .subList (0 , 2 ), directedUsages );
224224 }
225+ public final String directedUsageTest2 =
226+ "package Test {\n "
227+ + " item I {\n "
228+ + " in x;\n "
229+ + " in y;\n "
230+ + " }"
231+ + " action A {\n "
232+ + " in x;\n "
233+ + " in y;\n "
234+ + " }"
235+ + " constraint C {\n "
236+ + " in x;\n "
237+ + " in y;\n "
238+ + " }"
239+ + "}" ;
240+
241+ @ Test
242+ public void testDirectedUsage2 () throws Exception {
243+ SysMLInteractive instance = getSysMLInteractiveInstance ();
244+ SysMLInteractiveResult result = instance .process (directedUsageTest2 );
245+ Element root = result .getRootElement ();
246+ List <Element > elements = ((Namespace )root ).getOwnedMember ();
247+ List <Element > ownedMembers = ((Namespace )elements .get (0 )).getOwnedMember ();
248+ List <Feature > directedFeatures = ((Usage )ownedMembers .get (0 )).getDirectedFeature ();
249+ List <Usage > directedUsages = ((Usage )ownedMembers .get (0 )).getDirectedUsage ();
250+ assertEquals ("item (directedFeatures.size)" , 2 , directedFeatures .size ());
251+ assertEquals ("item (directedUsages.size)" , 2 , directedUsages .size ());
252+ assertEquals ("item (directedUsages)" , directedFeatures , directedUsages );
253+
254+ // Check that getting directedFeatures and directedUsages work for ActionUsages and
255+ // ConstraintUsages, even though they are kinds of Steps, and Step redefines
256+ // directedFeature as parameter.
257+
258+ directedFeatures = ((Usage )ownedMembers .get (1 )).getDirectedFeature ();
259+ directedUsages = ((Usage )ownedMembers .get (1 )).getDirectedUsage ();
260+ assertEquals ("action (directedFeatures.size)" , 2 , directedFeatures .size ());
261+ assertEquals ("action (directedUsages.size)" , 2 , directedUsages .size ());
262+ assertEquals ("action (directedUsages)" , directedFeatures , directedUsages );
263+
264+ // The ConstraintUsage "C" has three directedFeatures, including its return parameter,
265+ // but only the first two are Usages.
266+ directedFeatures = ((Usage )ownedMembers .get (2 )).getDirectedFeature ();
267+ directedUsages = ((Usage )ownedMembers .get (2 )).getDirectedUsage ();
268+ assertEquals ("constraint (directedFeatures.size)" , 3 , directedFeatures .size ());
269+ assertEquals ("constraint (directedUsages.size)" , 2 , directedUsages .size ());
270+ assertEquals ("constraint (directedUsages)" , directedFeatures .subList (0 , 2 ), directedUsages );
271+ }
225272
226273 public final String enumeratedValueTest =
227274 "package Test {\n "
0 commit comments