blob: 74c3c15005a6e89612abaf96e363cbe63e64d3e2 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2014, 2021 Borland Software Corporation and others.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v20.html
*
* Contributors:
* Boyko Sergey - initial API and implementation
*******************************************************************************/
package org.eclipse.m2m.tests.qvt.oml.callapi;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.m2m.internal.qvt.oml.compiler.CompilerUtils;
import org.eclipse.m2m.internal.qvt.oml.expressions.DirectionKind;
import org.eclipse.m2m.internal.qvt.oml.runtime.launch.QvtLaunchUtil;
import org.eclipse.m2m.qvt.oml.ModelExtent;
import org.eclipse.m2m.tests.qvt.oml.transform.FilesToFilesData;
import org.eclipse.m2m.tests.qvt.oml.transform.ModelTestData;
import org.eclipse.m2m.tests.qvt.oml.transform.TransformTests;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
@RunWith(Parameterized.class)
public class TestQvtExecutor extends TransformationExecutorTest {
private final List<URI> ecoreMetamodels;
public TestQvtExecutor(ModelTestData data) {
super(data.getName(), getInModels(data), getOutModels(data), QvtLaunchUtil.getConfigProperties(data.getContext()));
ecoreMetamodels = data.getEcoreMetamodels();
uriCreator = new UriCreator(name) {
@Override
public String getTestDataFolder() {
return data.getTestDataFolder();
};
};
}
@Parameters(name="{0}")
public static Iterable<ModelTestData> data() {
return Arrays.asList(TransformTests.createTestData());
}
static List<String> getInModels(ModelTestData data) {
if (data instanceof FilesToFilesData) {
return ((FilesToFilesData) data).getFromFiles();
}
return Collections.emptyList();
}
static List<String> getOutModels(ModelTestData data) {
if (data instanceof FilesToFilesData) {
return ((FilesToFilesData) data).getExpectedFiles();
}
return Collections.emptyList();
}
@Override
protected List<URI> getEcoreMetamodels() {
return ecoreMetamodels;
}
@Override
@Test
public void runTest() throws Throwable {
super.runTest();
ResourceSet checkingRs = CompilerUtils.cloneRegistrations(resSet);
CompilerUtils.addMappingsToResourceSet(checkingRs, uriCreator.getTransformationUri());
int outIndex = 0;
for (int i = 0; i < paramKinds.size(); ++i) {
if (paramKinds.get(i) == DirectionKind.IN) {
continue;
}
ModelExtent modelExtent = extents.get(i);
URI modelUri = uriCreator.getModelUri(outModels.get(outIndex++));
Resource resource = checkingRs.getResource(modelUri, true);
ModelTestData.compareWithExpected(name, resource.getContents(), modelExtent.getContents());
}
}
}