/**
*
*/
package it.xsemantics.example.fj.tests.loader;
import java.io.InputStream;
import it.xsemantics.example.fj.FJStandaloneSetup;
import it.xsemantics.example.fj.fj.Program;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.xtext.junit4.AbstractXtextTests;
import org.eclipse.xtext.linking.lazy.LazyLinkingResource;
import org.eclipse.xtext.resource.XtextResource;
import org.eclipse.xtext.resource.XtextResourceSet;
import org.eclipse.xtext.util.CancelIndicator;
/**
* @author bettini
*/
public class FJAbstractTests extends AbstractXtextTests {
@Override
public void setUp() throws Exception {
super.setUp();
with(FJStandaloneSetup.class);
}
@Override
protected boolean shouldTestSerializer(XtextResource resource) {
// TODO serialize tests fail:
// expected: ref Class extends ref: Class@//@classes.0
// actual: ref Class extends ref: Class@mytestmodel.fj#//@classes.0
// in AbstractXtextTests: tester.assertSerializeWithoutNodeModel(obj);
return false;
}
public Program getProgramFromString(String program) throws Exception {
return (Program) getModel(program);
}
/**
* Also adds the Object.fj resource
* @see org.eclipse.xtext.junit.AbstractXtextTests#doGetResource(java.io.InputStream, org.eclipse.emf.common.util.URI)
*/
@Override
protected XtextResource doGetResource(InputStream in, URI uri) throws Exception {
XtextResourceSet rs = get(XtextResourceSet.class);
rs.getResource(URI.createURI(FJTestLoader.OBJECT_FJ_URI), true);
rs.setClasspathURIContext(getClass());
XtextResource resource = (XtextResource) getResourceFactory().createResource(uri);
rs.getResources().add(resource);
resource.load(in, null);
if (resource instanceof LazyLinkingResource) {
((LazyLinkingResource) resource).resolveLazyCrossReferences(CancelIndicator.NullImpl);
} else {
EcoreUtil.resolveAll(resource);
}
return resource;
}
}