1   /**
2    * Copyright 2010, CSIRO Australia.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *         http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package au.csiro.netcdf.util;
17  
18  import junit.framework.TestCase;
19  
20  /**
21   * Verify that CSVTokenizer is working correctly
22   * 
23   * Copyright 2010, CSIRO Australia
24   * All rights reserved.
25   * 
26   * @author      James Dempsey on 10/06/2010
27   * @version     $Revision: 78 $  $Date: 2010-07-24 16:23:13 +1000 (Sat, 24 Jul 2010) $
28   */
29  public class CSVTokenizerTest extends TestCase
30  {
31  
32      /* (non-Javadoc)
33       * @see junit.framework.TestCase#setUp()
34       */
35      protected void setUp() throws Exception
36      {
37          super.setUp();
38      }
39  
40      public void testDelimiterNotReturned()
41      {
42          String testText = "1,\"Foo\",\"Ba\"\"r\",\"Ba,\nz\",a\n,\"b\015\"";
43          CSVTokenizer tok = new CSVTokenizer(testText, false);
44          assertTrue(tok.hasMoreElements());
45          assertTrue(tok.hasMoreTokens());
46          assertEquals("Token 1 incorrect", "1", tok.nextToken());
47          assertTrue(tok.hasMoreElements());
48          assertTrue(tok.hasMoreTokens());
49          assertEquals("Token 2 incorrect", "Foo", tok.nextToken());
50          assertTrue(tok.hasMoreElements());
51          assertTrue(tok.hasMoreTokens());
52          assertEquals("Token 3 incorrect", "Ba\"r", tok.nextToken());
53          assertTrue(tok.hasMoreElements());
54          assertTrue(tok.hasMoreTokens());
55          assertEquals("Token 4 incorrect", "Ba,\nz", tok.nextToken());
56          assertTrue(tok.hasMoreElements());
57          assertTrue(tok.hasMoreTokens());
58          assertEquals("Token 5 incorrect", "a", tok.nextToken());
59          assertTrue(tok.hasMoreElements());
60          assertTrue(tok.hasMoreTokens());
61          assertEquals("Token 6 incorrect", "", tok.nextToken());
62          assertTrue(tok.hasMoreElements());
63          assertTrue(tok.hasMoreTokens());
64          assertEquals("Token 7 incorrect", "b\015", tok.nextToken());
65          assertFalse(tok.hasMoreElements());
66          assertFalse(tok.hasMoreTokens());
67          assertTrue(tok.atEOL());
68      }
69  
70      public void testDelimiterReturned()
71      {
72          String testText = "1,\"Foo\",\"Ba\"\"r\"\nBaz";
73          CSVTokenizer tok = new CSVTokenizer(testText, true);
74          assertTrue(tok.hasMoreElements());
75          assertTrue(tok.hasMoreTokens());
76          assertEquals("Token 1 incorrect", "1", tok.nextToken());
77          assertTrue(tok.hasMoreElements());
78          assertTrue(tok.hasMoreTokens());
79          assertEquals("Delimiter 1 incorrect", ",", tok.nextToken());
80          assertTrue(tok.hasMoreElements());
81          assertTrue(tok.hasMoreTokens());
82          assertEquals("Token 2 incorrect", "Foo", tok.nextToken());
83          assertTrue(tok.hasMoreElements());
84          assertTrue(tok.hasMoreTokens());
85          assertEquals("Delimiter 2 incorrect", ",", tok.nextToken());
86          assertTrue(tok.hasMoreElements());
87          assertTrue(tok.hasMoreTokens());
88          assertFalse(tok.atEOL());
89          assertEquals("Token 3 incorrect", "Ba\"r", tok.nextToken());
90          assertTrue(tok.hasMoreElements());
91          assertTrue(tok.hasMoreTokens());
92          assertEquals("Delimiter 3 incorrect", "\n", tok.nextToken());
93          assertTrue(tok.hasMoreElements());
94          assertTrue(tok.hasMoreTokens());
95          assertEquals("Token 4 incorrect", "Baz", tok.nextToken());
96          assertFalse(tok.hasMoreElements());
97          assertFalse(tok.hasMoreTokens());
98          assertTrue(tok.atEOL());
99      }
100 }