blob: 81a69a98157ff1bd4d3762cdeafcb0058cce9b2c [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007 Borland Software Corporation
*
* 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:
* Borland Software Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.m2m.tests.qvt.oml.transform;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import junit.framework.Test;
import junit.framework.TestSuite;
import org.eclipse.m2m.tests.qvt.oml.transform.javaless.JavalessQvtTest;
import org.eclipse.m2m.tests.qvt.oml.transform.javaless.JavalessUtil;
/**
* @author pkobiakov
*/
public class TransformTests {
public static Test suite() {
return interpreterSuite();
}
public static TestSuite interpreterSuite() {
TestSuite suite = new TestSuite("QVT interpreter"); //$NON-NLS-1$
ModelTestData[] datas = createTestData();
suite.addTest(new TestFailedTransformation(new FileToFileData("scr878"))); //$NON-NLS-1$
for (ModelTestData data : datas) {
suite.addTest(new TestQvtInterpreter(data));
}
suite.addTestSuite(TestStackTrace.class);
suite.addTestSuite(TestInvalidConfigProperty.class);
return suite;
}
public static TestSuite javalessSuite() {
TestSuite suite = new TestSuite("QVT javaless"); //$NON-NLS-1$
ModelTestData[] datas = createTestData();
for (ModelTestData data : datas) {
if(!JAVALESS_EXCLUDES.contains(data.getName()) && JavalessUtil.isValidJavalessData(data)) {
JavalessQvtTest test = new JavalessQvtTest(data);
suite.addTest(test);
}
}
return suite;
}
public static TestSuite walkerSuite() {
TestSuite suite = new TestSuite("QVT walker"); //$NON-NLS-1$
ModelTestData[] datas = createTestData();
for (ModelTestData data : datas) {
suite.addTest(new TestQvtWalker(data));
}
return suite;
}
public static ModelTestData[] createTestData() {
return new ModelTestData[] {
new FileToFileData("operation_override"), //$NON-NLS-1$
new FileToFileData("fqnMainCalls_272937"), //$NON-NLS-1$
new FileToFileData("fqnMainCalls_271987"), //$NON-NLS-1$
new FileToFileData("fqnOperationCalls_271789"), //$NON-NLS-1$
new FileToFileData("importedInstances"), //$NON-NLS-1$
new FileToFileData("import_access_extends"), //$NON-NLS-1$
new FileToFileData("import_access_extends_cfgprop", new String[][] { //$NON-NLS-1$
new String[] { "attrNum", "10" }, //$NON-NLS-1$ //$NON-NLS-2$
new String[] { "outClassName", "ClassFromImportedTransf3_cfgprop" } //$NON-NLS-1$ //$NON-NLS-2$
}),
new FileToFileData("slashSingleLineComments_266478"), //$NON-NLS-1$
new FileToFileData("nestedPropertiesAssignment_262757"), //$NON-NLS-1$
new FileToFileData("listLiteral_259754"), //$NON-NLS-1$
new FileToFileData("escape_sequences_250630"), //$NON-NLS-1$
new FileToFileData("multilineStrings_262733"), //$NON-NLS-1$
new FileToFileData("doubleQuoteStrings_262734"), //$NON-NLS-1$
new FileToFileData("varInitGroup_261841"), //$NON-NLS-1$
new FileToFileData("chainedAssignments_261024"), //$NON-NLS-1$
new FileToFileData("_while_261024"), //$NON-NLS-1$
new FileToFileData("varInitExpWithResult_260985"), //$NON-NLS-1$
new FileToFileData("stdlibModel"), //$NON-NLS-1$
new FileToFileData("stdlibList"), //$NON-NLS-1$
new FileToFileData("stdlibDict"), //$NON-NLS-1$
new FileToFileData("libraryHeaderWithSignature_257575"), //$NON-NLS-1$
new FileToFileData("intermSimple"), //$NON-NLS-1$
new FilesToFilesData("intermProperties", Collections.<String>emptyList(), Arrays.asList("intermProperties.ecore")), //$NON-NLS-1$ //$NON-NLS-2$
new FilesToFilesData("intermWithCrossRefs", Collections.<String>emptyList(), Arrays.asList("intermWithCrossRefs.ecore")), //$NON-NLS-1$ //$NON-NLS-2$
new FilesToFilesData("intermWithExtends", Collections.<String>emptyList(), Arrays.asList("intermWithExtends.ecore")), //$NON-NLS-1$ //$NON-NLS-2$
new FileToFileData("intermWithoutExtent"), //$NON-NLS-1$
new FilesToFilesData("constructors", Collections.<String>emptyList(), Arrays.asList("constructors_x.ecore", "constructors_y.ecore")), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
new FileToFileData("libraryWithModuleElements_257184"), //$NON-NLS-1$
new FileToFileData("transformationWithModuleElements_257055"), //$NON-NLS-1$
new FileToFileData("objectExpBodyExpressions_253051"), //$NON-NLS-1$
new FileToFileData("mappingBodyExpressions_252358"), //$NON-NLS-1$
new FileToFileData("blackboxlib_annotation_java"), //$NON-NLS-1$
new FileToFileData("helperSimpleDef_252173"), //$NON-NLS-1$
new FileToFileData("compositetransf"), //$NON-NLS-1$
new FileToFileData("computeExp_250403"), //$NON-NLS-1$
new FileToFileData("forExp_245275"), //$NON-NLS-1$
new FileToFileData("bug244701"), //$NON-NLS-1$
new FileToFileData("virtualPredefinedTypeOpers"), //$NON-NLS-1$
new FileToFileData("blackboxlib_237781"), //$NON-NLS-1$
new FileToFileData("bug233984"), //$NON-NLS-1$
new FileToFileData("collectionMappingResult"), //$NON-NLS-1$
new FileToFileData("intermediateprop_import"), //$NON-NLS-1$
new FileToFileData("intermediateprop_resolve", "in.simpleuml", "expected.simpleuml"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
new FileToFileData("intermediateprop_trace", "in.simpleuml", "expected.simpleuml"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
new FilesToFilesData("multiresultpars", Collections.singletonList("in.ecore"), Arrays.asList("expected_x.ecore", "expected_y.ecore")), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
new FilesToFilesData("simpletag", Collections.<String>emptyList(), Collections.<String>emptyList()), //$NON-NLS-1$
new FileToFileData("stdlibString"), //$NON-NLS-1$
new FilesToFilesData("stdlibelement", Collections.singletonList("in.ecore"), Arrays.asList("expected_x.ecore", "expected_y.ecore")), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
new FileToFileData("mapDisjuncts"), //$NON-NLS-1$
new FileToFileData("mapInherits"), //$NON-NLS-1$
new FileToFileData("mapMultipleInherits"), //$NON-NLS-1$
new FileToFileData("mapMerges"), //$NON-NLS-1$
new FileToFileData("bug2437_1"), //$NON-NLS-1$
new FileToFileData("bug2437_2"), //$NON-NLS-1$
new FileToFileData("bug2437_3"), //$NON-NLS-1$
new FileToFileData("bug2437_4"), //$NON-NLS-1$
new FileToFileData("bug2437_5"), //$NON-NLS-1$
new FileToFileData("bug2839"), //$NON-NLS-1$
new FileToFileData("populationSection"), //$NON-NLS-1$
new FileToFileData("inoutMapping"), //$NON-NLS-1$
new FileToFileData("objectExp"), //$NON-NLS-1$
new FileToFileData("bug2787"), //$NON-NLS-1$
new FileToFileData("bug2741"), //$NON-NLS-1$
new FileToFileData("bug2732"), //$NON-NLS-1$
new FileToFileData("bug_214938"), //$NON-NLS-1$
new FileToFileData("moduleProperty"), //$NON-NLS-1$
new FileToFileData("simplestXCollectShorthand"), //$NON-NLS-1$
new FileToFileData("bug216317"), //$NON-NLS-1$
new FileToFileData("oclAllInstances"), //$NON-NLS-1$
new FileToFileData("_while"), //$NON-NLS-1$
new FileToFileData("bug214718"), //$NON-NLS-1$
new FileToFileData("oclannotation", "in.ecore", "expected.xmi").includeMetamodelFile("metamodel.ecore"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
new FileToFileData("importedvirtuals"), //$NON-NLS-1$
new FileToFileData("ocl_test"), //$NON-NLS-1$
new FileToFileData("tuples"), //$NON-NLS-1$
new FileToFileData("oclany"), //$NON-NLS-1$
new FileToFileData("modifyvar"), //$NON-NLS-1$
new FileToFileData("abstractresult"), //$NON-NLS-1$
new FileToFileData("bagorderedsetintersection"), //$NON-NLS-1$
new FileToFileData("nullsource"), //$NON-NLS-1$
new FileToFileData("isunique"), //$NON-NLS-1$
new FileToFileData("fqntraces"), //$NON-NLS-1$
new FileToFileData("equndefined"), //$NON-NLS-1$
new FileToFileData("propertycollect"), //$NON-NLS-1$
new FileToFileData("resolvenoinput"), //$NON-NLS-1$
new FileToFileData("addundefined"), //$NON-NLS-1$
new FileToFileData("propuseprop"), //$NON-NLS-1$
new FileToFileData("importedprops", new String[][] { //$NON-NLS-1$
{"t1", "some"}//$NON-NLS-1$ //$NON-NLS-2$
}),
new FileToFileData("resolveall"), //$NON-NLS-1$
new FileToFileData("egetcodegen"), //$NON-NLS-1$
new FileToFileData("imports"), //$NON-NLS-1$
new FileToFileData("imports_transformations"), //$NON-NLS-1$
new FileToFileData("assigntoprimfeature"), //$NON-NLS-1$
new FileToFileData("assigntonullowner"), //$NON-NLS-1$
new FileToFileData("firstlast"), //$NON-NLS-1$
new FileToFileData("accessbooleans", "testqvt.testqvt", "expected.ecore"), //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
new FileToFileData("localstrings"), //$NON-NLS-1$
new FileToFileData("castinttodouble"), //$NON-NLS-1$
new FileToFileData("stringescaping"), //$NON-NLS-1$
new FileToFileData("exists"), //$NON-NLS-1$
new FileToFileData("nestednativeops"), //$NON-NLS-1$
new FileToFileData("scr23070"), //$NON-NLS-1$
new FileToFileData("iterateoverintset"), //$NON-NLS-1$
new FileToFileData("addrealtostring"), //$NON-NLS-1$
new FileToFileData("invalidcollectioncast"), //$NON-NLS-1$
new FileToFileData("virtscr20707"), //$NON-NLS-1$
new FileToFileData("calloclIsUndefinedforundefined"), //$NON-NLS-1$
new FileToFileData("callvirtforundefined"), //$NON-NLS-1$
new FileToFileData("omittedobject"), //$NON-NLS-1$
new FileToFileData("omittedobjectwithinit"), //$NON-NLS-1$
new FileToFileData("primtypesecore"), //$NON-NLS-1$
new FileToFileData("scr21329"), //$NON-NLS-1$
new FileToFileData("scr21121"), //$NON-NLS-1$
new FileToFileData("scr20811"), //$NON-NLS-1$
new FileToFileData("scr20041"), //$NON-NLS-1$
new FileToFileData("scr20038"), //$NON-NLS-1$
new FileToFileData("scr20667"), //$NON-NLS-1$
new FileToFileData("scr20469"), //$NON-NLS-1$
new FileToFileData("scr20471"), //$NON-NLS-1$
new FileToFileData("scr19364"), //$NON-NLS-1$
new FileToFileData("scr18739"), //$NON-NLS-1$
new FileToFileData("scr18514", "pim.simpleuml", "expected.simpleuml"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
new FileToFileData("oclastype"), //$NON-NLS-1$
new FileToFileData("usebooleanprop", "in.simpleuml", "expected.ecore"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
new FileToFileData("getpropfromundefined"), //$NON-NLS-1$
new FileToFileData("javakeywords"), //$NON-NLS-1$
new FileToFileData("scr17812"), //$NON-NLS-1$
new FileToFileData("scr18783"), //$NON-NLS-1$
new FileToFileData("boxing"), //$NON-NLS-1$
new FileToFileData("scr18572"), //$NON-NLS-1$
new FileToFileData("propinit"), //$NON-NLS-1$
new FileToFileData("allinstances"), //$NON-NLS-1$
new FileToFileData("customop", "in.simpleuml", "expected.ecore"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
new FileToFileData("returnundefinedfromquery"), //$NON-NLS-1$
new FileToFileData("addclass"), //$NON-NLS-1$
new FileToFileData("addclassviamodificationininit"), //$NON-NLS-1$
new FileToFileData("addclassviaoutinocl"), //$NON-NLS-1$
new FileToFileData("addclassviasequence"), //$NON-NLS-1$
new FileToFileData("assignresultininit"), //$NON-NLS-1$
new FileToFileData("copynameviacontextmapping"), //$NON-NLS-1$
new FileToFileData("emptyout"), //$NON-NLS-1$
new FileToFileData("full"), //$NON-NLS-1$
new FileToFileData("invresolve_"), //$NON-NLS-1$
new FileToFileData("invresolvebyrule"), //$NON-NLS-1$
new FileToFileData("removeclassesinwhile"), //$NON-NLS-1$
new FileToFileData("resolvebeforeoutcompletion"), //$NON-NLS-1$
new FileToFileData("resolvebyrule"), //$NON-NLS-1$
new FileToFileData("simple"), //$NON-NLS-1$
new FileToFileData("simpleconfigproperty", //$NON-NLS-1$
new String[][] {
{"FOO", "foo"}, //$NON-NLS-1$ //$NON-NLS-2$
}),
new FileToFileData("simpleproperty"), //$NON-NLS-1$
new FileToFileData("simplerename"), //$NON-NLS-1$
new FileToFileData("simpleresolve"), //$NON-NLS-1$
new FileToFileData("useresultinsameout"), //$NON-NLS-1$
new FileToFileData("virt"), //$NON-NLS-1$
new FileToFileData("overload"), //$NON-NLS-1$
new FileToFileData("voidreturn"), //$NON-NLS-1$
new FileToFileData("lateresolve", "in.simpleuml", "expected.simpleuml"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
new FileToFileData("lateresolvebyrule", "in.simpleuml", "expected.simpleuml"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
new FileToFileData("lateresolve_many", "in.ecore", "expected.simpleuml"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
new FileToFileData("skippopulation", "in.ecore", "expected.ecore"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
new FileToFileData("iteratetest", "in.ecore", "expected.ecore"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
new FileToFileData("mapkeyword", "in.ecore", "expected.ecore"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
new FileToFileData("initsectresultpatch"), //$NON-NLS-1$
new FileToFileData("endsectresultpatch"), //$NON-NLS-1$
new FileToFileData("inoutcontextparam", "in.ecore", "expected.ecore"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
new FileToFileData("inoutcontextparamnoresult", "in.ecore", "expected.ecore"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
new FileToFileData("contextlesscall", "in.ecore", "expected.ecore"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
new FileToFileData("setundefinedtoprimitive", "in.ecore", "expected.ecore"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
new FileToFileData("varassign", "in.ecore", "expected.ecore"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
new FileToFileData("bugzilla443", "in.ecore", "expected.ecore"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
new FileToFileData("resolve_notype"), //$NON-NLS-1$
new FileToFileData("resolve_type"), //$NON-NLS-1$
new FileToFileData("resolve_vardecl"), //$NON-NLS-1$
new FileToFileData("resolve_vardeclcond"), //$NON-NLS-1$
new FileToFileData("resolve_vardeclcondwithvar"), //$NON-NLS-1$
new FileToFileData("resolve_resolveone"), //$NON-NLS-1$
new FileToFileData("resolve_resolveIn"), //$NON-NLS-1$
new FileToFileData("resolve_resolveoneIn"), //$NON-NLS-1$
new FileToFileData("resolve_invresolveoneIn"), //$NON-NLS-1$
new FileToFileData("resolve_lateresolveoneIn"), //$NON-NLS-1$
new FileToFileData("resolve_lateresolveoneInaccess"), //$NON-NLS-1$
new FileToFileData("bug204126_1"), //$NON-NLS-1$
new FileToFileData("bug204126_2"), //$NON-NLS-1$
new FileToFileData("bug204126_3"), //$NON-NLS-1$
new FileToFileData("bug204126_4"), //$NON-NLS-1$
new FileToFileData("bug204126_5"), //$NON-NLS-1$
new FileToFileData("bug204126_6"), //$NON-NLS-1$
new FileToFileData("bug204126_7"), //$NON-NLS-1$
new FileToFileData("bug205303_1"), //$NON-NLS-1$
new FileToFileData("bug219075_1"), //$NON-NLS-1$
new FilesToFilesData("continue_break", Collections.<String>emptyList(), Collections.<String>emptyList()), //$NON-NLS-1$
new FileToFileData("continue_perf"), //$NON-NLS-1$
new FilesToFilesData("unspecified_multiplicity", Collections.<String>emptyList(), Collections.singletonList("expected.xmi")), //$NON-NLS-1$ //$NON-NLS-2$
};
}
private static final Set<String> JAVALESS_EXCLUDES = new HashSet<String>(Arrays.asList(new String[] {
"compositetransf", // FIXME - make this included as java-less //$NON-NLS-1$
"blackboxlib_237781", //$NON-NLS-1$ // imports java lib oper requiring generated ecore metamodel
"primtypesecore", // uses getDataTypeInstance() defined on ecore //$NON-NLS-1$
// tests using imports are excluded as the compiler never resolved imported unit
// to unitName.qvto.javaless (patched original sources)
"operation_override", "import_access_extends", "import_access_extends_cfgprop", "importedvirtuals", "imports_transformations", "imports", "virt", "full", "fqntraces", // TODO import other files //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$
"importedInstances", "fqnOperationCalls_271789", "fqnMainCalls_271987", "fqnMainCalls_272937", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
"libraryWithModuleElements_257184", "libraryHeaderWithSignature_257575",// TODO import other files //$NON-NLS-1$ //$NON-NLS-2$
"assigntonullowner", "resolveall", // reference not in required format: eSuperTypes = "#//NEW_Class1" instead of "//@eClassifiers.0" //$NON-NLS-1$ //$NON-NLS-2$
"egetcodegen", // java method can't be called//$NON-NLS-1$
"bug214718", // platform protocol URI metamodel reference //$NON-NLS-1$
"intermediateprop_import", "_while", "oclAllInstances", "bug216317", "simplestXCollectShorthand", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
"bug2787", "bug2839", "bug2437_4", "bug2437_5", // uses getEClassifier() defined on ecore //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
"blackboxlib_annotation_java", // generated ECORE models -> not applicable to dynamic models //$NON-NLS-1$
}));
}