package org.eclipselabs.spray.generator.graphiti.util; import org.eclipse.emf.ecore.EcorePackage; import org.eclipse.xtext.junit4.InjectWith; import org.eclipse.xtext.junit4.XtextRunner; import org.eclipselabs.spray.mm.spray.Behaviour; import org.eclipselabs.spray.mm.spray.Diagram; import org.eclipselabs.spray.mm.spray.MetaClass; import org.eclipselabs.spray.mm.spray.MetaReference; import org.eclipselabs.spray.mm.spray.SprayFactory; import org.eclipselabs.spray.xtext.SprayTestsInjectorProvider; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import com.google.inject.Inject; import static org.junit.Assert.assertEquals; /** * Test for {@link NamingExtensions} * * @author Karsten Thoms */ @RunWith(XtextRunner.class) @InjectWith(SprayTestsInjectorProvider.class) public class NamingExtensionsTest { @Inject private NamingExtensions fixture; private Diagram diagram; private MetaClass clsEClass; private MetaClass clsEClassAliased; private MetaClass clsEClassifier; private MetaReference reference; private MetaReference reference2; private Behaviour behaviour; @Before public void init() { assertEquals("diagrams", ProjectProperties.getDiagramPackage()); assertEquals("features", ProjectProperties.getFeaturePackage()); assertEquals("property", ProjectProperties.getPropertyPackage()); diagram = SprayFactory.eINSTANCE.createDiagram(); diagram.setName("ediag"); clsEClass = SprayFactory.eINSTANCE.createMetaClass(); clsEClass.setType(EcorePackage.Literals.ECLASS); clsEClass.setIcon("ecore/EClass.gif"); diagram.getMetaClassesList().add(clsEClass); clsEClassifier = SprayFactory.eINSTANCE.createMetaClass(); clsEClassifier.setType(EcorePackage.Literals.ECLASSIFIER); diagram.getMetaClassesList().add(clsEClassifier); // MetaClass with alias name: EClass => EcoreClass clsEClassAliased = SprayFactory.eINSTANCE.createMetaClass(); clsEClassAliased.setType(EcorePackage.Literals.ECLASS); clsEClassAliased.setAlias("EcoreClass"); diagram.getMetaClassesList().add(clsEClassAliased); reference = SprayFactory.eINSTANCE.createMetaReference(); reference.setReference(EcorePackage.Literals.ECLASS__EALL_OPERATIONS); clsEClass.getReferencesList().add(reference); reference2 = SprayFactory.eINSTANCE.createMetaReference(); reference2.setReference(EcorePackage.Literals.ECLASSIFIER__EPACKAGE); clsEClassifier.getReferencesList().add(reference2); behaviour = SprayFactory.eINSTANCE.createCustomBehaviour(); behaviour.setName("sampleBehaviour"); clsEClass.getBehavioursList().add(behaviour); } //--------------------------------------------------------------------------------------------- // Class names for Diagram //--------------------------------------------------------------------------------------------- @Test public void test_getDiagramTypeProviderClassName() { assertEquals("diagrams.EdiagDiagramTypeProvider", fixture.getDiagramTypeProviderClassName(diagram)); } @Test public void test_getDiagramTypeProviderSimpleClassName() { assertEquals("EdiagDiagramTypeProvider", fixture.getDiagramTypeProviderSimpleClassName(diagram)); } @Test public void test_getFeatureProviderClassName() { assertEquals("diagrams.EdiagFeatureProvider", fixture.getFeatureProviderClassName(diagram)); } @Test public void test_getFeatureProviderSimpleClassName() { assertEquals("EdiagFeatureProvider", fixture.getFeatureProviderSimpleClassName(diagram)); } @Test public void test_getImageProviderClassName() { assertEquals("diagrams.EdiagImageProvider", fixture.getImageProviderClassName(diagram)); } @Test public void test_getImageProviderSimpleClassName() { assertEquals("EdiagImageProvider", fixture.getImageProviderSimpleClassName(diagram)); } @Test public void test_getToolBehaviourProviderClassName() { assertEquals("diagrams.EdiagToolBehaviourProvider", fixture.getToolBehaviourProviderClassName(diagram)); } @Test public void test_getToolBehaviourProviderSimpleClassName() { assertEquals("EdiagToolBehaviourProvider", fixture.getToolBehaviourProviderSimpleClassName(diagram)); } @Test public void test_getDiagramEditorClassName() { assertEquals("diagrams.EdiagDiagramEditor", fixture.getDiagramEditorClassName(diagram)); } @Test public void test_getDiagramEditorSimpleClassName() { assertEquals("EdiagDiagramEditor", fixture.getDiagramEditorSimpleClassName(diagram)); } @Test public void test_getGuiceModuleClassName() { assertEquals("spray.EdiagModule", fixture.getGuiceModuleClassName(diagram)); } @Test public void test_getGuiceModuleSimpleClassName() { assertEquals("EdiagModule", fixture.getGuiceModuleSimpleClassName(diagram)); } //--------------------------------------------------------------------------------------------- // Class names for MetaClass //--------------------------------------------------------------------------------------------- @Test public void test_getAddFeatureClassName_MetaClass() { assertEquals("features.EdiagAddEClassFeature", fixture.getAddFeatureClassName(clsEClass)); } @Test public void test_getAddFeatureSimpleClassName_MetaClass() { assertEquals("EdiagAddEClassFeature", fixture.getAddFeatureSimpleClassName(clsEClass)); } @Test public void test_getAddFeatureSimpleClassName_AliasedMetaClass() { assertEquals("EdiagAddEcoreClassFeature", fixture.getAddFeatureSimpleClassName(clsEClassAliased)); } @Test public void test_getFeatureClassName_MetaClass_FeatureType() { assertEquals("features.EdiagLayoutEClassFeature", fixture.getFeatureClassName(clsEClass, FeatureType.Layout)); } @Test public void test_getFeatureSimpleClassName_MetaClass_FeatureType() { assertEquals("EdiagLayoutEClassFeature", fixture.getFeatureSimpleClassName(clsEClass, FeatureType.Layout)); } @Test public void test_getFilterClassName() { assertEquals("property.EClassFilter", fixture.getFilterClassName(clsEClass)); } @Test public void test_getFilterSimpleClassName() { assertEquals("EClassFilter", fixture.getFilterSimpleClassName(clsEClass)); } //--------------------------------------------------------------------------------------------- // Class names for MetaReference //--------------------------------------------------------------------------------------------- @Test public void test_getCreateFeatureClassName_MetaReference() { assertEquals("features.EdiagCreateEClassEAllOperationsEOperationFeature", fixture.getCreateFeatureClassName(reference)); } @Test public void test_getFeatureClassName_MetaReference_String() { assertEquals("features.EdiagLayoutEClassEAllOperationsEOperationFeature", fixture.getFeatureClassName(reference, FeatureType.Layout)); } @Test public void test_getAddReferenceAsConnectionFeatureClassName() { assertEquals("features.EdiagAddReferenceEClassEAllOperationsFeature", fixture.getAddReferenceAsConnectionFeatureClassName(reference)); } @Test public void test_getAddReferenceAsConnectionFeatureSimpleClassName() { assertEquals("EdiagAddReferenceEClassEAllOperationsFeature", fixture.getAddReferenceAsConnectionFeatureSimpleClassName(reference)); } @Test public void test_getCreateReferenceAsListFeatureClassName() { assertEquals("features.EdiagCreateEClassEAllOperationsEOperationFeature", fixture.getCreateReferenceAsListFeatureClassName(reference)); } @Test public void test_getCreateReferenceAsListFeatureSimpleClassName() { assertEquals("EdiagCreateEClassEAllOperationsEOperationFeature", fixture.getCreateReferenceAsListFeatureSimpleClassName(reference)); } /** * Use here the MetaClass for EClassifier and EDataType as subtype of it. Reference is EClassifier->EPackage */ @Test public void test_getCreateReferenceAsListFeatureClassName_MetaReference_EClass() { assertEquals("features.EdiagCreateEClassifierEPackageEDataTypeFeature", fixture.getCreateReferenceAsListFeatureClassName(reference2, EcorePackage.Literals.EDATA_TYPE)); } @Test public void test_getCreateReferenceAsListFeatureSimpleClassName_MetaReference_EClass() { assertEquals("EdiagCreateEClassifierEPackageEDataTypeFeature", fixture.getCreateReferenceAsListFeatureSimpleClassName(reference2, EcorePackage.Literals.EDATA_TYPE)); } @Test public void test_getAddReferenceAsListFeatureClassName() { assertEquals("features.EdiagAddEClassEAllOperationsListFeature", fixture.getAddReferenceAsListFeatureClassName(reference)); } @Test public void test_getAddReferenceAsListFeatureSimpleClassName() { assertEquals("EdiagAddEClassEAllOperationsListFeature", fixture.getAddReferenceAsListFeatureSimpleClassName(reference)); } @Test public void test_getUpdateReferenceAsListFeatureClassName() { assertEquals("features.EdiagUpdateEClassEAllOperationsFeature", fixture.getUpdateReferenceAsListFeatureClassName(reference)); } @Test public void test_getUpdateReferenceAsListFeatureSimpleClassName() { assertEquals("EdiagUpdateEClassEAllOperationsFeature", fixture.getUpdateReferenceAsListFeatureSimpleClassName(reference)); } @Test public void test_getAddReferenceFeatureClassName_MetaReference() { assertEquals("features.EdiagCreateEClassEAllOperationsEOperationFeature", fixture.getCreateFeatureClassName(reference)); } @Test public void test_getCreateReferenceAsConnectionFeatureClassName() { assertEquals("features.EdiagCreateEClassEAllOperationsFeature", fixture.getCreateReferenceAsConnectionFeatureClassName(reference)); } @Test public void test_getCreateReferenceAsConnectionFeatureSimpleClassName() { assertEquals("EdiagCreateEClassEAllOperationsFeature", fixture.getCreateReferenceAsConnectionFeatureSimpleClassName(reference)); } @Test public void test_getDeleteReferenceFeatureClassName() { assertEquals("features.EdiagDeleteReferenceEClassEAllOperationsFeature", fixture.getDeleteReferenceFeatureClassName(reference)); } @Test public void test_getDeleteReferenceFeatureSimpleClassName() { assertEquals("EdiagDeleteReferenceEClassEAllOperationsFeature", fixture.getDeleteReferenceFeatureSimpleClassName(reference)); } //--------------------------------------------------------------------------------------------- // Class names for Behaviour //--------------------------------------------------------------------------------------------- @Test public void test_getCustomFeatureClassName() { assertEquals("features.EdiagCustomSampleBehaviourFeature", fixture.getCustomFeatureClassName(behaviour)); } @Test public void test_getCustomFeatureSimpleClassName() { assertEquals("EdiagCustomSampleBehaviourFeature", fixture.getCustomFeatureSimpleClassName(behaviour)); } //--------------------------------------------------------------------------------------------- // Class names for EClass //--------------------------------------------------------------------------------------------- @Test public void test_getFilterClassName_EClass() { assertEquals("property.EClassFilter", fixture.getFilterClassName(EcorePackage.Literals.ECLASS)); } @Test public void test_getFilterSimpleClassName_EClass() { assertEquals("EClassFilter", fixture.getFilterSimpleClassName(EcorePackage.Literals.ECLASS)); } //--------------------------------------------------------------------------------------------- // Class names for EAttribute //--------------------------------------------------------------------------------------------- @Test public void test_getPropertySectionClassName() { assertEquals("property.EClassAbstractSection", fixture.getPropertySectionClassName(EcorePackage.Literals.ECLASS__ABSTRACT)); } @Test public void test_getPropertySectionSimpleClassName() { assertEquals("EClassAbstractSection", fixture.getPropertySectionSimpleClassName(EcorePackage.Literals.ECLASS__ABSTRACT)); } //--------------------------------------------------------------------------------------------- // Other names for MetaClass //--------------------------------------------------------------------------------------------- @Test public void test_getDiagramName() { assertEquals("ediag", fixture.getDiagramName(clsEClass)); } @Test public void test_getImageBaseName() { assertEquals("ecore_eclass", fixture.getImageBaseName(clsEClass.getIcon())); } //--------------------------------------------------------------------------------------------- // Other names //--------------------------------------------------------------------------------------------- @Test public void test_getActivatorClassName() { assertEquals("spray.Activator", fixture.getActivatorClassName(diagram)); } @Test public void test_getActivatorSimpleClassName() { assertEquals("Activator", fixture.getActivatorSimpleClassName(diagram)); } @Test public void test_getImageIdentifier() { assertEquals("EDIAG_ECORE_ECLASS", fixture.getImageIdentifier(diagram, clsEClass.getIcon())); } }