/** | |
* Copyright (c) 2009-2010 Thales Corporate Services S.A.S. | |
* 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: | |
* Thales Corporate Services S.A.S - initial API and implementation | |
*/ | |
package org.eclipse.egf.core.test; | |
import org.eclipse.core.runtime.IConfigurationElement; | |
import org.eclipse.core.runtime.Platform; | |
import org.eclipse.egf.core.domain.RuntimePlatformResourceSet; | |
import org.eclipse.emf.common.util.URI; | |
import org.eclipse.emf.ecore.EObject; | |
import org.eclipse.emf.ecore.resource.Resource; | |
import test.EGFTestCase; | |
import test.TestSuite; | |
import test.util.TestSwitch; | |
/** | |
* @author Matthieu Helleboid | |
* | |
*/ | |
public class ModelTestHelper { | |
private static final String MODEL_PATH = "modelPath"; //$NON-NLS-1$ | |
private static final String PLATFORM_PLUGIN = "platform:/plugin/"; //$NON-NLS-1$ | |
private final static String TEST_EXTENSION_NAME = "org.eclipse.egf.core.test"; //$NON-NLS-1$ | |
public void addModelTest(junit.framework.TestSuite junitSuite) { | |
IConfigurationElement[] configurationElementsFor = Platform.getExtensionRegistry().getConfigurationElementsFor(TEST_EXTENSION_NAME); | |
for (IConfigurationElement iConfigurationElement : configurationElementsFor) { | |
String contributorName = iConfigurationElement.getContributor().getName(); | |
String modelPath = iConfigurationElement.getAttribute(MODEL_PATH); | |
Resource resource = getResource(contributorName, modelPath); | |
EObject rootElement = resource.getContents().get(0); | |
junitSuite.addTest(new JUnitSwitch().doSwitch(rootElement)); | |
} | |
} | |
public static Resource getResource(String contributorName, String modelPath) { | |
URI uri = null; | |
if (modelPath.startsWith(PLATFORM_PLUGIN)) | |
uri = URI.createURI(modelPath); | |
else | |
uri = URI.createURI(PLATFORM_PLUGIN + contributorName + "/" + modelPath); //$NON-NLS-1$ | |
Resource resource = new RuntimePlatformResourceSet().getResource(uri, true); | |
return resource; | |
} | |
private static class JUnitSwitch extends TestSwitch<junit.framework.Test> { | |
@Override | |
public junit.framework.TestSuite caseTestSuite(TestSuite object) { | |
junit.framework.TestSuite testSuite = new junit.framework.TestSuite(object.getName()); | |
for (EObject eObject : object.eContents()) | |
testSuite.addTest(doSwitch(eObject)); | |
return testSuite; | |
} | |
@Override | |
public junit.framework.TestCase caseEGFTestCase(EGFTestCase object) { | |
return new ModelTestCase(object); | |
} | |
} | |
} |