/*
* Copyright (c) 2004- michael lawley and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser General Public License version 2.1 as published by the Free Software Foundation
* which accompanies this distribution, and is available by writing to
* Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
* Contributors:
* michael lawley
*
*
*/
package tefkat.model.parser.tests;
import java.io.Reader;
import java.io.StringReader;
import java.util.Map;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
import tefkat.model.TRule;
import tefkat.model.TefkatFactory;
import tefkat.model.Transformation;
import antlr.TokenStreamHiddenTokenFilter;
import antlr.debug.MessageEvent;
import antlr.debug.MessageListener;
import antlr.debug.TraceEvent;
import tefkat.model.parser.TefkatLexer;
import tefkat.model.parser.TefkatParser;
import junit.framework.TestCase;
/**
* @author lawley
*
*/
public abstract class ParserTestCase extends TestCase {
public ParserTestCase(String name) {
super(name);
}
protected Transformation t;
protected TRule tr;
boolean ignoreError;
public void setUp() {
System.err.println("setUp " + getName());
ignoreError = false;
ResourceSet rs = new ResourceSetImpl();
Map map = rs.getResourceFactoryRegistry()
.getExtensionToFactoryMap();
Resource.Factory xmiFactory = new XMIResourceFactoryImpl();
map.put("ecore", xmiFactory);
map.put("xmi", xmiFactory);
Resource res = rs.createResource(URI.createURI("tmp.xmi"));
t = TefkatFactory.eINSTANCE.createTransformation();
t.setName("defaultTransformation");
t.getVars().add(TefkatFactory.eINSTANCE.createVar());
t.getVars().add(TefkatFactory.eINSTANCE.createVar());
tr = TefkatFactory.eINSTANCE.createTRule();
tr.setName("defaultRule");
tr.setTransformation(t);
res.getContents().add(t);
}
protected TefkatParser setupParser(String input) {
Reader reader = new StringReader(input);
TefkatLexer lexer = new TefkatLexer(reader);
lexer.setTokenObjectClass("antlr.CommonHiddenStreamToken");
TokenStreamHiddenTokenFilter filter = new TokenStreamHiddenTokenFilter(lexer);
filter.hide(TefkatParser.WS);
TefkatParser parser = new TefkatParser(filter);
parser.setResource(t.eResource());
parser.addMessageListener(new MessageListener() {
public void reportError(MessageEvent event) {
if (!ignoreError) {
assertTrue(event.toString(), false);
}
}
public void reportWarning(MessageEvent arg0) {
}
public void doneParsing(TraceEvent arg0) {
}
public void refresh() {
}
});
return parser;
}
}