package edu.mayo.bior.cli.func; import static org.junit.Assert.assertEquals; import java.io.File; import java.io.IOException; import org.apache.commons.io.FileUtils; import org.junit.Test; import com.jayway.jsonpath.JsonPath; public class Tab2JSONCommandITCase extends BaseFunctionalTest { @Test public void test() throws IOException, InterruptedException { System.out.println("Tab2JSONCommandITCase.test"); String config = "1 COL1 STRING COLUMN . . " + "\n" + "2 COL2 NUMBER COLUMN . . " + "\n" + "3 COL3 BOOLEAN COLUMN . . " + "\n"; File configFile = File.createTempFile("config", ".txt"); configFile.deleteOnExit(); FileUtils.write(configFile, config); String stdin = "#COL1 COL2 COL3" + "\n" + "AAAA 1111 true"; CommandOutput out = executeScript("bior_tab_to_tjson", stdin, "--config", configFile.getAbsolutePath()); assertEquals("STDERR:"+out.stderr+"\n"+"STDOUT:"+out.stdout, 0, out.exit); assertEquals("", out.stderr); String header = getHeader(out.stdout); assertEquals( "##BIOR=<ID=\"bior.ToTJson\",Operation=\"bior_tab_to_tjson\",DataType=\"JSON\",ShortUniqueName=\"ToTJson\">" + "\n" + "#COL1 COL2 COL3 bior.ToTJson" + "\n", header); // pull out just data rows String data = out.stdout.replace(header, ""); // JSON should be added as last column (9th) String[] cols = data.split("\t"); assertEquals(4, cols.length); String json = cols[cols.length - 1]; System.out.println(json); assertEquals(new String("AAAA"), JsonPath.compile("COL1").read(json)); assertEquals(new Integer("1111"), JsonPath.compile("COL2").read(json)); assertEquals(new Boolean(true), JsonPath.compile("COL3").read(json)); } }