Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEd Willink2017-12-12 21:18:00 +0000
committerEd Willink2018-01-18 12:00:05 +0000
commit0cf39e6ee25a196b600406f08b68b6a59376837c (patch)
tree2537bb1fc6f94b8e525ef90723a760d670f761e0
parentff30822c8be355a4d32243288e9444712fd8df93 (diff)
downloadorg.eclipse.qvtd-0cf39e6ee25a196b600406f08b68b6a59376837c.tar.gz
org.eclipse.qvtd-0cf39e6ee25a196b600406f08b68b6a59376837c.tar.xz
org.eclipse.qvtd-0cf39e6ee25a196b600406f08b68b6a59376837c.zip
[526558] Re-use AbstractTestQVT for ATL tests
-rw-r--r--tests/org.eclipse.qvtd.all.tests/.launches/All QVTd ATL Tests.launch1
-rw-r--r--tests/org.eclipse.qvtd.all.tests/META-INF/MANIFEST.MF3
-rw-r--r--tests/org.eclipse.qvtd.all.tests/src/org/eclipse/qvtd/all/tests/AllQVTdTests.java4
-rw-r--r--tests/org.eclipse.qvtd.atl.tests/META-INF/MANIFEST.MF3
-rw-r--r--tests/org.eclipse.qvtd.atl.tests/models/families2persons/Families2Persons_expected.qvtras2
-rw-r--r--tests/org.eclipse.qvtd.atl.tests/src/org/eclipse/qvtd/atl/tests/ATLExampleTests.java114
-rw-r--r--tests/org.eclipse.qvtd.atl.tests/src/org/eclipse/qvtd/atl/tests/ATLTestQVT.java319
-rw-r--r--tests/org.eclipse.qvtd.xtext.qvtbase.tests/src/org/eclipse/qvtd/xtext/qvtbase/tests/XtextTestCase.java2
-rw-r--r--tests/org.eclipse.qvtd.xtext.qvtrelation.tests/models/families2persons/Families2Persons_expected.qvtras2
9 files changed, 108 insertions, 342 deletions
diff --git a/tests/org.eclipse.qvtd.all.tests/.launches/All QVTd ATL Tests.launch b/tests/org.eclipse.qvtd.all.tests/.launches/All QVTd ATL Tests.launch
index 61f2ce7a5..00e75af32 100644
--- a/tests/org.eclipse.qvtd.all.tests/.launches/All QVTd ATL Tests.launch
+++ b/tests/org.eclipse.qvtd.all.tests/.launches/All QVTd ATL Tests.launch
@@ -13,4 +13,5 @@
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.qvtd.atl.tests.AllATLTests"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.qvtd.atl.tests"/>
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-ea"/>
+<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc}"/>
</launchConfiguration>
diff --git a/tests/org.eclipse.qvtd.all.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.qvtd.all.tests/META-INF/MANIFEST.MF
index bb40168fb..2a7fdf024 100644
--- a/tests/org.eclipse.qvtd.all.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.qvtd.all.tests/META-INF/MANIFEST.MF
@@ -20,7 +20,8 @@ Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
org.eclipse.qvtd.doc.bigmde2016.tests,
org.eclipse.qvtd.doc.exe2016.tests,
org.eclipse.qvtd.doc.minioclcs.xtext.tests,
- org.eclipse.qvtd.cs2as.compiler.tests
+ org.eclipse.qvtd.cs2as.compiler.tests,
+ org.eclipse.qvtd.atl.tests
Bundle-ActivationPolicy: lazy
Bundle-Vendor: %providerName
Bundle-Localization: plugin
diff --git a/tests/org.eclipse.qvtd.all.tests/src/org/eclipse/qvtd/all/tests/AllQVTdTests.java b/tests/org.eclipse.qvtd.all.tests/src/org/eclipse/qvtd/all/tests/AllQVTdTests.java
index 48528324d..2f6c3fecb 100644
--- a/tests/org.eclipse.qvtd.all.tests/src/org/eclipse/qvtd/all/tests/AllQVTdTests.java
+++ b/tests/org.eclipse.qvtd.all.tests/src/org/eclipse/qvtd/all/tests/AllQVTdTests.java
@@ -11,7 +11,7 @@
package org.eclipse.qvtd.all.tests;
import java.util.Arrays;
-
+import org.eclipse.qvtd.atl.tests.AllATLTests;
import org.eclipse.qvtd.compiler.tests.AllCompilerTests;
import org.eclipse.qvtd.cs2as.compiler.tests.OCL2QVTiTestCases;
import org.eclipse.qvtd.doc.bigmde2016.tests.AllbigMDE2016Tests;
@@ -47,7 +47,7 @@ public class AllQVTdTests extends TestCase
result.addTestSuite(GrammarTests.class);
result.addTestSuite(OCL2QVTiTestCases.class);
result.addTest(AllUMLXTests.suite());
- // result.addTest(AllATLTests.suite()); // ATL uses a different ANTLR to Xtext - must be run separately
+ result.addTest(AllATLTests.suite());
result.addTest(AllbigMDE2016Tests.suite()); // NB this is very slow since we are -ea
result.addTest(Allexe2016Tests.suite()); // NB this is very slow since we are -ea
result.addTestSuite(MiniOCLCSParsingTest.class);
diff --git a/tests/org.eclipse.qvtd.atl.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.qvtd.atl.tests/META-INF/MANIFEST.MF
index e2210ac82..c7ae31e9b 100644
--- a/tests/org.eclipse.qvtd.atl.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.qvtd.atl.tests/META-INF/MANIFEST.MF
@@ -17,5 +17,6 @@ Require-Bundle: org.junit,
org.eclipse.m2m.atl.emftvm.compiler;bundle-version="[4.0.0,5.0.0)",
org.eclipse.m2m.atl.dsls;bundle-version="[4.0.0,5.0.0)",
org.eclipse.m2m.atl.emftvm;bundle-version="[4.0.0,5.0.0)",
- org.eclipse.m2m.atl.engine;bundle-version="[4.0.0,5.0.0)"
+ org.eclipse.m2m.atl.engine;bundle-version="[4.0.0,5.0.0)",
+ org.eclipse.qvtd.xtext.qvtbase.tests
Automatic-Module-Name: org.eclipse.qvtd.atl.tests
diff --git a/tests/org.eclipse.qvtd.atl.tests/models/families2persons/Families2Persons_expected.qvtras b/tests/org.eclipse.qvtd.atl.tests/models/families2persons/Families2Persons_expected.qvtras
index 58398dbb6..08a39681a 100644
--- a/tests/org.eclipse.qvtd.atl.tests/models/families2persons/Families2Persons_expected.qvtras
+++ b/tests/org.eclipse.qvtd.atl.tests/models/families2persons/Families2Persons_expected.qvtras
@@ -2,7 +2,7 @@
<qvtr:RelationModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:pivot="http://www.eclipse.org/ocl/2015/Pivot"
xmlns:qvtb="http://www.eclipse.org/qvt/2015/QVTbase" xmlns:qvtr="http://www.eclipse.org/qvt/2015/QVTrelation" xmlns:qvtt="http://www.eclipse.org/qvt/2015/QVTtemplate"
xsi:schemaLocation="http://www.eclipse.org/ocl/2015/Pivot java://org.eclipse.ocl.pivot.PivotPackage http://www.eclipse.org/qvt/2015/QVTbase java://org.eclipse.qvtd.pivot.qvtbase.QVTbasePackage http://www.eclipse.org/qvt/2015/QVTrelation java://org.eclipse.qvtd.pivot.qvtrelation.QVTrelationPackage http://www.eclipse.org/qvt/2015/QVTtemplate java://org.eclipse.qvtd.pivot.qvttemplate.QVTtemplatePackage"
- xmi:id="AAAAA" externalURI="platform:/resource/org.eclipse.qvtd.atl.tests/models/families2persons/Families2Persons_CG.qvtras"
+ xmi:id="AAAAA" externalURI="platform:/resource/QVTd_ATLExampleTests__testATL2QVTr_Families2Persons_CG/Families2Persons_CG.qvtras"
name="Families2Persons_CG.qvtras" xmiidVersion="1">
<ownedPackages xmi:id="6Fh3I" name="">
<ownedClasses xsi:type="qvtr:RelationalTransformation" xmi:id="lSZ2I" name="Families2Persons">
diff --git a/tests/org.eclipse.qvtd.atl.tests/src/org/eclipse/qvtd/atl/tests/ATLExampleTests.java b/tests/org.eclipse.qvtd.atl.tests/src/org/eclipse/qvtd/atl/tests/ATLExampleTests.java
index 441528e57..eed71f008 100644
--- a/tests/org.eclipse.qvtd.atl.tests/src/org/eclipse/qvtd/atl/tests/ATLExampleTests.java
+++ b/tests/org.eclipse.qvtd.atl.tests/src/org/eclipse/qvtd/atl/tests/ATLExampleTests.java
@@ -10,49 +10,126 @@
*******************************************************************************/
package org.eclipse.qvtd.atl.tests;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.xmi.XMLResource;
import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.m2m.atl.core.emf.EMFModel;
+import org.eclipse.m2m.atl.dsls.core.EMFTCSInjector;
+import org.eclipse.m2m.atl.emftvm.EmftvmFactory;
+import org.eclipse.m2m.atl.emftvm.compiler.AtlResourceFactoryImpl;
+import org.eclipse.m2m.atl.engine.parser.AtlParser;
+import org.eclipse.ocl.examples.codegen.dynamic.JavaFileUtil;
+import org.eclipse.ocl.pivot.resource.ASResource;
+import org.eclipse.ocl.pivot.resource.ProjectManager;
+import org.eclipse.ocl.pivot.utilities.XMIUtil;
+import org.eclipse.qvtd.compiler.AbstractCompilerChain;
+import org.eclipse.qvtd.compiler.CompilerChain.Key;
+import org.eclipse.qvtd.compiler.QVTrCompilerChain;
import org.eclipse.qvtd.pivot.qvtimperative.model.QVTimperativeLibrary;
-import org.eclipse.qvtd.pivot.qvtrelation.utilities.QVTrelationToStringVisitor;
import org.eclipse.qvtd.runtime.evaluation.InvalidEvaluationException;
import org.eclipse.qvtd.runtime.evaluation.Transformer;
+import org.eclipse.qvtd.xtext.qvtbase.tests.AbstractTestQVT;
+import org.eclipse.qvtd.xtext.qvtbase.tests.LoadTestCase;
+import org.eclipse.qvtd.xtext.qvtbase.tests.utilities.XtextCompilerUtil;
import org.junit.Test;
-import junit.framework.TestCase;
-
/**
* Tests that ATL-based examples work.
*/
-public class ATLExampleTests extends TestCase
+public class ATLExampleTests extends LoadTestCase
{
- protected void doATLExampleTest_CG(@NonNull URI testFolderURI, @NonNull String testName) throws Exception {
- ATLTestQVT myQVT = new ATLTestQVT(testName.toLowerCase());
+ protected static class MyQVT extends AbstractTestQVT
+ {
+ public final static @NonNull Map<Object, Object> defaultSavingOptions;
+
+ // FIXME use a better default strategy for the saving options
+ static {
+ defaultSavingOptions = new HashMap<Object, Object>();
+ defaultSavingOptions.put(XMLResource.OPTION_ENCODING, "UTF-8");
+ defaultSavingOptions.put(XMLResource.OPTION_LINE_DELIMITER, "\n");
+ defaultSavingOptions.put(XMLResource.OPTION_SCHEMA_LOCATION, Boolean.TRUE);
+ defaultSavingOptions.put(XMLResource.OPTION_SCHEMA_LOCATION_IMPLEMENTATION, Boolean.TRUE);
+ defaultSavingOptions.put(XMLResource.OPTION_LINE_WIDTH, Integer.valueOf(132));
+ defaultSavingOptions.put(ASResource.OPTION_NORMALIZE_CONTENTS, Boolean.TRUE);
+ }
+
+ public MyQVT(@NonNull ProjectManager projectManager, @NonNull String testProjectName, @NonNull URI testBundleURI, @NonNull URI txURI, @NonNull URI prefixURI, @NonNull URI srcFileURI, @NonNull URI binFileURI) {
+ super(projectManager, testProjectName, testBundleURI, txURI, prefixURI, srcFileURI, binFileURI);
+ environmentFactory.getResourceSet().getResourceFactoryRegistry().getExtensionToFactoryMap().put("atl", new AtlResourceFactoryImpl());
+ // getMetamodelManager().getASResourceSet().getResourceFactoryRegistry().getExtensionToFactoryMap().put("atl", new AtlResourceFactoryImpl()); // FIXME wrong ResourceSet
+ // Ensure ATL parser support is on classpath
+ AtlParser.class.getName();
+ EMFModel.class.getName();
+ EMFTCSInjector.class.getName();
+ EmftvmFactory.class.getName();
+ }
+
+ protected void checkOutput(@NonNull Resource outputResource, @NonNull URI referenceModelURI) throws IOException, InterruptedException {
+ Resource referenceResource = outputResource.getResourceSet().getResource(referenceModelURI, true);
+ assert referenceResource != null;
+ assertSameModel(referenceResource, outputResource);
+ }
+
+ @Override
+ protected @NonNull AbstractCompilerChain createCompilerChain(@NonNull URI txURI, @NonNull URI prefixURI,
+ @NonNull Map<@NonNull String, @Nullable Map<@NonNull Key<Object>, @Nullable Object>> options) {
+ return new QVTrCompilerChain(getEnvironmentFactory(), txURI, prefixURI, options);
+ }
+
+ @Override
+ protected @NonNull String getBasePrefix() {
+ return "org.eclipse.qvtd.atl.tests";
+ }
+
+ @Override
+ public @NonNull Map<Object, Object> getSaveOptions() {
+ Map<Object, Object> saveOptions = new HashMap<>(defaultSavingOptions);
+ saveOptions.put(ASResource.OPTION_NORMALIZE_CONTENTS, Boolean.TRUE);
+ return saveOptions;
+ }
+ }
+
+ protected @NonNull MyQVT createQVT(@NonNull String resultPrefix, @NonNull URI txURI) throws Exception {
+ ProjectManager testProjectManager = getTestProjectManager();
+ URI prefixURI = getTestURI(resultPrefix);
+ URI srcFileURI = getTestFileURI(JavaFileUtil.TEST_SRC_FOLDER_NAME + "/");
+ URI binFileURI = getTestFileURI(JavaFileUtil.TEST_BIN_FOLDER_NAME + "/");
+ return new MyQVT(testProjectManager, getTestProject().getName(), getTestBundleURI(), txURI, prefixURI, srcFileURI, binFileURI);
+ }
+
+ protected void doATLExampleTest_CG(@NonNull String resultPrefix, @NonNull URI atlURI) throws Exception {
+ MyQVT myQVT = createQVT(resultPrefix, atlURI);
try {
Class<?> txClass = Class.forName("org.eclipse.qvtd.atl.atl2qvtr.ATL2QVTr"); // FIXME Use direct reference once generation works redliably
@SuppressWarnings({"unchecked", "null"})
@NonNull Class<? extends Transformer> txCastClass = (Class<? extends Transformer>)txClass;
myQVT.createGeneratedExecutor(txCastClass);
- URI atlURI = testFolderURI.appendSegment(testName + ".atl");
- URI atlXMIURI = myQVT.makeWriteable(atlURI.appendFileExtension("xmi"));
+ URI atlXMIURI = getTestURIWithExtension(atlURI, "xmi");
Resource atlResource = myQVT.loadInput("atl", atlURI);
assert atlResource != null;
EList<@NonNull EObject> contents = atlResource.getContents();
assert !contents.isEmpty() : "ATL's ANTLR cannot co-exist with Xext's ANTLR - run test separately";
Resource atlXmiResource = atlResource.getResourceSet().createResource(atlXMIURI);
atlXmiResource.getContents().addAll(contents);
- atlXmiResource.save(null);
+ atlXmiResource.save(XMIUtil.createSaveOptions());
contents.addAll(atlXmiResource.getContents());
- URI outputURI = testFolderURI.appendSegment(testName + "_CG.qvtras");
+ String name = atlURI.trimFileExtension().lastSegment();
+ URI outputURI = getTestURIWithExtension(atlURI.trimSegments(1).appendSegment(name + "_CG.qvtras"), "qvtras");
try {
@SuppressWarnings("unused")
Transformer executeTransformation = myQVT.executeTransformation();
- myQVT.saveOutput("qvtr", outputURI, testFolderURI.appendSegment(testName + "_expected.qvtras"));
+ myQVT.saveOutput("qvtr", outputURI, atlURI.trimSegments(1).appendSegment(name + "_expected.qvtras"), null);
}
catch (InvalidEvaluationException e) {
- myQVT.saveOutput("qvtr", outputURI, null);
+ myQVT.saveOutput("qvtr", outputURI, null, null);
throw e;
}
}
@@ -61,14 +138,19 @@ public class ATLExampleTests extends TestCase
}
}
+ @Override
+ protected void setUp() throws Exception {
+ QVTimperativeLibrary.install();
+ XtextCompilerUtil.doQVTrelationSetup();
+ super.setUp();
+ }
+
@Test
public void testATL2QVTr_Families2Persons_CG() throws Exception {
// AbstractTransformer.EXCEPTIONS.setState(true);
// AbstractTransformer.INVOCATIONS.setState(true);
- // PivotStandaloneSetup.init();
- QVTimperativeLibrary.install();
- QVTrelationToStringVisitor.FACTORY.getClass();
- doATLExampleTest_CG(URI.createPlatformResourceURI("org.eclipse.qvtd.atl.tests/models/families2persons", true), "Families2Persons");
+ // QVTrelationToStringVisitor.FACTORY.getClass();
+ doATLExampleTest_CG("Families2Persons", getModelsURI("families2persons/Families2Persons.atl"));
}
/* @Test
diff --git a/tests/org.eclipse.qvtd.atl.tests/src/org/eclipse/qvtd/atl/tests/ATLTestQVT.java b/tests/org.eclipse.qvtd.atl.tests/src/org/eclipse/qvtd/atl/tests/ATLTestQVT.java
deleted file mode 100644
index d3d9f8715..000000000
--- a/tests/org.eclipse.qvtd.atl.tests/src/org/eclipse/qvtd/atl/tests/ATLTestQVT.java
+++ /dev/null
@@ -1,319 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2012, 2017 Willink Transformations 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:
- * E.D.Willink - initial API and implementation
- *******************************************************************************/
-package org.eclipse.qvtd.atl.tests;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.charset.Charset;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IWorkspaceRoot;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.emf.common.EMFPlugin;
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.EPackage.Registry;
-import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.emf.ecore.EStructuralFeature.Setting;
-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.util.EcoreUtil;
-import org.eclipse.emf.ecore.xmi.XMLResource;
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jdt.annotation.Nullable;
-import org.eclipse.m2m.atl.core.emf.EMFModel;
-import org.eclipse.m2m.atl.dsls.core.EMFTCSInjector;
-import org.eclipse.m2m.atl.emftvm.EmftvmFactory;
-import org.eclipse.m2m.atl.emftvm.compiler.AtlResourceFactoryImpl;
-import org.eclipse.m2m.atl.emftvm.compiler.AtlResourceImpl;
-import org.eclipse.m2m.atl.engine.parser.AtlParser;
-import org.eclipse.ocl.pivot.internal.resource.ProjectMap;
-import org.eclipse.ocl.pivot.internal.resource.StandaloneProjectMap;
-import org.eclipse.ocl.pivot.resource.ASResource;
-import org.eclipse.ocl.pivot.utilities.ClassUtil;
-import org.eclipse.ocl.pivot.utilities.PivotUtil;
-import org.eclipse.qvtd.pivot.qvtimperative.evaluation.BasicQVTiExecutor;
-import org.eclipse.qvtd.pivot.qvtimperative.evaluation.QVTiEnvironmentFactory;
-import org.eclipse.qvtd.pivot.qvtimperative.evaluation.QVTiTransformationExecutor;
-import org.eclipse.qvtd.pivot.qvtimperative.utilities.QVTimperative;
-import org.eclipse.qvtd.pivot.qvtrelation.utilities.QVTrelationASResourceFactory;
-import org.eclipse.qvtd.runtime.evaluation.InvalidEvaluationException;
-import org.eclipse.qvtd.runtime.evaluation.InvocationManager;
-import org.eclipse.qvtd.runtime.evaluation.Transformer;
-import org.eclipse.xtext.util.EmfFormatter;
-import junit.framework.TestCase;
-
-public class ATLTestQVT extends QVTimperative
-{
- public class AtlResourceFactoryImpl_514599 extends AtlResourceFactoryImpl // FIXME workaround BUG 514599
- {
- @Override
- public Resource createResource(URI uri) {
- return new AtlResourceImpl_514599(uri);
- }
- }
-
- public static class AtlResourceImpl_514599 extends AtlResourceImpl // FIXME workaround BUG 514599
- {
- public AtlResourceImpl_514599(URI uri) {
- super(uri);
- }
-
- @Override
- protected Charset getCharset() throws IOException {
- final URI uri = getURI();
- if (uri != null && uri.isPlatformResource() && EMFPlugin.IS_ECLIPSE_RUNNING) {
- final IWorkspaceRoot wr = ResourcesPlugin.getWorkspace().getRoot();
- final IResource r = wr.findMember(uri.toPlatformString(true));
- if (r instanceof IFile) {
- try {
- return Charset.forName(((IFile)r).getCharset());
- } catch (CoreException e) {
- throw new ATLIOException(e);
- }
- }
- }
- return Charset.defaultCharset();
- }
-
- /**
- * Registers any dynamic EPackage URIs in <code>res</code>.
- *
- * @param res
- * the resource containing the EPackages
- * @throws IOException
- * if the nsURIs from EPackages from r are already registered by other EPackages
- */
- @Override
- protected void registerEPackages(final Resource res) throws IOException {
- final ResourceSet rs = getResourceSet();
- final Registry r = rs.getPackageRegistry();
- for (EObject o : res.getContents()) {
- if (o instanceof EPackage) {
- EPackage p = (EPackage)o;
- Object existing = r.get(p.getNsURI());
- if (existing instanceof EPackage.Descriptor) {
- existing = ((EPackage.Descriptor)existing).getEPackage();
- }
- if (existing != null && existing != p) {
- throw new IOException(String.format("EPackage with URI \"%s\" already registered by another EPackage instance",
- p.getNsURI()));
- }
- r.put(p.getNsURI(), p);
- }
- }
- }
- }
-
- static final @NonNull String PROJECT_NAME = "org.eclipse.qvtd.atl.tests";
- // static final @NonNull URI TESTS_BASE_URI = URI.createPlatformResourceURI("/" + PROJECT_NAME + "/bin/" + PROJECT_NAME.replace(".", "/"), true);
-
- private static StandaloneProjectMap projectMap = null;
-
- public static @NonNull StandaloneProjectMap getProjectMap() {
- StandaloneProjectMap projectMap2 = projectMap;
- if (projectMap2 == null) {
- projectMap = projectMap2 = EMFPlugin.IS_ECLIPSE_RUNNING ? new ProjectMap(false) : new StandaloneProjectMap(false);
- }
- return projectMap2;
- }
-
- public final static @NonNull Map<Object, Object> defaultSavingOptions;
-
- // FIXME use a better default strategy for the saving options
- static {
- defaultSavingOptions = new HashMap<Object, Object>();
- defaultSavingOptions.put(XMLResource.OPTION_ENCODING, "UTF-8");
- defaultSavingOptions.put(XMLResource.OPTION_LINE_DELIMITER, "\n");
- defaultSavingOptions.put(XMLResource.OPTION_SCHEMA_LOCATION, Boolean.TRUE);
- defaultSavingOptions.put(XMLResource.OPTION_SCHEMA_LOCATION_IMPLEMENTATION, Boolean.TRUE);
- defaultSavingOptions.put(XMLResource.OPTION_LINE_WIDTH, Integer.valueOf(132));
- defaultSavingOptions.put(ASResource.OPTION_NORMALIZE_CONTENTS, Boolean.TRUE);
- }
-
- public static void assertSameModel(@NonNull Resource expectedResource, @NonNull Resource actualResource) throws IOException, InterruptedException {
- String expected = EmfFormatter.listToStr(expectedResource.getContents());
- String actual = EmfFormatter.listToStr(actualResource.getContents());
- TestCase.assertEquals(expected, actual);
- }
-
- // protected final @NonNull URI testFolderURI;
- private BasicQVTiExecutor interpretedExecutor = null;
- private QVTiTransformationExecutor generatedExecutor = null;
-
- public ATLTestQVT(@NonNull String testFolderName) {
- super(new QVTiEnvironmentFactory(getProjectMap(), null));
- // this.testFolderURI = TESTS_BASE_URI.appendSegment(testFolderName);
- getMetamodelManager().getASResourceSet().getResourceFactoryRegistry().getExtensionToFactoryMap().put("atl", new AtlResourceFactoryImpl_514599()); // FIXME wrong ResourceSet
- // Ensure ATL parser support is classpath
- AtlParser.class.getName();
- EMFModel.class.getName();
- EMFTCSInjector.class.getName();
- EmftvmFactory.class.getName();
- }
-
- protected void checkOutput(@NonNull Resource outputResource, @NonNull URI referenceModelURI) throws IOException, InterruptedException {
- Resource referenceResource = outputResource.getResourceSet().getResource(referenceModelURI, true);
- assert referenceResource != null;
- assertSameModel(referenceResource, outputResource);
- }
-
- public QVTiTransformationExecutor createGeneratedExecutor(@NonNull Class<? extends Transformer> txClass) throws Exception {
- return generatedExecutor = new QVTiTransformationExecutor(getEnvironmentFactory(), txClass);
- }
-
- // public @Nullable Resource createModel(@NonNull String modelName, @NonNull String modelFile) {
- // URI modelURI = testFolderURI.appendSegment(modelFile);
- // return interpretedExecutor.createModel(modelName, modelURI, null);
- // }
-
- @Override
- public synchronized void dispose() {
- super.dispose();
- if (interpretedExecutor != null) {
- interpretedExecutor.dispose();
- }
- }
-
- public Transformer executeTransformation() throws Exception {
- if (interpretedExecutor != null) {
- interpretedExecutor.execute();
- interpretedExecutor.saveModels(defaultSavingOptions);
- return null;
- }
- else {
- Transformer transformer = generatedExecutor.getTransformer();
- // transformer.run(); // FIXME BUG 511028
- if (!transformer.run()) {
- InvocationManager invocationManager = transformer.getInvocationManager();
- invocationManager.flush();
- // if (!suppressFailureDiagnosis) { // FIXME BUG 511028
- StringBuilder s = new StringBuilder();
- invocationManager.diagnoseWorkLists(s);
- throw new InvalidEvaluationException("Failed to execute" + s.toString());
- // }
- }
- return transformer;
- }
- }
-
- public @NonNull Collection<@NonNull ? extends Object> getRootObjects(@NonNull String modelName) {
- if (interpretedExecutor != null) {
- return interpretedExecutor.getRootObjects(modelName);
- }
- else {
- return generatedExecutor.getTransformer().getRootObjects(modelName);
- }
- }
-
- public @NonNull Map<Object, Object> getSaveOptions() {
- Map<Object, Object> saveOptions = new HashMap<>(defaultSavingOptions);
- saveOptions.put(ASResource.OPTION_NORMALIZE_CONTENTS, Boolean.TRUE);
- return saveOptions;
- }
-
- public @Nullable Resource loadInput(@NonNull String modelName, @NonNull URI modelURI) {
- if (interpretedExecutor != null) {
- return interpretedExecutor.loadModel(modelName, modelURI);
- }
- else {
- ResourceSet resourceSet = environmentFactory.getMetamodelManager().getASResourceSet(); // FIXME get package registrations in exteranl RespurcSet
- PivotUtil.initializeLoadOptionsToSupportSelfReferences(resourceSet);
- Resource inputResource = resourceSet.getResource(modelURI, true);
- generatedExecutor.getTransformer().addRootObjects(modelName, ClassUtil.nonNullState(inputResource.getContents()));
- return inputResource;
- }
- }
-
- public @NonNull URI makeWriteable(@NonNull URI uri) {
- assert uri.isPlatformResource();
- if (EMFPlugin.IS_ECLIPSE_RUNNING) {
- String projectName = uri.segment(1);
- /* Bundle bundle = Platform.getBundle(projectName);
- String location = bundle.getLocation();
- if (location.startsWith("initial@")) {
- try {
- bundle.start();
- } catch (BundleException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- location = bundle.getLocation();
- }
- assert location.startsWith("reference:file:") : "Unexpected prefix for " + location + " for " + projectName;
- assert location.endsWith("/") : "Unexpected suffix for " + location + " for " + projectName;
- URI locationURI = URI.createFileURI(location.substring(15, location.length()-1));
- assert locationURI != null;
- for (int i = 2; i < uri.segmentCount(); i++) {
- locationURI = locationURI.appendSegment(uri.segment(i));
- } */
- File projectFile;
- try {
- projectFile = File.createTempFile("qvtdtest", uri.lastSegment());
- projectFile.deleteOnExit();
- uri = URI.createFileURI(projectFile.toString());
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- else {
- // FIXME delete any old file
- }
- return uri;
- }
-
- // FIXME null referenceModelURI used as proxy rescue
- public @NonNull Resource saveOutput(@NonNull String modelName, @NonNull URI modelURI, @Nullable URI referenceModelURI) throws IOException, InterruptedException {
- ResourceSet resourceSet = /*getResourceSet()*/environmentFactory.getMetamodelManager().getASResourceSet();
- resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("qvtras", new QVTrelationASResourceFactory());
- Resource outputResource;
- URI writeableModelURI = makeWriteable(modelURI);
- if (interpretedExecutor != null) {
- interpretedExecutor.setExternalURI(modelName, modelURI);
- outputResource = interpretedExecutor.saveModel(modelName, writeableModelURI, null, getSaveOptions());
- }
- else {
- generatedExecutor.getTransformer().setExternalURI(modelName, modelURI);
- outputResource = resourceSet.createResource(writeableModelURI);
- outputResource.getContents().addAll(generatedExecutor.getTransformer().getRootEObjects(modelName));
- if (referenceModelURI == null) {
- Map<EObject, Collection<Setting>> find = EcoreUtil.UnresolvedProxyCrossReferencer.find(outputResource);
- for (EObject eObject : find.keySet()) {
- assert eObject != null;
- outputResource.getContents().add(eObject);
- Collection<Setting> settings = find.get(eObject);
- assert settings != null;
- for (Setting s : settings) {
- @SuppressWarnings("unused") EObject eObject2 = s.getEObject();
- @SuppressWarnings("unused") EStructuralFeature eStructuralFeature = s.getEStructuralFeature();
- }
- ((InternalEObject)eObject).eSetProxyURI(null);
- };
- }
- // ((XMLResource)outputResource).getEObjectToIDMap().clear();
- // ((XMLResource)outputResource).getIDToEObjectMap().clear();
- outputResource.save(getSaveOptions());
- }
- assert outputResource != null;
- if (referenceModelURI != null) {
- checkOutput(outputResource, referenceModelURI);
- }
- return outputResource;
- }
-} \ No newline at end of file
diff --git a/tests/org.eclipse.qvtd.xtext.qvtbase.tests/src/org/eclipse/qvtd/xtext/qvtbase/tests/XtextTestCase.java b/tests/org.eclipse.qvtd.xtext.qvtbase.tests/src/org/eclipse/qvtd/xtext/qvtbase/tests/XtextTestCase.java
index cd21f94f9..e6ce95831 100644
--- a/tests/org.eclipse.qvtd.xtext.qvtbase.tests/src/org/eclipse/qvtd/xtext/qvtbase/tests/XtextTestCase.java
+++ b/tests/org.eclipse.qvtd.xtext.qvtbase.tests/src/org/eclipse/qvtd/xtext/qvtbase/tests/XtextTestCase.java
@@ -354,7 +354,7 @@ public class XtextTestCase extends PivotTestCase
protected @NonNull TestProject getTestProject() {
TestProject testProject2 = testProject;
if (testProject2 == null) {
- String testProjectName = getClass().getSimpleName() + "__" + getTestName();
+ String testProjectName = "QVTd_" + getClass().getSimpleName() + "__" + getTestName();
testProject = testProject2 = getTestFileSystem().getTestProject(testProjectName, true);
}
return testProject2;
diff --git a/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/models/families2persons/Families2Persons_expected.qvtras b/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/models/families2persons/Families2Persons_expected.qvtras
index 608f4d355..f3554b3d5 100644
--- a/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/models/families2persons/Families2Persons_expected.qvtras
+++ b/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/models/families2persons/Families2Persons_expected.qvtras
@@ -2,7 +2,7 @@
<qvtr:RelationModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:pivot="http://www.eclipse.org/ocl/2015/Pivot"
xmlns:qvtb="http://www.eclipse.org/qvt/2015/QVTbase" xmlns:qvtr="http://www.eclipse.org/qvt/2015/QVTrelation" xmlns:qvtt="http://www.eclipse.org/qvt/2015/QVTtemplate"
xsi:schemaLocation="http://www.eclipse.org/ocl/2015/Pivot java://org.eclipse.ocl.pivot.PivotPackage http://www.eclipse.org/qvt/2015/QVTbase java://org.eclipse.qvtd.pivot.qvtbase.QVTbasePackage http://www.eclipse.org/qvt/2015/QVTrelation java://org.eclipse.qvtd.pivot.qvtrelation.QVTrelationPackage http://www.eclipse.org/qvt/2015/QVTtemplate java://org.eclipse.qvtd.pivot.qvttemplate.QVTtemplatePackage"
- xmi:id="AAAAA" externalURI="platform:/resource/QVTrCompilerTests__testQVTrCompiler_ATL2QVTr_CG/Families2Persons_CG.qvtras"
+ xmi:id="AAAAA" externalURI="platform:/resource/QVTd_QVTrCompilerTests__testQVTrCompiler_ATL2QVTr_CG/Families2Persons_CG.qvtras"
name="Families2Persons_CG.qvtras" xmiidVersion="1">
<ownedPackages xmi:id="6Fh3I" name="">
<ownedClasses xsi:type="qvtr:RelationalTransformation" xmi:id="lSZ2I" name="Families2Persons">

Back to the top