Skip to content

Commit 2858fb4

Browse files
committed
ST6RI-925 Created a test of desired filtering of FeatureMemberships.
- The featureMemberships of a type should only include inheritedMemberships whose owningType is a direct or indirect supertype.
1 parent 87eb972 commit 2858fb4

1 file changed

Lines changed: 33 additions & 0 deletions

File tree

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

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,13 @@
4343
import org.omg.sysml.lang.sysml.EnumerationUsage;
4444
import org.omg.sysml.lang.sysml.Expression;
4545
import org.omg.sysml.lang.sysml.Feature;
46+
import org.omg.sysml.lang.sysml.FeatureMembership;
4647
import org.omg.sysml.lang.sysml.ItemUsage;
4748
import org.omg.sysml.lang.sysml.Membership;
4849
import org.omg.sysml.lang.sysml.Namespace;
4950
import org.omg.sysml.lang.sysml.Relationship;
5051
import org.omg.sysml.lang.sysml.TriggerInvocationExpression;
52+
import org.omg.sysml.lang.sysml.Type;
5153
import org.omg.sysml.lang.sysml.Usage;
5254
import org.omg.sysml.lang.sysml.ViewUsage;
5355

@@ -351,4 +353,35 @@ public void testLocale() throws Exception {
351353
assertEquals("comment.locale", "en_US", comment.getLocale());
352354
assertEquals("doc.locale", "en_US", doc.getLocale());
353355
}
356+
357+
public final String featureMembershipTest =
358+
"package Test {\n"
359+
+ " part def A {\n"
360+
+ " attribute f;\n"
361+
+ " }\n"
362+
+ " part def B {\n"
363+
+ " public import A::*;\n"
364+
+ " feature g;\n"
365+
+ " }\n"
366+
+ " part def C :> B;"
367+
+ "}";
368+
369+
@Test
370+
public void testFeatureMembership() throws Exception {
371+
SysMLInteractive instance = getSysMLInteractiveInstance();
372+
SysMLInteractiveResult result = instance.process(featureMembershipTest);
373+
Element root = result.getRootElement();
374+
List<Element> elements = ((Namespace)root).getOwnedMember();
375+
List<Element> ownedMembers = ((Namespace)elements.get(0)).getOwnedMember();
376+
Definition A = (Definition)ownedMembers.get(0);
377+
Definition B = (Definition)ownedMembers.get(1);
378+
Definition C = (Definition)ownedMembers.get(2);
379+
assertTrue("A", testFeatureOwningTypes(A));
380+
assertTrue("B", testFeatureOwningTypes(B));
381+
assertTrue("C", testFeatureOwningTypes(C));
382+
}
383+
384+
private boolean testFeatureOwningTypes(Type type) {
385+
return type.getFeatureMembership().stream().map(FeatureMembership::getOwningType).allMatch(t->type.specializes(t));
386+
}
354387
}

0 commit comments

Comments
 (0)