package com.ricebridge.csvman.test;
import com.ricebridge.csvman.*;
import org.jostraca.util.*;
import junit.framework.*;
import junit.textui.*;
import javax.swing.table.*;
import java.sql.ResultSet;
import java.util.*;
import java.io.*;
public class QuoteTest extends TestCase {
public QuoteTest( String pName ) {
super( pName );
}
public static TestSuite suite() {
return new TestSuite( QuoteTest.class );
}
public static void main( String[] pArgs ) {
TestRunner.run( suite() );
}
public void testSaveQuoting() throws Exception {
ArrayList data = new ArrayList();
data.add( new String[] {"a","b","c"} );
data.add( new String[] {"a\"a","b,b","c\nc"} );
data.add( new String[] {"\"aa\"",",b,","\nc\n"} );
data.add( new String[] {"a\ra","b\nb","c\r\nc"} );
data.add( new String[] {"a\ta","b","c"} );
CsvManager csvm = new CsvManager();
csvm.setCsvSpec( csvm.makeExcelSpec() );
CsvSpec cs = csvm.getCsvSpec();
assertTrue( !cs.getUseEscape() );
assertTrue( !cs.getUseEscapeMap() );
String out = csvm.saveToString( data );
out = out.replace('\r','R'); out = out.replace('\n','N'); out = out.replace('"','\''); out = out.replace('\\','/');
String expect = "a,b,cRN'a''a','b,b','cNc'RN'''aa''',',b,','NcN'RN'aRa','bNb','cRNc'RNa\ta,b,cRN";
assertEquals( expect, out );
cs = csvm.getCsvSpec();
cs.setUseEscape( true );
assertTrue( cs.getUseEscape() );
assertTrue( cs.getUseEscapeMap() );
out = csvm.saveToString( data );
out = out.replace('\r','R'); out = out.replace('\n','N'); out = out.replace('"','\''); out = out.replace('\\','/');
expect = "a,b,cRN'a''a','b,b','c/nc'RN'''aa''',',b,','/nc/n'RN'a/ra','b/nb','c/r/nc'RNa/ta,b,cRN";
assertEquals( expect, out );
cs = csvm.getCsvSpec();
cs.setDoubleQuote( false );
assertTrue( cs.getUseQuote() );
assertTrue( !cs.getDoubleQuote() );
assertTrue( cs.getUseEscape() );
assertTrue( cs.getUseEscapeMap() );
out = csvm.saveToString( data );
out = out.replace('\r','R'); out = out.replace('\n','N'); out = out.replace('"','\''); out = out.replace('\\','/');
expect = "a,b,cRN'a/'a','b,b','c/nc'RN'/'aa/'',',b,','/nc/n'RN'a/ra','b/nb','c/r/nc'RNa/ta,b,cRN";
assertEquals( expect, out );
cs = csvm.getCsvSpec();
cs.setUseQuote( false );
assertTrue( !cs.getUseQuote() );
assertTrue( !cs.getDoubleQuote() );
assertTrue( cs.getUseEscape() );
assertTrue( cs.getUseEscapeMap() );
out = csvm.saveToString( data );
out = out.replace('\r','R'); out = out.replace('\n','N'); out = out.replace('"','\''); out = out.replace('\\','/');
expect = "a,b,cRNa'a,b/,b,c/ncRN'aa',/,b/,,/nc/nRNa/ra,b/nb,c/r/ncRNa/ta,b,cRN";
assertEquals( expect, out );
}
}