Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'tests/org.eclipse.emf.test.tools/src/org/eclipse/emf/test/tools/codegen/GenModelTest.java')
-rw-r--r--tests/org.eclipse.emf.test.tools/src/org/eclipse/emf/test/tools/codegen/GenModelTest.java66
1 files changed, 66 insertions, 0 deletions
diff --git a/tests/org.eclipse.emf.test.tools/src/org/eclipse/emf/test/tools/codegen/GenModelTest.java b/tests/org.eclipse.emf.test.tools/src/org/eclipse/emf/test/tools/codegen/GenModelTest.java
index 7bc5ba39b..126b40e93 100644
--- a/tests/org.eclipse.emf.test.tools/src/org/eclipse/emf/test/tools/codegen/GenModelTest.java
+++ b/tests/org.eclipse.emf.test.tools/src/org/eclipse/emf/test/tools/codegen/GenModelTest.java
@@ -24,7 +24,10 @@ import org.eclipse.emf.codegen.ecore.genmodel.GenAnnotation;
import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
import org.eclipse.emf.codegen.ecore.genmodel.GenModelFactory;
import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
+import org.eclipse.emf.codegen.ecore.genmodel.GenPackage.AnnotationReferenceData;
+import org.eclipse.emf.codegen.ecore.genmodel.GenRuntimeVersion;
import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EAnnotation;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
@@ -630,4 +633,67 @@ public class GenModelTest
}
}
+ /*
+ * Bugzilla 573321
+ */
+ @Test
+ public void testAnnotationReferenceURIs() throws Exception
+ {
+ EPackage rootPackage = EcoreFactory.eINSTANCE.createEPackage();
+ rootPackage.setName("root");
+ rootPackage.setNsURI("root");
+
+ EClass rootEClass = EcoreFactory.eINSTANCE.createEClass();
+ rootEClass.setName("RootClass");
+ rootPackage.getEClassifiers().add(rootEClass);
+
+ EPackage subPackage = EcoreFactory.eINSTANCE.createEPackage();
+ subPackage.setName("sub");
+ subPackage.setNsURI("sub");
+
+ EClass subEClass = EcoreFactory.eINSTANCE.createEClass();
+ subEClass.setName("SubClass");
+ subPackage.getEClassifiers().add(subEClass);
+
+ EAnnotation rootEAnnotation = EcoreFactory.eINSTANCE.createEAnnotation();
+ rootEAnnotation.setSource("test");
+ rootEAnnotation.getReferences().add(rootEClass);
+ rootEAnnotation.getReferences().add(subEClass);
+ rootEClass.getEAnnotations().add(rootEAnnotation);
+
+ EAnnotation subEAnnotation = EcoreFactory.eINSTANCE.createEAnnotation();
+ subEAnnotation.setSource("test");
+ subEAnnotation.getReferences().add(rootEClass);
+ subEAnnotation.getReferences().add(subEClass);
+ subEClass.getEAnnotations().add(subEAnnotation);
+
+ rootPackage.getESubpackages().add(subPackage);
+
+ GenModel genModel = GenModelFactory.eINSTANCE.createGenModel();
+ genModel.setRuntimeVersion(GenRuntimeVersion.EMF26);
+ genModel.initialize(Collections.singletonList(rootPackage));
+ GenPackage genPackage = genModel.getGenPackages().get(0);
+ for (EAnnotation eAnnnotation : genPackage.getAllAnnotations())
+ {
+ List<AnnotationReferenceData> referenceData = genPackage.getReferenceData(eAnnnotation);
+ assertEquals(2, referenceData.size());
+ assertEquals("eNS_URI#//RootClass", getReferenceDetail(genPackage, referenceData.get(0)));
+ assertEquals("root.sub.SubPackage.eNS_URI#//SubClass", getReferenceDetail(genPackage, referenceData.get(1)));
+ }
+
+ GenPackage subGenPackage = genPackage.getSubGenPackages().get(0);
+ for (EAnnotation eAnnnotation : subGenPackage.getAllAnnotations())
+ {
+ List<AnnotationReferenceData> referenceData = genPackage.getReferenceData(eAnnnotation);
+ assertEquals(2, referenceData.size());
+ assertEquals("root.RootPackage.eNS_URI#//RootClass", getReferenceDetail(subGenPackage, referenceData.get(0)));
+ assertEquals("eNS_URI#//SubClass", getReferenceDetail(subGenPackage, referenceData.get(1)));
+ }
+ }
+
+ private String getReferenceDetail(GenPackage genPackage, AnnotationReferenceData referenceDataItem)
+ {
+ String detail = (referenceDataItem.containingGenPackage != genPackage ? referenceDataItem.containingGenPackage.getImportedPackageInterfaceName() + "." : "") + "eNS_URI#" + referenceDataItem.uriFragment;
+ return detail;
+ }
}

Back to the top