blob: 86317e3a438f715b8fb8ea3e9f35cb94294e06b7 [file] [log] [blame]
/*
* Copyright (c) 2006 committers of openArchitectureWare and others.
*
* 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
*/
package org.eclipse.gmf.tests.xpand;
import java.util.Formatter;
import junit.framework.TestCase;
import org.eclipse.gmf.internal.xpand.ast.Template;
import org.eclipse.gmf.internal.xpand.parser.XpandLexer;
import org.eclipse.gmf.internal.xpand.parser.XpandParser;
import org.eclipse.gmf.internal.xpand.util.ParserException.ErrorLocationInfo;
public abstract class AbstractXpandTest extends TestCase {
private final char LG = '\u00AB';
private final char RG = '\u00BB';
protected Template parse(final String expr) throws Exception {
System.out.println("Parsing:" + expr);
final XpandLexer scanner = new XpandLexer(expr.toCharArray(), "nofile");
final XpandParser parser = new XpandParser(scanner);
scanner.lexer(parser);
for (ErrorLocationInfo l : scanner.getErrors()) {
System.out.println("Scanner:" + locationInfo(l) + l.message);
}
Template rv = parser.parser();
for (ErrorLocationInfo l : parser.getErrors()) {
System.out.println("Parser:" + locationInfo(l) + l.message);
}
return rv;
}
protected String tag(final String str) {
return LG + str + RG;
}
/**
* copy from {@link AbstractExpressionTest}
*/
private static String locationInfo(ErrorLocationInfo l) {
return new Formatter(new StringBuilder()).format("%d:%d:%d:%d:", l.startLine, l.startColumn, l.endLine, l.endColumn).out().toString();
}
}