package matrix.general;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import org.molgenis.util.CsvFileReader;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class TestPreProcessMatrix
{
File testMatrix;
@BeforeClass
public void setup() throws Exception
{
String testContent = "\tcol1$\t456col2\tcol3\n";
testContent += "234row1\tval1\tval2\tval3\n";
testContent += "&row2\tval4\tval5\tval6\n";
testContent += "678row3#\tval7\tval8\tval9\n";
File testMatrix = new File(System.getProperty("java.io.tmpdir") + File.separator + "testMatrix"
+ System.nanoTime() + ".txt");
BufferedWriter out = new BufferedWriter(new FileWriter(testMatrix));
out.write(testContent);
out.close();
this.testMatrix = testMatrix;
}
@Test
public void testPrependUnderscoreToRowNames() throws Exception
{
PreProcessMatrix pm = new PreProcessMatrix(this.testMatrix);
pm.prependUnderscoreToRowNames();
File result = pm.getResult();
String actual = readFile(result);
String expected = "\tcol1$\t456col2\tcol3\n";
expected += "_234row1\tval1\tval2\tval3\n";
expected += "_&row2\tval4\tval5\tval6\n";
expected += "_678row3#\tval7\tval8\tval9\n";
Assert.assertEquals(actual, expected);
}
@Test
public void testPrependUnderscoreToColNames() throws Exception
{
PreProcessMatrix pm = new PreProcessMatrix(this.testMatrix);
pm.prependUnderscoreToColNames();
File result = pm.getResult();
String actual = readFile(result);
String expected = "\t_col1$\t_456col2\t_col3\n";
expected += "234row1\tval1\tval2\tval3\n";
expected += "&row2\tval4\tval5\tval6\n";
expected += "678row3#\tval7\tval8\tval9\n";
Assert.assertEquals(actual, expected);
}
@Test
public void testEscapeRowNames() throws Exception
{
PreProcessMatrix pm = new PreProcessMatrix(this.testMatrix);
pm.escapeRowNames();
File result = pm.getResult();
String actual = readFile(result);
String expected = "\tcol1$\t456col2\tcol3\n";
expected += "row1\tval1\tval2\tval3\n";
expected += "row2\tval4\tval5\tval6\n";
expected += "row3\tval7\tval8\tval9\n";
Assert.assertEquals(actual, expected);
}
@Test
public void testEscapeColNames() throws Exception
{
PreProcessMatrix pm = new PreProcessMatrix(this.testMatrix);
pm.escapeColNames();
File result = pm.getResult();
String actual = readFile(result);
String expected = "\tcol1\tcol2\tcol3\n";
expected += "234row1\tval1\tval2\tval3\n";
expected += "&row2\tval4\tval5\tval6\n";
expected += "678row3#\tval7\tval8\tval9\n";
Assert.assertEquals(actual, expected);
}
@Test
public void testPrependAndEscapeAll() throws Exception
{
PreProcessMatrix pm = new PreProcessMatrix(this.testMatrix);
pm.prependUnderscoreToRowNames();
pm.prependUnderscoreToColNames();
pm.escapeRowNames();
pm.escapeColNames();
File result = pm.getResult();
String actual = readFile(result);
String expected = "\t_col1\t_456col2\t_col3\n";
expected += "_234row1\tval1\tval2\tval3\n";
expected += "_row2\tval4\tval5\tval6\n";
expected += "_678row3\tval7\tval8\tval9\n";
Assert.assertEquals(actual, expected);
}
private String readFile(File theFile) throws java.io.IOException
{
StringBuffer fileData = new StringBuffer(1000);
BufferedReader reader = new BufferedReader(new FileReader(theFile));
char[] buf = new char[1024];
int numRead = 0;
while ((numRead = reader.read(buf)) != -1)
{
String readData = String.valueOf(buf, 0, numRead);
fileData.append(readData);
buf = new char[1024];
}
reader.close();
return fileData.toString();
}
}