/** * Copyright (c) 2011-2012 Eclipse contributors and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ package org.eclipse.emf.test.ecore.xcore.scoping; import java.util.Iterator; import org.eclipse.emf.codegen.ecore.genmodel.GenModelPackage; import org.eclipse.emf.ecore.EcorePackage; import org.eclipse.emf.ecore.xcore.XPackage; import org.eclipse.emf.ecore.xcore.XcoreInjectorProvider; import org.eclipse.xtext.common.types.TypesPackage; import org.eclipse.xtext.junit4.InjectWith; import org.eclipse.xtext.junit4.XtextRunner; import org.eclipse.xtext.junit4.util.ParseHelper; import org.eclipse.xtext.resource.IEObjectDescription; import org.eclipse.xtext.resource.IResourceDescription; import org.junit.Test; import org.junit.runner.RunWith; import com.google.inject.Inject; import static org.junit.Assert.*; @RunWith(XtextRunner.class) @InjectWith(XcoreInjectorProvider.class) public class ResourceDescriptionManagerTest { @Inject private ParseHelper<XPackage> parser; @Inject private IResourceDescription.Manager descriptionManager; @Test public void testCreateResourceDescription() throws Exception { XPackage xcorePackage = parser.parse("@Ecore(nsURI='http://foo.bar')package foo.bar class Baz {}"); IResourceDescription resourceDescription = descriptionManager.getResourceDescription(xcorePackage.eResource()); Iterator<IEObjectDescription> eclass = resourceDescription.getExportedObjectsByType(EcorePackage.Literals.ECLASS).iterator(); Iterator<IEObjectDescription> genclass = resourceDescription.getExportedObjectsByType(GenModelPackage.Literals.GEN_CLASS).iterator(); Iterator<IEObjectDescription> jvmTypes = resourceDescription.getExportedObjectsByType(TypesPackage.Literals.JVM_GENERIC_TYPE).iterator(); final String expected = "foo.bar.Baz"; assertEquals(expected, eclass.next().getName().toString()); assertEquals("http://foo.bar.Baz", eclass.next().getName().toString()); assertFalse(eclass.hasNext()); assertEquals(expected, genclass.next().getName().toString()); assertFalse(genclass.hasNext()); assertEquals("foo.bar.BarPackage", jvmTypes.next().getName().toString()); assertEquals("foo.bar.BarPackage$Literals", jvmTypes.next().getName().toString()); assertEquals("foo.bar.impl.BarPackageImpl", jvmTypes.next().getName().toString()); assertEquals("foo.bar.BarFactory", jvmTypes.next().getName().toString()); assertEquals("foo.bar.impl.BarFactoryImpl", jvmTypes.next().getName().toString()); assertEquals("foo.bar.util.BarSwitch", jvmTypes.next().getName().toString()); assertEquals("foo.bar.util.BarAdapterFactory", jvmTypes.next().getName().toString()); assertEquals(expected, jvmTypes.next().getName().toString()); assertEquals("foo.bar.impl.BazImpl", jvmTypes.next().getName().toString()); assertFalse(jvmTypes.hasNext()); } }