package com.ricebridge.csvman.test;
import com.ricebridge.csvman.*;
import com.ricebridge.data.sc.*;
import com.ricebridge.data.BeanSpec;
import com.ricebridge.data.Text;
import org.jostraca.util.*;
import junit.framework.*;
import junit.textui.*;
import java.util.*;
import java.io.*;
import java.text.*;
public class CsvSaverTest extends TestCase {
public CsvSaverTest( String pName ) {
super( pName );
}
public static TestSuite suite() {
return new TestSuite( CsvSaverTest.class );
}
public static void main( String[] pArgs ) {
TestRunner.run( suite() );
}
public void testExample() throws Exception {
File csvFile = null;
csvFile = TestUtil.getTextCsvFile( "save" );
FileUtil.writeFile(csvFile,"");
CsvManager csvManager = new CsvManager();
ArrayList data = new ArrayList();
data.add( new String[] {"r1","f1","b1"} );
data.add( new String[] {"r2","f2","b2"} );
data.add( new String[] {"r3","f3","b3"} );
CsvSaver csvsaver = csvManager.makeSaver( csvFile );
csvsaver.begin();
for( Iterator dI = data.iterator(); dI.hasNext(); ) {
String[] line = (String[]) dI.next();
csvsaver.next( line );
}
csvsaver.end();
assertEquals( "r1,f1,b1\nr2,f2,b2\nr3,f3,b3\n", FileUtil.readFile(csvFile) );
}
public void testSingle() throws Exception {
ArrayList data = new ArrayList();
data.add( new String[] {"b1","q1"} );
data.add( new String[] {"b2","q2"} );
String savecanon = "b1,q1\nb2,q2\n";
File csvFile = null;
csvFile = TestUtil.getTextCsvFile( "save" );
CsvManager csvManager = new CsvManager();
FileUtil.writeFile(csvFile,"");
saveData( csvManager.makeSaver( csvFile ), data );
assertEquals( savecanon, FileUtil.readFile(csvFile) );
FileUtil.writeFile(csvFile,"");
saveData( csvManager.makeSaver( csvFile.getAbsolutePath() ), data );
assertEquals( savecanon, FileUtil.readFile(csvFile) );
FileUtil.writeFile(csvFile,"");
OutputStream is = new FileOutputStream( csvFile );
saveData( csvManager.makeSaver( is ), data );
assertEquals( savecanon, FileUtil.readFile(csvFile) );
is.close();
FileUtil.writeFile(csvFile,"");
FileWriter fw = new FileWriter( csvFile );
saveData( csvManager.makeSaver( fw ), data );
assertEquals( savecanon, FileUtil.readFile(csvFile) );
fw.close();
Text bt = new Text();
csvManager.setCsvSpec( csvManager.makeUnixSpec() );
saveData( csvManager.makeSaver( bt ), data );
assertEquals( savecanon, bt.getText() );
}
public void testRepeats() throws Exception {
ArrayList data1 = new ArrayList();
data1.add( new String[] { "b1","q1" } );
data1.add( new String[] { "b2","q2" } );
String savecanon1 = "b1,q1\nb2,q2\n";
File csvFile = null;
csvFile = TestUtil.getTextCsvFile( "save" );
CsvManager csvManager = new CsvManager();
csvManager.setCsvSpec( csvManager.makeUnixSpec() );
FileUtil.writeFile(csvFile,"");
saveData( csvManager.makeSaver( csvFile ), data1 );
assertEquals( savecanon1, FileUtil.readFile(csvFile) );
FileUtil.writeFile(csvFile,"");
saveData( csvManager.makeSaver( csvFile.getAbsolutePath() ), data1 );
assertEquals( savecanon1, FileUtil.readFile(csvFile) );
FileUtil.writeFile(csvFile,"");
OutputStream os = new FileOutputStream( csvFile );
saveData( csvManager.makeSaver( os ), data1 );
assertEquals( savecanon1, FileUtil.readFile(csvFile) );
os.close();
FileUtil.writeFile(csvFile,"");
FileWriter fw = new FileWriter( csvFile );
saveData( csvManager.makeSaver( fw ), data1 );
assertEquals( savecanon1, FileUtil.readFile(csvFile) );
fw.close();
Text text = new Text();
saveData( csvManager.makeSaver( text ), data1 );
assertEquals( savecanon1, text.toString() );
ArrayList data2 = new ArrayList();
data2.add( new String[] { "2b1","2q1" } );
data2.add( new String[] { "2b2","2q2" } );
data2.add( new String[] { "2b3","2q3" } );
String savecanon2 = "2b1,2q1\n2b2,2q2\n2b3,2q3\n";
FileUtil.writeFile(csvFile,"");
saveData( csvManager.makeSaver( csvFile ) , data2 );
assertEquals( savecanon2, FileUtil.readFile(csvFile) );
FileUtil.writeFile(csvFile,"");
saveData( csvManager.makeSaver( csvFile.getAbsolutePath() ) , data2 );
assertEquals( savecanon2, FileUtil.readFile(csvFile) );
FileUtil.writeFile(csvFile,"");
os = new FileOutputStream( csvFile );
saveData( csvManager.makeSaver( os ) , data2 );
assertEquals( savecanon2, FileUtil.readFile(csvFile) );
os.close();
FileUtil.writeFile(csvFile,"");
fw = new FileWriter( csvFile );
saveData( csvManager.makeSaver( fw ) , data2 );
assertEquals( savecanon2, FileUtil.readFile(csvFile) );
fw.close();
text = new Text();
saveData( csvManager.makeSaver( text ) , data2 );
assertEquals( savecanon2, text.toString() );
ArrayList data3 = new ArrayList();
data3.add( new String[] { "3b1","3q1" } );
data3.add( new String[] { "3b2","3q2" } );
data3.add( new String[] { "3b3","3q3" } );
data3.add( new String[] { "3b4","3q4" } );
String savecanon3 = "3b1,3q1\n3b2,3q2\n3b3,3q3\n3b4,3q4\n";
FileUtil.writeFile(csvFile,"");
saveData( csvManager.makeSaver( csvFile ) , data3 );
assertEquals( savecanon3, FileUtil.readFile(csvFile) );
FileUtil.writeFile(csvFile,"");
saveData( csvManager.makeSaver( csvFile.getAbsolutePath() ) , data3 );
assertEquals( savecanon3, FileUtil.readFile(csvFile) );
FileUtil.writeFile(csvFile,"");
os = new FileOutputStream( csvFile );
saveData( csvManager.makeSaver( os ) , data3 );
assertEquals( savecanon3, FileUtil.readFile(csvFile) );
os.close();
FileUtil.writeFile(csvFile,"");
fw = new FileWriter( csvFile );
saveData( csvManager.makeSaver( fw ) , data3 );
assertEquals( savecanon3, FileUtil.readFile(csvFile) );
fw.close();
text = new Text();
saveData( csvManager.makeSaver( text ) , data3 );
assertEquals( savecanon3, text.toString() );
}
private void saveData( CsvSaver pCsvSaver, List pData ) throws Exception {
pCsvSaver.begin();
for( Iterator dI = pData.iterator(); dI.hasNext(); ) {
String[] fields = (String[]) dI.next();
pCsvSaver.next( fields );
}
pCsvSaver.end();
}
}