package org.softlang.company.test; import static org.junit.Assert.assertEquals; import static org.softlang.company.features.Parsing.parse; import java.io.File; import java.io.IOException; import java.io.PrintStream; import org.antlr.v4.runtime.RecognitionException; import org.antlr.v4.runtime.tree.ParseTree; import org.antlr.v4.runtime.tree.ParseTreeWalker; import org.junit.Test; import org.softlang.company.antlr.CompanyParser; import org.softlang.company.features.CutListener; import org.softlang.company.features.TotalListener; public class cutListenerTest { private static String sampleCompany = "inputs" + File.separator + "sample.Company"; private static String cutCompany = "outputs" + File.separator + "cut.Company"; @Test public void testcut() throws RecognitionException, IOException { CompanyParser parser = parse(sampleCompany); parser.setBuildParseTree(true); ParseTree tree = parser.company(); System.out.println("Parsing done"); // setup the tree walker and print the result ParseTreeWalker walker = new ParseTreeWalker(); new File("outputs").mkdir(); PrintStream out = new PrintStream(cutCompany); CutListener cutter = new CutListener(out); walker.walk(cutter, tree); // total the cutted salaries by rereading parser = parse(cutCompany); parser.setBuildParseTree(true); tree = parser.company(); TotalListener totaler = new TotalListener(parser); walker.walk(totaler, tree); assertEquals(399747 / 2.0f, totaler.getTotal(), 0); } }