package net.enilink.komma.parser.test.manchester; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Iterator; import java.util.Set; import net.enilink.komma.parser.manchester.ManchesterActions; import net.enilink.komma.parser.manchester.ManchesterSyntaxParser; import net.enilink.komma.parser.test.GUnitBaseTestCase; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.ComparisonFailure; import org.junit.Test; import org.parboiled.Parboiled; import org.parboiled.buffers.DefaultInputBuffer; import org.parboiled.buffers.InputBuffer; import org.parboiled.parserunners.ReportingParseRunner; import org.parboiled.support.ParsingResult; import com.google.common.base.Joiner; public class ASTManchesterTest extends GUnitBaseTestCase { private static ManchesterSyntaxParser parser; @BeforeClass public static void before() { parser = Parboiled.createParser(ManchesterSyntaxParser.class, new ManchesterActions()); } @Test public void ast() throws Exception { BufferedReader in = new BufferedReader(new InputStreamReader(getClass() .getResourceAsStream("Ontology_AST.gunit"))); int failures = 0; for (TextInfo textInfo : getTextInfos(in)) { ParsingResult<Object> result = new ReportingParseRunner<Object>( parser.OntologyDocument()).run(textInfo.text); InputBuffer inputBuffer = new DefaultInputBuffer( textInfo.text.toCharArray()); boolean passed = result.hasErrors() && textInfo.result == Result.FAIL || !result.hasErrors() && textInfo.result == Result.OK; if (result.hasErrors() && textInfo.result == Result.OK) { System.out.println(Joiner.on("---\n").join(result.parseErrors)); } if (textInfo.pathCheck.size() > 0) { Set<String> keySet = textInfo.pathCheck.keySet(); for (Iterator<String> iterator = keySet.iterator(); iterator .hasNext();) { String pfad = iterator.next(); String expected = textInfo.pathCheck.get(pfad); try { assertNode(result, pfad, expected, inputBuffer); } catch (ComparisonFailure e) { System.err.println(e); passed = false; } } } if (!passed) { failures++; System.err.println(textInfo.text + " --> " + textInfo.result); } } Assert.assertEquals(0, failures); } }