You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by ba...@apache.org on 2005/12/17 06:41:34 UTC

svn commit: r357300 [2/2] - in /jakarta/commons/trunks-sandbox/csv: ./ src/ src/java/ src/java/ch/ src/java/ch/netcetera/ src/java/ch/netcetera/wake/ src/java/ch/netcetera/wake/core/ src/java/ch/netcetera/wake/core/format/ src/java/ch/netcetera/wake/co...

Added: jakarta/commons/trunks-sandbox/csv/src/test/ch/netcetera/wake/core/format/csv/CSVParserTest.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/trunks-sandbox/csv/src/test/ch/netcetera/wake/core/format/csv/CSVParserTest.java?rev=357300&view=auto
==============================================================================
--- jakarta/commons/trunks-sandbox/csv/src/test/ch/netcetera/wake/core/format/csv/CSVParserTest.java (added)
+++ jakarta/commons/trunks-sandbox/csv/src/test/ch/netcetera/wake/core/format/csv/CSVParserTest.java Fri Dec 16 21:41:27 2005
@@ -0,0 +1,518 @@
+/*
+* The copyright to the computer program(s) herein is the property of
+* Netcetera AG, Switzerland. The program(s) may be used and/or copied
+* only with the written permission of Netcetera AG or in accordance
+* with the terms and conditions stipulated in the agreement/contract
+* under which the program(s) have been supplied.
+*
+* @(#) $Id: CSVParserTest.java,v 1.5 2004/05/18 09:41:26 uhardegg Exp $
+*/
+package ch.netcetera.wake.core.format.csv;
+
+import java.io.IOException;
+import java.io.Reader;
+import java.io.StringReader;
+import java.util.Arrays;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * CSVParserTest
+ *
+ * The test are organized in three different sections:
+ * The 'setter/getter' section, the lexer section and finally the parser 
+ * section. In case a test fails, you should follow a top-down approach for 
+ * fixing a potential bug (its likely that the parser itself fails if the lexer
+ * has problems...).
+ */
+public class CSVParserTest extends TestCase {
+  
+  /**
+   * TestCSVParser
+   */
+  class TestCSVParser extends CSVParser {
+    TestCSVParser(Reader in) {
+      super(in);
+    }
+    public String testNextToken() throws IOException {
+      Token t = super.nextToken();
+      String tmp = Integer.toString(t.type) + ";" + t.content + ";";
+      System.out.println("token=" + tmp);
+      return tmp;
+    }
+  }
+  
+  /**
+   * Constructor for CSVParserTest.
+   * @param arg0
+   */
+  public CSVParserTest(String arg0) {
+    super(arg0);
+  }
+
+  public static Test suite() {
+    return new TestSuite(CSVParserTest.class);
+  }
+
+
+  // ======================================================
+  //   getters / setters
+  // ======================================================
+  public void testGetSetCommentStart() {
+    CSVParser parser = new CSVParser(new StringReader("hello world"));
+    parser.setCommentStart('#');
+    assertEquals(parser.getCommentStart(), '#');
+    parser.setCommentStart('!');
+    assertEquals(parser.getCommentStart(), '!');
+  }
+
+  public void testGetSetEncapsulator() {
+    CSVParser parser = new CSVParser(new StringReader("hello world"));
+    parser.setEncapsulator('"');
+    assertEquals(parser.getEncapsulator(), '"');
+    parser.setEncapsulator('\'');
+    assertEquals(parser.getEncapsulator(), '\'');
+  }
+
+  public void testGetSetDelimiter() {
+    CSVParser parser = new CSVParser(new StringReader("hello world"));
+    parser.setDelimiter(';');
+    assertEquals(parser.getDelimiter(), ';');
+    parser.setDelimiter(',');
+    assertEquals(parser.getDelimiter(), ',');
+    parser.setDelimiter('\t');
+    assertEquals(parser.getDelimiter(), '\t');
+  }
+
+  public void testSetCSVStrategy() {
+    CSVParser parser = new CSVParser(new StringReader("hello world"));
+    // default settings
+    assertEquals(parser.getCommentStart(), '\0');
+    assertEquals(parser.getEncapsulator(), '"');
+    assertEquals(parser.getDelimiter(), ',');
+    // explicit csv settings
+    parser.setCSVStrategy();
+    assertEquals(parser.getCommentStart(), '\0');
+    assertEquals(parser.getEncapsulator(), '"');
+    assertEquals(parser.getDelimiter(), ',');
+  }
+  
+  
+  
+  // ======================================================
+  //   lexer tests
+  // ======================================================
+  
+  // single line (without comment)
+  public void testNextToken1() throws IOException {
+    String code = "abc,def, hijk,  lmnop,   qrst,uv ,wxy   ,z , ,";
+    TestCSVParser parser = new TestCSVParser(new StringReader(code));
+    parser.setCSVStrategy();
+    System.out.println("---------\n" + code + "\n-------------");
+    assertEquals(CSVParser.TT_TOKEN + ";abc;", parser.testNextToken());
+    assertEquals(CSVParser.TT_TOKEN + ";def;", parser.testNextToken());
+    assertEquals(CSVParser.TT_TOKEN + ";hijk;", parser.testNextToken());
+    assertEquals(CSVParser.TT_TOKEN + ";lmnop;", parser.testNextToken());
+    assertEquals(CSVParser.TT_TOKEN + ";qrst;", parser.testNextToken());
+    assertEquals(CSVParser.TT_TOKEN + ";uv;", parser.testNextToken());
+    assertEquals(CSVParser.TT_TOKEN + ";wxy;", parser.testNextToken());
+    assertEquals(CSVParser.TT_TOKEN + ";z;", parser.testNextToken());
+    assertEquals(CSVParser.TT_TOKEN + ";;", parser.testNextToken());
+    assertEquals(CSVParser.TT_EORECORD + ";;", parser.testNextToken());
+    assertEquals(CSVParser.TT_EOF + ";;", parser.testNextToken());  
+  }
+  
+  // multiline including comments (and empty lines)
+  public void testNextToken2() throws IOException {
+    /*   file:   1,2,3,
+     *           a,b,c
+     *
+     *           # this is a comment 
+     *           d,e,
+     * 
+     */
+    String code = "1,2,3,\na,b x,c\n#foo\n\nd,e,\n\n";
+    TestCSVParser parser = new TestCSVParser(new StringReader(code));
+    parser.setIgnoreEmptyLines(false);
+    parser.setCSVStrategy();
+    parser.setCommentStart('#');
+    System.out.println("---------\n" + code + "\n-------------");
+    assertEquals(CSVParser.TT_TOKEN + ";1;", parser.testNextToken());
+    assertEquals(CSVParser.TT_TOKEN + ";2;", parser.testNextToken());
+    assertEquals(CSVParser.TT_TOKEN + ";3;", parser.testNextToken());
+    assertEquals(CSVParser.TT_EORECORD + ";;", parser.testNextToken());
+    assertEquals(CSVParser.TT_TOKEN + ";a;", parser.testNextToken());
+    assertEquals(CSVParser.TT_TOKEN + ";b x;", parser.testNextToken());
+    assertEquals(CSVParser.TT_EORECORD + ";c;", parser.testNextToken());
+    assertEquals(CSVParser.TT_EORECORD + ";;", parser.testNextToken());
+    assertEquals(CSVParser.TT_TOKEN + ";d;", parser.testNextToken());
+    assertEquals(CSVParser.TT_TOKEN + ";e;", parser.testNextToken());
+    assertEquals(CSVParser.TT_EORECORD + ";;", parser.testNextToken());
+    assertEquals(CSVParser.TT_EOF + ";;", parser.testNextToken());    
+    assertEquals(CSVParser.TT_EOF + ";;", parser.testNextToken());    
+    
+  }
+ 
+  // simple token with escaping
+  public void testNextToken3() throws IOException {
+    /* file: a,\,,b
+     *       \,,
+     */
+    String code = "a,\\,,b\n\\,,";
+    TestCSVParser parser = new TestCSVParser(new StringReader(code));
+    parser.setCSVStrategy();
+    parser.setCommentStart('#');
+    System.out.println("---------\n" + code + "\n-------------");
+    assertEquals(CSVParser.TT_TOKEN + ";a;", parser.testNextToken());
+    assertEquals(CSVParser.TT_TOKEN + ";,;", parser.testNextToken());
+    assertEquals(CSVParser.TT_EORECORD + ";b;", parser.testNextToken());
+    assertEquals(CSVParser.TT_TOKEN + ";,;", parser.testNextToken());
+    assertEquals(CSVParser.TT_EORECORD + ";;", parser.testNextToken());
+    assertEquals(CSVParser.TT_EOF + ";;", parser.testNextToken());
+  }
+  
+  // encapsulator tokenizer (sinle line)
+  public void testNextToken4() throws IOException {
+    /* file:  a,"foo",b
+     *        a,   " foo",b
+     *        a,"foo "   ,b
+     *        a,  " foo " ,b
+     */ 
+     String code = 
+      "a,\"foo\",b\na,   \" foo\",b\na,\"foo \"  ,b\na,  \" foo \"  ,b";
+     TestCSVParser parser = new TestCSVParser(new StringReader(code));
+     parser.setCSVStrategy();
+     System.out.println("---------\n" + code + "\n-------------");
+     assertEquals(CSVParser.TT_TOKEN + ";a;", parser.testNextToken());
+     assertEquals(CSVParser.TT_TOKEN + ";foo;", parser.testNextToken());
+     assertEquals(CSVParser.TT_EORECORD + ";b;", parser.testNextToken());
+     assertEquals(CSVParser.TT_TOKEN + ";a;", parser.testNextToken());
+     assertEquals(CSVParser.TT_TOKEN + "; foo;", parser.testNextToken());
+     assertEquals(CSVParser.TT_EORECORD + ";b;", parser.testNextToken());
+     assertEquals(CSVParser.TT_TOKEN + ";a;", parser.testNextToken());
+     assertEquals(CSVParser.TT_TOKEN + ";foo ;", parser.testNextToken());
+     assertEquals(CSVParser.TT_EORECORD + ";b;", parser.testNextToken());
+     assertEquals(CSVParser.TT_TOKEN + ";a;", parser.testNextToken());
+     assertEquals(CSVParser.TT_TOKEN + "; foo ;", parser.testNextToken());
+     assertEquals(CSVParser.TT_EORECORD + ";b;", parser.testNextToken());
+     assertEquals(CSVParser.TT_EOF + ";;", parser.testNextToken());    
+  }
+  
+  // encapsulator tokenizer (multi line, delimiter in string)
+  public void testNextToken5() throws IOException {   
+    String code = 
+      "a,\"foo\n\",b\n\"foo\n  baar ,,,\"\n\"\n\t \n\",\"\\\"\",\"\"\"\"";
+    TestCSVParser parser = new TestCSVParser(new StringReader(code));
+    parser.setCSVStrategy();
+    System.out.println("---------\n" + code + "\n-------------");
+    assertEquals(CSVParser.TT_TOKEN + ";a;", parser.testNextToken());
+    assertEquals(CSVParser.TT_TOKEN + ";foo\n;", parser.testNextToken());
+    assertEquals(CSVParser.TT_EORECORD + ";b;", parser.testNextToken());
+    assertEquals(
+      CSVParser.TT_EORECORD + ";foo\n  baar ,,,;", 
+      parser.testNextToken());
+    assertEquals(CSVParser.TT_TOKEN + ";\n\t \n;", parser.testNextToken());
+    assertEquals(CSVParser.TT_TOKEN + ";\";", parser.testNextToken());
+    assertEquals(CSVParser.TT_EORECORD + ";\";", parser.testNextToken());
+    assertEquals(CSVParser.TT_EOF + ";;", parser.testNextToken());
+    
+  }
+  
+  // change delimiters, comment, encapsulater
+  public void testNextToken6() throws IOException {
+    /* file: a;'b and \' more
+     *       '
+     *       !comment;;;;
+     *       ;;
+     */
+    String code = "a;'b and \\' more\n'\n!comment;;;;\n;;";
+    TestCSVParser parser = new TestCSVParser(new StringReader(code));
+    parser.setDelimiter(';');
+    parser.setEncapsulator('\'');
+    parser.setCommentStart('!');
+    System.out.println("---------\n" + code + "\n-------------");
+    assertEquals(CSVParser.TT_TOKEN + ";a;", parser.testNextToken());
+    assertEquals(
+      CSVParser.TT_EORECORD + ";b and ' more\n;", 
+      parser.testNextToken());
+  }
+  
+  
+  // ======================================================
+  //   parser tests
+  // ======================================================
+  
+  String code = 
+    "a,b,c,d\n"
+    + " a , b , 1 2 \n"
+    + "\"foo baar\", b,\n"
+    + "   \"foo\n,,\n\"\",,\n\\\"\",d,e\n";
+  String[][] res = { 
+    {"a", "b", "c", "d"},
+    {"a", "b", "1 2"}, 
+    {"foo baar", "b", ""}, 
+    {"foo\n,,\n\",,\n\"", "d", "e"},
+    {""}
+  };
+  public void testGetLine() throws IOException {
+    TestCSVParser parser = new TestCSVParser(new StringReader(code));
+    System.out.println("---------\n" + code + "\n-------------");
+    String[] tmp = null;
+    for (int i = 0; i < res.length; i++) {
+      tmp = parser.getLine();
+      assertTrue(Arrays.equals(res[i], tmp));
+    }
+    tmp = parser.getLine();
+    assertTrue(tmp == null);
+  }
+  
+  public void testNextValue() throws IOException {
+    TestCSVParser parser = new TestCSVParser(new StringReader(code));
+    System.out.println("---------\n" + code + "\n-------------");
+    String tmp = null;
+    for (int i = 0; i < res.length; i++) {
+      for (int j = 0; j < res[i].length; j++) {
+        tmp = parser.nextValue();
+        assertEquals(res[i][j], tmp);
+      }
+    }
+    tmp = parser.nextValue();
+    assertTrue(tmp == null);    
+  }
+  
+  public void testGetAllValues() throws IOException {
+    TestCSVParser parser = new TestCSVParser(new StringReader(code));
+    System.out.println("---------\n" + code + "\n-------------");
+    String[][] tmp = parser.getAllValues();
+    assertEquals(res.length, tmp.length);
+    assertTrue(tmp.length > 0);
+    for (int i = 0; i < res.length; i++) {
+      assertTrue(Arrays.equals(res[i], tmp[i])); 
+    }
+  }
+  
+  public void testExcelStrategyTest() throws IOException {
+    String code = 
+      "value1;value2;value3;value4\r\na;b;c;d\r\n  x;;;"
+      + "\r\n\r\n\"\"\"hello\"\"\";\"  \"\"world\"\"\";\"abc\ndef\";\r\n";
+    String[][] res = {
+      {"value1", "value2", "value3", "value4"},
+      {"a", "b", "c", "d"},
+      {"  x", "", "", ""},
+      {""},
+      {"\"hello\"", "  \"world\"", "abc\ndef", ""},
+      {""}
+    };
+    TestCSVParser parser = new TestCSVParser(new StringReader(code));
+    parser.setExcelStrategy();
+    System.out.println("---------\n" + code + "\n-------------");
+    String[][] tmp = parser.getAllValues();
+    assertEquals(res.length, tmp.length);
+    assertTrue(tmp.length > 0);
+    for (int i = 0; i < res.length; i++) {
+      assertTrue(Arrays.equals(res[i], tmp[i])); 
+    }
+  }
+  
+  public void testExcelStrategyTest2() throws Exception {
+    String code = "foo;baar\r\n\r\nhello;\r\n\r\nworld;\r\n";
+    String[][] res = {
+      {"foo", "baar"},
+      {""},
+      {"hello", ""},
+      {""},
+      {"world", ""},
+      {""} 
+    };
+    TestCSVParser parser = new TestCSVParser(new StringReader(code));
+    parser.setExcelStrategy();
+    System.out.println("---------\n" + code + "\n-------------");
+    String[][] tmp = parser.getAllValues();
+    assertEquals(res.length, tmp.length);
+    assertTrue(tmp.length > 0);
+    for (int i = 0; i < res.length; i++) {
+      for (int j = 0; j < tmp[i].length; j++) {
+        System.out.println("'" + tmp[i][j] + "'");
+      }
+      assertTrue(Arrays.equals(res[i], tmp[i])); 
+    }
+    //assertTrue(false);
+  }
+  
+  // ======================================================
+  //   static parser tests
+  // ======================================================
+  public void testParse1() throws IOException {
+      String[][] data = CSVParser.parse("abc\ndef");
+      assertEquals(2, data.length);
+      assertEquals(1, data[0].length);
+      assertEquals(1, data[1].length);
+      assertEquals("abc", data[0][0]);
+      assertEquals("def", data[1][0]);
+    }
+
+    public void testParse2() throws IOException {
+      String[][] data = CSVParser.parse("abc,def,\"ghi,jkl\"\ndef");
+      assertEquals(2, data.length);
+      assertEquals(3, data[0].length);
+      assertEquals(1, data[1].length);
+      assertEquals("abc", data[0][0]);
+      assertEquals("def", data[0][1]);
+      assertEquals("ghi,jkl", data[0][2]);
+      assertEquals("def", data[1][0]);
+    }
+
+    public void testParse3() throws IOException {
+      String[][] data = CSVParser.parse("abc,\"def\nghi\"\njkl");
+      assertEquals(2, data.length);
+      assertEquals(2, data[0].length);
+      assertEquals(1, data[1].length);
+      assertEquals("abc", data[0][0]);
+      assertEquals("def\nghi", data[0][1]);
+      assertEquals("jkl", data[1][0]);
+    }
+
+    public void testParse4() throws IOException {
+      String[][] data = CSVParser.parse("abc,\"def\\\\nghi\"\njkl");
+      assertEquals(2, data.length);
+      assertEquals(2, data[0].length);
+      assertEquals(1, data[1].length);
+      assertEquals("abc", data[0][0]);
+      assertEquals("def\\nghi", data[0][1]);
+      assertEquals("jkl", data[1][0]);
+    }
+
+    public void testParse5() throws IOException {
+      String[][] data = CSVParser.parse("abc,def\\nghi\njkl");
+      assertEquals(2, data.length);
+      assertEquals(2, data[0].length);
+      assertEquals(1, data[1].length);
+      assertEquals("abc", data[0][0]);
+      assertEquals("def\\nghi", data[0][1]);
+      assertEquals("jkl", data[1][0]);
+    }
+    
+    public void testParse6() throws IOException {
+      String[][] data = CSVParser.parse("");
+      assertEquals(1, data.length);
+      assertEquals(1, data[0].length);
+      assertEquals("", data[0][0]);  
+    }
+    
+    public void testParse7() throws IOException {
+      boolean io = false;
+      try {
+        CSVParser.parse(null);
+      } catch (IllegalArgumentException e) {
+        io = true;
+      }
+      assertTrue(io);
+    }
+    
+    public void testParseLine1() throws IOException {
+      String[] data = CSVParser.parseLine("abc,def,ghi");
+      assertEquals(3, data.length);
+      assertEquals("abc", data[0]);
+      assertEquals("def", data[1]);
+      assertEquals("ghi", data[2]);
+    }
+
+    public void testParseLine2() throws IOException {
+      String[] data = CSVParser.parseLine("abc,def,ghi\n");
+      assertEquals(3, data.length);
+      assertEquals("abc", data[0]);
+      assertEquals("def", data[1]);
+      assertEquals("ghi", data[2]);
+    }
+
+    public void testParseLine3() throws IOException {
+      String[] data = CSVParser.parseLine("abc,\"def,ghi\"");
+      assertEquals(2, data.length);
+      assertEquals("abc", data[0]);
+      assertEquals("def,ghi", data[1]);
+    }
+
+    public void testParseLine4() throws IOException {
+      String[] data = CSVParser.parseLine("abc,\"def\nghi\"");
+      assertEquals(2, data.length);
+      assertEquals("abc", data[0]);
+      assertEquals("def\nghi", data[1]);
+    }
+    
+    public void testParseLine5() throws IOException {
+      String[] data = CSVParser.parseLine("");
+      assertEquals(0, data.length);
+      // assertEquals("", data[0]);
+    }
+    
+    public void testParseLine6() throws IOException {
+      boolean io = false;
+      try {
+        CSVParser.parseLine(null);
+      } catch (IllegalArgumentException e) {
+        io = true;
+      }
+      assertTrue(io);
+    }
+    
+    public void testParseLine7() throws IOException {
+      String[] res = CSVParser.parseLine("");
+      assertNotNull(res);
+      assertEquals(0, res.length);  
+    }
+      
+    public void testUnicodeEscape() throws IOException {
+      String code = "abc,\\u0070\\u0075\\u0062\\u006C\\u0069\\u0063";
+      TestCSVParser parser = new TestCSVParser(new StringReader(code));
+      System.out.println("---------\n" + code + "\n-------------");
+      parser.setUnicodeEscapeInterpretation(true);
+      String[] data = parser.getLine();
+      assertEquals(2, data.length);
+      assertEquals("abc", data[0]);
+      assertEquals("public", data[1]);
+    }
+    
+    public void testCarriageReturnLineFeedEndings() throws IOException {
+     String code = "foo\r\nbaar,\r\nhello,world\r\n,kanu";
+     TestCSVParser parser = new TestCSVParser(new StringReader(code));
+     System.out.println("---------\n" + code + "\n-------------");
+     String[][] data = parser.getAllValues();
+     assertEquals(4, data.length);
+    }
+    
+    public void testIgnoreEmptyLines() throws IOException {
+      String code = "\nfoo,baar\n\r\n,\n\n,world\r\n\n";
+      //String code = "world\r\n\n";
+      //String code = "foo;baar\r\n\r\nhello;\r\n\r\nworld;\r\n";
+      TestCSVParser parser = new TestCSVParser(new StringReader(code));
+      System.out.println("---------\n" + code + "\n-------------");
+      String[][] data = parser.getAllValues();
+//      for (int i = 0; i < data.length; i++) {
+//        if (i > 0) {
+//          System.out.print('\n');
+//        }
+//        for (int j = 0; j < data[i].length; j++) {
+//          System.out.print("(" + j + ")'" + data[i][j] + "'");
+//        }
+//      }
+//      System.out.println("----------");
+      assertEquals(3, data.length);
+    }
+    
+    public void testLineTokenConsistency() throws IOException {
+      String code = "\nfoo,baar\n\r\n,\n\n,world\r\n\n";
+      TestCSVParser parser = new TestCSVParser(new StringReader(code));
+      System.out.println("---------\n" + code + "\n-------------");
+      String[][] data = parser.getAllValues();
+      parser = new TestCSVParser(new StringReader(code));
+      TestCSVParser parser1 = new TestCSVParser(new StringReader(code));
+      for (int i = 0; i < data.length; i++) {
+        assertTrue(Arrays.equals(parser1.getLine(), data[i]));
+        for (int j = 0; j < data[i].length; j++) {
+          assertEquals(parser.nextValue(), data[i][j]);
+        }
+      }
+    }
+}

