blob: 1ff5d53172abd6c11c7f31de0a66be48c3aceae5 [file] [log] [blame]
package org.eclipse.m2m.tests.qvt.oml.transform;
import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import org.eclipse.m2m.internal.qvt.oml.common.io.IOFile;
import org.eclipse.m2m.internal.qvt.oml.evaluator.QVTEvaluationOptions;
import org.eclipse.m2m.internal.qvt.oml.evaluator.QvtRuntimeException;
import org.eclipse.m2m.internal.qvt.oml.library.Context;
import org.eclipse.m2m.internal.qvt.oml.library.IContext;
import org.eclipse.m2m.internal.qvt.oml.runtime.launch.QvtLaunchUtil;
import org.eclipse.m2m.internal.qvt.oml.runtime.util.MiscUtil;
import org.eclipse.m2m.qvt.oml.util.WriterLog;
public class TestFailedTransformation extends TestTransformation {
public TestFailedTransformation(ModelTestData data) {
super(data);
setName(TestQvtInterpreter.PREFIX + data.getName()); //$NON-NLS-1$
}
public TestFailedTransformation(String testName) {
this(new FileToFileData(TestDataMapper.getActualTestName(TestQvtInterpreter.PREFIX, testName)));
}
@Override
public void runTest() throws Exception {
runTransformation();
assertLogMatch("qvtTraceLog.stack"); //$NON-NLS-1$
}
private QvtRuntimeException runTransformation() throws Exception {
ITransformer transformer = TestQvtInterpreter.TRANSFORMER;
try {
IContext context = getData().getContext();
Context newContext = QvtLaunchUtil.createContext(context.getConfigProperties());
newContext.setLog(new WriterLog(myLogger));
newContext.getSessionData().setValue(QVTEvaluationOptions.FLAG_READONLY_GUARD_ENABLED, Boolean.TRUE);
transformer.transform(
getIFile(getData().getTransformation(getProject())),
getData().getIn(getProject()), newContext);
} catch (QvtRuntimeException e) {
return e;
}
return null;
}
private void assertLogMatch(String testCase) throws Exception {
String expectedContents = loadExpectedTraceLog(testCase);
assertFalse("Non-empty trace expected", expectedContents.length() == 0); //$NON-NLS-1$
String logContents = myLogger.getBuffer().toString();
assertFalse("Non-empty trace expected", logContents.length() == 0); //$NON-NLS-1$
assertEquals(expectedContents, logContents);
}
private String loadExpectedTraceLog(String fileName) throws IOException {
File parentFolder = getData().getTransformation(getTestProject().getProject()).getParentFile();
return MiscUtil.readStream(new IOFile(new File(parentFolder, fileName)));
}
private final StringWriter myLogger = new StringWriter();
}