|
37 | 37 | import org.omg.sysml.lang.sysml.Definition; |
38 | 38 | import org.omg.sysml.lang.sysml.Element; |
39 | 39 | import org.omg.sysml.lang.sysml.Expression; |
| 40 | +import org.omg.sysml.lang.sysml.Feature; |
40 | 41 | import org.omg.sysml.lang.sysml.ItemUsage; |
41 | 42 | import org.omg.sysml.lang.sysml.Namespace; |
42 | 43 | import org.omg.sysml.lang.sysml.Relationship; |
@@ -172,4 +173,52 @@ public void testPathOperation() throws Exception { |
172 | 173 | assertEquals("TopLevel/3/1/1/1", TopLevel_3_1_1.getOwnedRelatedElement().get(0).path()); |
173 | 174 | } |
174 | 175 |
|
| 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 | + |
175 | 224 | } |
0 commit comments