Propchange: jakarta/commons/trunks-sandbox/csv/src/test/ch/netcetera/wake/core/format/csv/CSVParserTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jakarta/commons/trunks-sandbox/csv/src/test/ch/netcetera/wake/core/format/csv/CSVPrinterTest.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/trunks-sandbox/csv/src/test/ch/netcetera/wake/core/format/csv/CSVPrinterTest.java?rev=357300&view=auto
==============================================================================
--- jakarta/commons/trunks-sandbox/csv/src/test/ch/netcetera/wake/core/format/csv/CSVPrinterTest.java (added)
+++ jakarta/commons/trunks-sandbox/csv/src/test/ch/netcetera/wake/core/format/csv/CSVPrinterTest.java Fri Dec 16 21:41:27 2005
@@ -0,0 +1,78 @@
+/*
+* The copyright to the computer program(s) herein is the property of
+* Netcetera AG, Switzerland. The program(s) may be used and/or copied
+* only with the written permission of Netcetera AG or in accordance
+* with the terms and conditions stipulated in the agreement/contract
+* under which the program(s) have been supplied.
+*
+* @(#) $Id: CSVPrinterTest.java,v 1.1 2004/08/10 12:38:45 rgrunder Exp $
+*/
+package ch.netcetera.wake.core.format.csv;
+
+import java.io.StringWriter;
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * CSVPrinterTest
+ */
+public class CSVPrinterTest extends TestCase {
+  
+  String lineSeparator = null;
+  
+  /**
+   * Constructor for CSVPrinterTest.
+   */
+  public CSVPrinterTest(String name) {
+    super(name);
+    this.lineSeparator = System.getProperty("line.separator");
+  }
+
+  public static Test suite() {
+    return new TestSuite(CSVPrinterTest.class);
+  }
+
+  public void testPrinter1() {
+    StringWriter sw = new StringWriter();
+    CSVPrinter printer = new CSVPrinter(sw);
+    String[] line1 = {"a", "b"};
+    printer.println(line1);
+    assertEquals("a,b" + lineSeparator, sw.toString());
+  }
+
+  public void testPrinter2() {
+    StringWriter sw = new StringWriter();
+    CSVPrinter printer = new CSVPrinter(sw);
+    String[] line1 = {"a,b", "b"};
+    printer.println(line1);
+    assertEquals("\"a,b\",b" + lineSeparator, sw.toString());
+  }
+
+  public void testPrinter3() {
+    StringWriter sw = new StringWriter();
+    CSVPrinter printer = new CSVPrinter(sw);
+    String[] line1 = {"a, b", "b "};
+    printer.println(line1);
+    assertEquals("\"a, b\",\"b \"" + lineSeparator, sw.toString());
+  }
+
+  public void testExcelPrinter1() {
+    StringWriter sw = new StringWriter();
+    CSVPrinter printer = new CSVPrinter(sw);
+    printer.setSeparatorChar(';');
+    String[] line1 = {"a", "b"};
+    printer.println(line1);
+    assertEquals("a;b" + lineSeparator, sw.toString());
+  }
+
+  public void testExcelPrinter2() {
+    StringWriter sw = new StringWriter();
+    CSVPrinter printer = new CSVPrinter(sw);
+    printer.setSeparatorChar(';');
+    String[] line1 = {"a;b", "b"};
+    printer.println(line1);
+    assertEquals("\"a;b\";b" + lineSeparator, sw.toString());
+  }
+
+}

