package eu.project.ttc.test.func.tools.cmd; import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.endsWith; import static org.hamcrest.CoreMatchers.startsWith; import java.io.IOException; import java.io.PrintStream; import java.nio.charset.Charset; import java.util.List; import org.apache.commons.io.output.ByteArrayOutputStream; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.google.common.base.Splitter; import eu.project.ttc.engines.desc.Lang; import eu.project.ttc.test.TermSuiteAssertions; import eu.project.ttc.test.func.FunctionalTests; import eu.project.ttc.tools.cli.TermSuiteAlignerCLI; public class TermSuiteAlignerCLISpec { PrintStream out; ByteArrayOutputStream baos; @Before public void setup() { baos = new ByteArrayOutputStream(); out = new PrintStream(baos); } @After public void finalize() throws IOException { out.close(); baos.close(); } @Test public void testAlignerFrEnBasic() throws Exception { launch(String.format("--source-termino %s --target-termino %s --dictionary %s --term %s", FunctionalTests.getTerminoWEShortPath(Lang.FR), FunctionalTests.getTerminoWEShortPath(Lang.EN), FunctionalTests.getDicoPath(Lang.FR, Lang.EN), "énergie" )); String string = baos.toString(Charset.defaultCharset().name()); TermSuiteAssertions.assertThat(string) .atLine(1, startsWith("n: energy")) .atLine(2, startsWith("n: power")) .hasLineCount(10); } @Test public void testAlignerDicoWithExplanation() throws Exception { launch(String.format("--source-termino %s --target-termino %s --dictionary %s --term %s -n 10 --explain", FunctionalTests.getTerminoWEShortPath(Lang.FR), FunctionalTests.getTerminoWEShortPath(Lang.EN), FunctionalTests.getDicoPath(Lang.FR, Lang.EN), "énergie" )); String string = baos.toString(Charset.defaultCharset().name()); TermSuiteAssertions.assertThat(string) .atLine(1, startsWith("n: energy")) .atLine(1, containsString("DICTIONARY")) .atLine(1, endsWith("{}")) .hasLineCount(10); } @Test public void testAlignerDistribWithExplanation() throws Exception { launch(String.format("--source-termino %s --target-termino %s --dictionary %s --term %s -n 10 --explain", FunctionalTests.getTerminoWEShortPath(Lang.FR), FunctionalTests.getTerminoWEShortPath(Lang.EN), FunctionalTests.getDicoPath(Lang.FR, Lang.EN), "parc" )); String string = baos.toString(Charset.defaultCharset().name()); TermSuiteAssertions.assertThat(string) .atLine(1, startsWith("n: turbine")) .atLine(1, containsString("DISTRIBUTIONAL")) .atLine(1, endsWith("}")) .hasLineCount(10); } @Test public void testAlignerFrEnCount3() throws Exception { launch(String.format("--source-termino %s --target-termino %s --dictionary %s --term %s -n 3", FunctionalTests.getTerminoWEShortPath(Lang.FR), FunctionalTests.getTerminoWEShortPath(Lang.EN), FunctionalTests.getDicoPath(Lang.FR, Lang.EN), "énergie" )); String string = baos.toString(Charset.defaultCharset().name()); TermSuiteAssertions.assertThat(string) .atLine(1, startsWith("n: energy")) .atLine(1, containsString("DICTIONARY")) .atLine(1, endsWith("DICTIONARY")) .hasLineCount(3); } private void launch(String args) throws Exception { List<String> argList = Splitter.on(" ").splitToList(args); new TermSuiteAlignerCLI().run(argList.toArray(new String[argList.size()]), out); } }