| /****************************************************************************** |
| * Copyright (c) 2009 IBM Corporation 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 |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| ****************************************************************************/ |
| package org.eclipse.gmf.tests.runtime.emf.core.util; |
| |
| import java.util.Map; |
| |
| import junit.framework.Test; |
| import junit.framework.TestSuite; |
| import junit.textui.TestRunner; |
| |
| import org.eclipse.emf.ecore.EObject; |
| import org.eclipse.emf.ecore.InternalEObject; |
| import org.eclipse.emf.ecore.resource.Resource; |
| import org.eclipse.emf.ecore.resource.ResourceSet; |
| import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl; |
| import org.eclipse.emf.ecore.util.EcoreUtil; |
| import org.eclipse.emf.transaction.TransactionalEditingDomain; |
| import org.eclipse.gmf.runtime.emf.core.resources.IExtendedResourceFactory; |
| import org.eclipse.gmf.runtime.emf.core.util.EMFCoreUtil; |
| import org.eclipse.gmf.tests.runtime.emf.core.BaseTests; |
| |
| /** |
| * Unit tests for <code>EMFCoreUtil</code>. |
| * |
| * @author ldamus |
| */ |
| public class EMFCoreUtilTests extends BaseTests { |
| |
| public static String EMF_CORE_UTIL_TESTS_PROXY_ID = "EMFCoreUtilTests_proxyID"; |
| |
| public static void main(String[] args) { |
| TestRunner.run(suite()); |
| } |
| |
| public static Test suite() { |
| return new TestSuite(EMFCoreUtilTests.class, |
| "EMFCoreUtilTests Test Suite"); //$NON-NLS-1$ |
| } |
| |
| /** |
| * Tests that when a resource factory override is registered for a proxy in |
| * the <code>extensionToFactoryMap</code>, it will be used to provide the |
| * proxy ID. |
| */ |
| public void test_getProxyID_288303() { |
| |
| // Make the class element a proxy |
| EObject clazz = find(ecoreRoot, "class"); //$NON-NLS-1$ |
| ((InternalEObject) clazz).eSetProxyURI(EcoreUtil.getURI(clazz)); |
| |
| // Check the default proxy ID |
| String result = EMFCoreUtil.getProxyID(clazz); |
| assertEquals("Unexpected Proxy ID", "//class", result); |
| |
| // Register a custom resource factory |
| ResourceSet resourceSet = domain.getResourceSet(); |
| Map<String, Object> extensionToFactoryMap = resourceSet |
| .getResourceFactoryRegistry().getExtensionToFactoryMap(); |
| Object original = extensionToFactoryMap |
| .get(Resource.Factory.Registry.DEFAULT_EXTENSION); |
| extensionToFactoryMap.put(Resource.Factory.Registry.DEFAULT_EXTENSION, |
| new EMFCoreUtilTestsResourceFactory()); |
| |
| // Check the custom proxy ID |
| result = EMFCoreUtil.getProxyID(clazz); |
| assertEquals("Unexpected Proxy ID", EMF_CORE_UTIL_TESTS_PROXY_ID, result); |
| |
| // Restore the original resource factory |
| extensionToFactoryMap.put(Resource.Factory.Registry.DEFAULT_EXTENSION, |
| original); |
| } |
| |
| protected class EMFCoreUtilTestsResourceFactory extends ResourceFactoryImpl |
| implements IExtendedResourceFactory { |
| |
| public String getProxyClassID(EObject proxy) { |
| return null; |
| } |
| |
| public String getProxyID(EObject proxy) { |
| return EMF_CORE_UTIL_TESTS_PROXY_ID; |
| } |
| |
| public String getProxyName(EObject proxy) { |
| return null; |
| } |
| |
| public String getProxyQualifiedName(EObject proxy) { |
| return null; |
| } |
| |
| public EObject resolve(TransactionalEditingDomain domain, EObject proxy) { |
| return null; |
| } |
| } |
| } |