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 javax.print.PrintException; import org.antlr.v4.runtime.RecognitionException; import org.antlr.v4.runtime.RuleContext; import org.antlr.v4.runtime.tree.ParseTree; import org.junit.Test; import org.softlang.company.antlr.CompanyParser; import org.softlang.company.features.CutVisitor; import org.softlang.company.features.PrintVisitor; import org.softlang.company.features.TotalVisitor; public class CutVisitorTest { private static String sampleCompany = "inputs" + File.separator + "sample.Company"; private static String cutCompany = "outputs" + File.separator + "cut.Company"; @Test public void testTotal() throws RecognitionException, IOException, PrintException { CompanyParser parser = parse(sampleCompany); parser.setBuildParseTree(true); ParseTree tree = parser.company(); System.out.println("Parsing done"); new File("outputs").mkdir(); ((RuleContext) tree).save(parser, "outputs" + File.separator + "company.ps"); CutVisitor c = new CutVisitor(); // Cuttign visit c.visit(tree); new File("outputs").mkdir(); PrintStream out = new PrintStream(cutCompany); // print the result PrintVisitor p = new PrintVisitor(out); p.visit(tree); out.close(); // we total the cut salaries again parser = parse(cutCompany); TotalVisitor t = new TotalVisitor(); Float salary = t.visit(tree); System.out.println(salary); assertEquals(399747 / 2.0, t.visit(tree), 0); } }