|
19 | 19 |
|
20 | 20 | import org.eclipse.syson.sysml.AttributeUsage; |
21 | 21 | import org.eclipse.syson.sysml.ConstraintUsage; |
| 22 | +import org.eclipse.syson.sysml.DataType; |
22 | 23 | import org.eclipse.syson.sysml.Dependency; |
| 24 | +import org.eclipse.syson.sysml.Element; |
23 | 25 | import org.eclipse.syson.sysml.Feature; |
24 | 26 | import org.eclipse.syson.sysml.FeatureChainExpression; |
25 | 27 | import org.eclipse.syson.sysml.FeatureChaining; |
26 | 28 | import org.eclipse.syson.sysml.FeatureDirectionKind; |
27 | 29 | import org.eclipse.syson.sysml.FeatureReferenceExpression; |
| 30 | +import org.eclipse.syson.sysml.FeatureTyping; |
28 | 31 | import org.eclipse.syson.sysml.FeatureValue; |
29 | 32 | import org.eclipse.syson.sysml.InterfaceUsage; |
30 | 33 | import org.eclipse.syson.sysml.LiteralInteger; |
31 | 34 | import org.eclipse.syson.sysml.Membership; |
| 35 | +import org.eclipse.syson.sysml.NamespaceImport; |
32 | 36 | import org.eclipse.syson.sysml.OperatorExpression; |
33 | 37 | import org.eclipse.syson.sysml.OwningMembership; |
| 38 | +import org.eclipse.syson.sysml.Package; |
34 | 39 | import org.eclipse.syson.sysml.ParameterMembership; |
| 40 | +import org.eclipse.syson.sysml.PartDefinition; |
35 | 41 | import org.eclipse.syson.sysml.ReferenceUsage; |
36 | 42 | import org.eclipse.syson.sysml.RequirementConstraintMembership; |
37 | 43 | import org.eclipse.syson.sysml.ResultExpressionMembership; |
@@ -426,6 +432,51 @@ public void testGetEdgeLabelOfInterfaceWithNameAndShortName() { |
426 | 432 | assertThat(this.labelService.getEdgeLabel(interfaceUsage)).isEqualTo(SHORT_NAME_LABEL + " interface"); |
427 | 433 | } |
428 | 434 |
|
| 435 | + @DisplayName("GIVEN a namespace imported, WHEN the label of an attribute whose type is from the imported namespace, THEN the attribute's type should be shortened in its label") |
| 436 | + @Test |
| 437 | + public void testAttributeTypeShortenedIfNamespaceImported() { |
| 438 | + String customTypeName = "CustomType"; |
| 439 | + |
| 440 | + Package parentPackage = SysmlFactory.eINSTANCE.createPackage(); |
| 441 | + parentPackage.setDeclaredName("Parent"); |
| 442 | + |
| 443 | + Package definition = SysmlFactory.eINSTANCE.createPackage(); |
| 444 | + definition.setDeclaredName("TypeDefinition"); |
| 445 | + this.addOwnedMember(parentPackage, definition); |
| 446 | + |
| 447 | + DataType customDataType = SysmlFactory.eINSTANCE.createDataType(); |
| 448 | + customDataType.setDeclaredName(customTypeName); |
| 449 | + this.addOwnedMember(definition, customDataType); |
| 450 | + |
| 451 | + Package usage = SysmlFactory.eINSTANCE.createPackage(); |
| 452 | + usage.setDeclaredName("TypeUsage"); |
| 453 | + this.addOwnedMember(parentPackage, usage); |
| 454 | + |
| 455 | + NamespaceImport nsImport = SysmlFactory.eINSTANCE.createNamespaceImport(); |
| 456 | + nsImport.setImportedNamespace(definition); |
| 457 | + this.addOwnedMember(usage, nsImport); |
| 458 | + |
| 459 | + PartDefinition partDef = SysmlFactory.eINSTANCE.createPartDefinition(); |
| 460 | + partDef.setDeclaredName("PartDef1"); |
| 461 | + this.addOwnedMember(usage, partDef); |
| 462 | + |
| 463 | + AttributeUsage attribute = SysmlFactory.eINSTANCE.createAttributeUsage(); |
| 464 | + attribute.setDeclaredName("x1"); |
| 465 | + this.addOwnedMember(partDef, attribute); |
| 466 | + |
| 467 | + FeatureTyping typing = SysmlFactory.eINSTANCE.createFeatureTyping(); |
| 468 | + typing.setType(customDataType); |
| 469 | + attribute.getOwnedRelationship().add(typing); |
| 470 | + |
| 471 | + assertThat(this.labelService.getCompartmentItemLabel(attribute)).isEqualTo("x1 : CustomType"); |
| 472 | + } |
| 473 | + |
| 474 | + private void addOwnedMember(Element parent, Element child) { |
| 475 | + OwningMembership owningMembership = SysmlFactory.eINSTANCE.createOwningMembership(); |
| 476 | + owningMembership.getOwnedRelatedElement().add(child); |
| 477 | + parent.getOwnedRelationship().add(owningMembership); |
| 478 | + } |
| 479 | + |
429 | 480 | /** |
430 | 481 | * Creates an {@link OperatorExpression} in the given {@code constraintUsage}. |
431 | 482 | * <p> |
|
0 commit comments