package com.ricebridge.csvman.test;
import com.ricebridge.csvman.*;
import com.ricebridge.data.Text;
import org.jostraca.util.*;
import junit.framework.*;
import junit.textui.*;
import java.util.*;
import java.io.*;
import java.sql.*;
public class LoadResultSetTest extends TestCase {
public LoadResultSetTest( String pName ) {
super( pName );
}
public static TestSuite suite() {
return new TestSuite( LoadResultSetTest.class );
}
public static void main( String[] pArgs ) {
TestRunner.run( suite() );
}
public void testExample() throws Exception {
File csvFile = TestUtil.getTextCsvFile( "example" );
CsvManager csvManager = new CsvManager();
ResultSet resultset = csvManager.loadResultSet( csvFile, false );
ResultSetMetaData rsmd = resultset.getMetaData();
int numCols = rsmd.getColumnCount();
StringBuffer sb = new StringBuffer();
for( int col = 1; col <= numCols; col++ ) {
sb.append( rsmd.getColumnName(col) + (col<numCols?", ":"\n") );
}
sb.append( "---\n" );
while( resultset.next() ) {
for( int col = 1; col <= numCols; col++ ) {
sb.append( resultset.getString(col) + (col<numCols?", ":"\n") );
}
}
assertEquals( "Column 1, Column 2, Column 3\n---\nr1, f1, b1\nr2, f2, b2\nr3, f3, b3\n", sb.toString() );
CsvSpec cs = csvManager.getCsvSpec();
cs.setProperty("ResultSet.dataHasHeaders", true);
resultset = csvManager.loadResultSet( csvFile );
assertEquals( "r2,f2,b2|r3,f3,b3|", canon(resultset) );
assertEquals( "r1,f1,b1,", heads(resultset) );
}
public void testSingle() throws Exception {
String loadcanon = "b1,q1|b2,q2|";
String loadheads = "Name,Que,";
File csvFile = null;
csvFile = TestUtil.getTextCsvFile( "head01" );
CsvManager csvManager = new CsvManager();
csvManager.getCsvSpec().setProperty( "ResultSet.dataHasHeaders", true );
ResultSet resultset = csvManager.loadResultSet( csvFile);
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
resultset = csvManager.loadResultSet( csvFile.getAbsolutePath());
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
InputStream is = new FileInputStream( csvFile );
resultset = csvManager.loadResultSet( is);
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
is.close();
Reader rdr = new FileReader( csvFile );
resultset = csvManager.loadResultSet( rdr );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
rdr.close();
resultset = csvManager.loadResultSetFromString( FileUtil.readFile(csvFile), false );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
resultset = csvManager.loadResultSet( new Text(FileUtil.readFile(csvFile)) );
assertEquals( loadcanon, canon(resultset) );
assertEquals( loadheads, heads(resultset) );
}
public void testRepeat() throws Exception {
File csvFile = null;
csvFile = TestUtil.getTextCsvFile( "load01" );
CsvManager csvManager = new CsvManager();
String loadcanon1 = "b1,q1|b2,q2|";
String loadcanon2 = "2b1,2q1|2b2,2q2|2b3,2q3|";
String loadcanon3 = "3b1,3q1|3b2,3q2|3b3,3q3|3b4,3q4|";
String loadcanon = loadcanon1;
ResultSet resultset = csvManager.loadResultSet( csvFile );
assertEquals( loadcanon, canon(resultset) );
assertEquals( 2, csvManager.getLineCount() );
resultset = csvManager.loadResultSet( csvFile );
assertEquals( loadcanon, canon(resultset) );
assertEquals( 2, csvManager.getLineCount() );
loadcanon = loadcanon2;
csvFile = TestUtil.getTextCsvFile( "load02" );
resultset = csvManager.loadResultSet( csvFile );
assertEquals( loadcanon, canon(resultset) );
assertEquals( 3, csvManager.getLineCount() );
loadcanon = loadcanon3;
csvFile = TestUtil.getTextCsvFile( "load03" );
resultset = csvManager.loadResultSet( csvFile );
assertEquals( loadcanon, canon(resultset) );
assertEquals( 4, csvManager.getLineCount() );
loadcanon = loadcanon1;
csvFile = TestUtil.getTextCsvFile( "load01" );
resultset = csvManager.loadResultSet( csvFile.getAbsolutePath() );
assertEquals( loadcanon, canon(resultset) );
assertEquals( 2, csvManager.getLineCount() );
resultset = csvManager.loadResultSet( csvFile.getAbsolutePath() );
assertEquals( loadcanon, canon(resultset) );
assertEquals( 2, csvManager.getLineCount() );
loadcanon = loadcanon2;
csvFile = TestUtil.getTextCsvFile( "load02" );
resultset = csvManager.loadResultSet( csvFile.getAbsolutePath() );
assertEquals( loadcanon, canon(resultset) );
assertEquals( 3, csvManager.getLineCount() );
loadcanon = loadcanon3;
csvFile = TestUtil.getTextCsvFile( "load03" );
resultset = csvManager.loadResultSet( csvFile.getAbsolutePath() );
assertEquals( loadcanon, canon(resultset) );
assertEquals( 4, csvManager.getLineCount() );
loadcanon = loadcanon1;
csvFile = TestUtil.getTextCsvFile( "load01" );
Reader is = new FileReader( csvFile );
resultset = csvManager.loadResultSet( is );
assertEquals( loadcanon, canon(resultset) );
assertEquals( 2, csvManager.getLineCount() );
is.close();
is = new FileReader( csvFile );
resultset = csvManager.loadResultSet( is );
assertEquals( loadcanon, canon(resultset) );
assertEquals( 2, csvManager.getLineCount() );
is.close();
loadcanon = loadcanon2;
csvFile = TestUtil.getTextCsvFile( "load02" );
is = new FileReader( csvFile );
resultset = csvManager.loadResultSet( is );
assertEquals( loadcanon, canon(resultset) );
assertEquals( 3, csvManager.getLineCount() );
is.close();
loadcanon = loadcanon3;
csvFile = TestUtil.getTextCsvFile( "load03" );
is = new FileReader( csvFile );
resultset = csvManager.loadResultSet( is );
assertEquals( loadcanon, canon(resultset) );
assertEquals( 4, csvManager.getLineCount() );
is.close();
loadcanon = loadcanon1;
csvFile = TestUtil.getTextCsvFile( "load01" );
FileReader rdr = new FileReader( csvFile );
resultset = csvManager.loadResultSet( rdr );
assertEquals( loadcanon, canon(resultset) );
assertEquals( 2, csvManager.getLineCount() );
rdr.close();
rdr = new FileReader( csvFile );
resultset = csvManager.loadResultSet( rdr );
assertEquals( loadcanon, canon(resultset) );
assertEquals( 2, csvManager.getLineCount() );
rdr.close();
loadcanon = loadcanon2;
csvFile = TestUtil.getTextCsvFile( "load02" );
rdr = new FileReader( csvFile );
resultset = csvManager.loadResultSet( rdr );
assertEquals( loadcanon, canon(resultset) );
assertEquals( 3, csvManager.getLineCount() );
rdr.close();
loadcanon = loadcanon3;
csvFile = TestUtil.getTextCsvFile( "load03" );
rdr = new FileReader( csvFile );
resultset = csvManager.loadResultSet( rdr );
assertEquals( loadcanon, canon(resultset) );
assertEquals( 4, csvManager.getLineCount() );
rdr.close();
loadcanon = loadcanon1;
csvFile = TestUtil.getTextCsvFile( "load01" );
resultset = csvManager.loadResultSet( new Text(FileUtil.readFile(csvFile)) );
assertEquals( loadcanon, canon(resultset) );
assertEquals( 2, csvManager.getLineCount() );
resultset = csvManager.loadResultSet( new Text(FileUtil.readFile(csvFile)) );
assertEquals( loadcanon, canon(resultset) );
assertEquals( 2, csvManager.getLineCount() );
loadcanon = loadcanon2;
csvFile = TestUtil.getTextCsvFile( "load02" );
resultset = csvManager.loadResultSet( new Text(FileUtil.readFile(csvFile)) );
assertEquals( loadcanon, canon(resultset) );
assertEquals( 3, csvManager.getLineCount() );
loadcanon = loadcanon3;
csvFile = TestUtil.getTextCsvFile( "load03" );
resultset = csvManager.loadResultSet( new Text(FileUtil.readFile(csvFile)) );
assertEquals( loadcanon, canon(resultset) );
assertEquals( 4, csvManager.getLineCount() );
}
private String canon( ResultSet pResultSet ) throws Exception {
StringBuffer sb = new StringBuffer();
ResultSetMetaData rsmd = pResultSet.getMetaData();
int numCols = rsmd.getColumnCount();
while( pResultSet.next() ) {
for( int col = 1; col <= numCols; col++ ) {
sb.append( pResultSet.getString(col) + (col<numCols?",":"|") );
}
}
return sb.toString();
}
private String heads( ResultSet pResultSet ) throws Exception {
StringBuffer sb = new StringBuffer();
ResultSetMetaData rsmd = pResultSet.getMetaData();
int numCols = rsmd.getColumnCount();
for( int col = 1; col <= numCols; col++ ) {
sb.append( rsmd.getColumnName(col) + "," );
}
return sb.toString();
}
}