Propchange: jakarta/commons/trunks-sandbox/csv/src/test/ch/netcetera/wake/core/format/csv/CSVPrinterTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jakarta/commons/trunks-sandbox/csv/src/test/ch/netcetera/wake/core/format/csv/ExtendedBufferedReaderTest.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/trunks-sandbox/csv/src/test/ch/netcetera/wake/core/format/csv/ExtendedBufferedReaderTest.java?rev=357300&view=auto
==============================================================================
--- jakarta/commons/trunks-sandbox/csv/src/test/ch/netcetera/wake/core/format/csv/ExtendedBufferedReaderTest.java (added)
+++ jakarta/commons/trunks-sandbox/csv/src/test/ch/netcetera/wake/core/format/csv/ExtendedBufferedReaderTest.java Fri Dec 16 21:41:27 2005
@@ -0,0 +1,233 @@
+/*
+ * Copyright (C) 2004 by Netcetera AG.
+ * All rights reserved.
+ *
+ * The copyright to the computer program(s) herein is the property of
+ * Netcetera AG, Switzerland. The program(s) may be used and/or copied
+ * only with the written permission of Netcetera AG or in accordance
+ * with the terms and conditions stipulated in the agreement/contract
+ * under which the program(s) have been supplied.
+ *
+ * @(#) $Id: ExtendedBufferedReaderTest.java,v 1.2 2004/10/20 11:14:11 rgrunder Exp $
+ */
+package ch.netcetera.wake.core.format.csv;
+
+import java.io.StringReader;
+import java.util.Arrays;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * ExtendedBufferedReaderTest
+ *
+ */
+public class ExtendedBufferedReaderTest extends TestCase {
+
+  private StringBuffer buf = null;
+  private ExtendedBufferedReader br = null;
+  
+  /**
+   * Constructor for ExtendedBufferedReaderTest.
+   * @param arg0
+   */
+  public ExtendedBufferedReaderTest(String arg0) {
+    super(arg0);
+  }
+
+  public static Test suite() {
+    return new TestSuite(ExtendedBufferedReaderTest.class);
+  }
+  
+  // ======================================================
+  //   the test cases
+  // ======================================================
+ 
+  public void testConstructors() {
+    br = new ExtendedBufferedReader(new StringReader(""));
+    br = new ExtendedBufferedReader(new StringReader(""), 10); 
+  }
+  
+  public void testReadLookahead1() throws Exception {
+   
+    assertEquals(ExtendedBufferedReader.END_OF_STREAM, getEBR("").read());
+    br = getEBR("1\n2\r3\n");
+    assertEquals('1', br.lookAhead());
+    assertEquals(ExtendedBufferedReader.UNDEFINED, br.readAgain());
+    assertEquals('1', br.read());
+    assertEquals('1', br.readAgain());
+
+    assertEquals(0, br.getLineNumber());
+    assertEquals('\n', br.lookAhead());
+    assertEquals(0, br.getLineNumber());
+    assertEquals('1', br.readAgain());    
+    assertEquals('\n', br.read());
+    assertEquals(1, br.getLineNumber());
+    assertEquals('\n', br.readAgain());
+    assertEquals(1, br.getLineNumber());
+    
+    assertEquals('2', br.lookAhead());
+    assertEquals(1, br.getLineNumber());
+    assertEquals('\n', br.readAgain());
+    assertEquals(1, br.getLineNumber());
+    assertEquals('2', br.read());
+    assertEquals('2', br.readAgain());
+    
+    assertEquals('\r', br.lookAhead());
+    assertEquals('2', br.readAgain());
+    assertEquals('\r', br.read());
+    assertEquals('\r', br.readAgain());
+    
+    assertEquals('3', br.lookAhead());
+    assertEquals('\r', br.readAgain());
+    assertEquals('3', br.read());
+    assertEquals('3', br.readAgain());
+    
+    assertEquals('\n', br.lookAhead());
+    assertEquals(1, br.getLineNumber());
+    assertEquals('3', br.readAgain());
+    assertEquals('\n', br.read());
+    assertEquals(2, br.getLineNumber());
+    assertEquals('\n', br.readAgain());
+    assertEquals(2, br.getLineNumber());
+    
+    assertEquals(ExtendedBufferedReader.END_OF_STREAM, br.lookAhead());
+    assertEquals('\n', br.readAgain());
+    assertEquals(ExtendedBufferedReader.END_OF_STREAM, br.read());
+    assertEquals(ExtendedBufferedReader.END_OF_STREAM, br.readAgain());
+    assertEquals(ExtendedBufferedReader.END_OF_STREAM, br.read());
+    assertEquals(ExtendedBufferedReader.END_OF_STREAM, br.lookAhead());
+ 
+  }
+  
+
+  public void testReadLookahead2() throws Exception {
+    char[] ref = new char[5];
+    char[] res = new char[5];  
+    
+    br = getEBR("");
+    assertEquals(0, br.read(res, 0, 0));
+    assertTrue(Arrays.equals(res, ref)); 
+    
+    br = getEBR("abcdefg");
+    ref[0] = 'a';
+    ref[1] = 'b';
+    ref[2] = 'c';
+    assertEquals(3, br.read(res, 0, 3));
+    assertTrue(Arrays.equals(res, ref));
+    assertEquals('c', br.readAgain());
+    
+    assertEquals('d', br.lookAhead());
+    ref[4] = 'd';
+    assertEquals(1, br.read(res, 4, 1));
+    assertTrue(Arrays.equals(res, ref));
+    assertEquals('d', br.readAgain());
+ 
+  }
+  
+  public void testMarkSupported() {
+    assertFalse(getEBR("foo").markSupported());
+  }
+  
+  public void testReadLine() throws Exception {
+    br = getEBR("");
+    assertTrue(br.readLine() == null);
+    
+    br = getEBR("\n");
+    assertTrue(br.readLine().equals(""));
+    assertTrue(br.readLine() == null);
+    
+    br = getEBR("foo\n\nhello");
+    assertEquals(0, br.getLineNumber());
+    assertTrue(br.readLine().equals("foo"));
+    assertEquals(1, br.getLineNumber());
+    assertTrue(br.readLine().equals(""));
+    assertEquals(2, br.getLineNumber());
+    assertTrue(br.readLine().equals("hello"));
+    assertEquals(3, br.getLineNumber());
+    assertTrue(br.readLine() == null);
+    assertEquals(3, br.getLineNumber());
+    
+    br = getEBR("foo\n\nhello");
+    assertEquals('f', br.read());
+    assertEquals('o', br.lookAhead());
+    assertTrue(br.readLine().equals("oo"));
+    assertEquals(1, br.getLineNumber());
+    assertEquals('\n', br.lookAhead());
+    assertTrue(br.readLine().equals(""));
+    assertEquals(2, br.getLineNumber());
+    assertEquals('h', br.lookAhead());
+    assertTrue(br.readLine().equals("hello"));
+    assertTrue(br.readLine() == null);
+    assertEquals(3, br.getLineNumber());
+    
+ 
+    br = getEBR("foo\rbaar\r\nfoo");
+    assertTrue(br.readLine().equals("foo"));
+    assertEquals('b', br.lookAhead());
+    assertTrue(br.readLine().equals("baar"));
+    assertEquals('f', br.lookAhead());
+    assertTrue(br.readLine().equals("foo"));
+    assertTrue(br.readLine() == null);
+  }
+  
+  public void testSkip0() throws Exception {
+    
+    br = getEBR("");
+    assertEquals(0, br.skip(0));
+    assertEquals(0, br.skip(1));
+    
+    br = getEBR("");
+    assertEquals(0, br.skip(1));
+    
+    br = getEBR("abcdefg");
+    assertEquals(0, br.skip(0));
+    assertEquals('a', br.lookAhead());
+    assertEquals(0, br.skip(0));
+    assertEquals('a', br.lookAhead());
+    assertEquals(1, br.skip(1));
+    assertEquals('b', br.lookAhead());
+    assertEquals('b', br.read());
+    assertEquals(3, br.skip(3));
+    assertEquals('f', br.lookAhead());
+    assertEquals(2, br.skip(5));
+    assertTrue(br.readLine() == null);
+    
+    br = getEBR("12345");
+    assertEquals(5, br.skip(5));
+    assertTrue (br.lookAhead() == ExtendedBufferedReader.END_OF_STREAM);
+  }
+  
+  public void testSkipUntil() throws Exception {   
+    br = getEBR("");
+    assertEquals(0, br.skipUntil(';'));
+    br = getEBR("ABCDEF,GHL,,MN");
+    assertEquals(6, br.skipUntil(','));
+    assertEquals(0, br.skipUntil(','));
+    br.skip(1);
+    assertEquals(3, br.skipUntil(','));
+    br.skip(1);
+    assertEquals(0, br.skipUntil(','));
+    br.skip(1);
+    assertEquals(2, br.skipUntil(','));
+  }
+  
+  public void testReadUntil() throws Exception {
+    br = getEBR("");
+    assertTrue(br.readUntil(';').equals(""));
+    br = getEBR("ABCDEF;GHL;;MN");
+    assertTrue(br.readUntil(';').equals("ABCDEF"));
+    assertTrue(br.readUntil(';').length() == 0);
+    br.skip(1);
+    assertTrue(br.readUntil(';').equals("GHL"));
+    br.skip(1);
+    assertTrue(br.readUntil(';').equals(""));
+    br.skip(1);
+    assertTrue(br.readUntil(',').equals("MN"));
+  }
+  
+  private ExtendedBufferedReader getEBR(String s) {
+    return new ExtendedBufferedReader(new StringReader(s));
+  }
+}

Propchange: jakarta/commons/trunks-sandbox/csv/src/test/ch/netcetera/wake/core/format/csv/ExtendedBufferedReaderTest.java
------------------------------------------------------------------------------
    svn:eol-style = native



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org