View Javadoc
1   package com.opencsv;
2   
3   import com.opencsv.exceptions.CsvException;
4   import com.opencsv.exceptions.CsvValidationException;
5   import org.junit.jupiter.api.Test;
6   
7   import java.io.BufferedReader;
8   import java.io.IOException;
9   import java.io.StringReader;
10  import java.io.StringWriter;
11  import java.util.List;
12  
13  import static org.junit.jupiter.api.Assertions.assertArrayEquals;
14  import static org.junit.jupiter.api.Assertions.assertEquals;
15  
16  public class UniCodeTest {
17     private static final String COMPOUND_STRING = "??,??";
18     private static final String COMPOUND_STRING_WITH_QUOTES = "\"??\",\"??\"";
19     private static final String FIRST_STRING = "??";
20     private static final String SECOND_STRING = "??";
21     private static final String[] UNICODE_ARRAY = {FIRST_STRING, SECOND_STRING};
22     private static final String[] MIXED_ARRAY = {"eins, 1", "ichi", FIRST_STRING, SECOND_STRING};
23     private static final String[] ASCII_ARRAY = {"foo", "bar"};
24     private static final String ASCII_STRING_WITH_QUOTES = "\"foo\",\"bar\"";
25     ICSVParser csvParser;
26  
27     @Test
28     public void canParseUnicode() throws IOException {
29        csvParser = new CSVParser();
30        String[] items = csvParser.parseLine(COMPOUND_STRING);
31        assertEquals(2, items.length);
32        assertEquals(FIRST_STRING, items[0]);
33        assertEquals(SECOND_STRING, items[1]);
34        assertArrayEquals(UNICODE_ARRAY, items);
35     }
36  
37     @Test
38     public void readerTest() throws IOException {
39        BufferedReader reader = new BufferedReader(new StringReader(FIRST_STRING));
40        String testString = reader.readLine();
41        assertEquals(FIRST_STRING, testString);
42     }
43  
44     @Test
45     public void writerTest() {
46        StringWriter sw = new StringWriter();
47        sw.write(FIRST_STRING);
48        assertEquals(FIRST_STRING, sw.toString());
49     }
50  
51     @Test
52     public void runUniCodeThroughCSVReader() throws IOException, CsvValidationException {
53        try (CSVReader reader = new CSVReader(new StringReader(COMPOUND_STRING))) {
54          String[] items = reader.readNext();
55            assertEquals(2, items.length);
56            assertEquals(FIRST_STRING, items[0]);
57            assertEquals(SECOND_STRING, items[1]);
58            assertArrayEquals(UNICODE_ARRAY, items);
59        }
60     }
61  
62     @Test
63     public void runUniCodeThroughCSVWriter() throws IOException {
64        StringWriter sw = new StringWriter();
65        try (ICSVWriter writer = new CSVWriter(sw)) {
66          writer.writeNext(UNICODE_ARRAY);
67        }
68        assertEquals(COMPOUND_STRING_WITH_QUOTES.trim(), sw.toString().trim());
69     }
70  
71     @Test
72     public void runASCIIThroughCSVWriter() throws IOException {
73        StringWriter sw = new StringWriter();
74        try (ICSVWriter writer = new CSVWriter(sw)) {
75          writer.writeNext(ASCII_ARRAY);
76        }
77        assertEquals(ASCII_STRING_WITH_QUOTES.trim(), sw.toString().trim());
78     }
79  
80     @Test
81     public void writeThenReadAscii() throws IOException, CsvValidationException {
82        StringWriter sw = new StringWriter();
83        try (ICSVWriter writer = new CSVWriter(sw)) {
84          writer.writeNext(ASCII_ARRAY);
85        }
86        try (CSVReader reader = new CSVReader(new StringReader(sw.toString()))) {
87          String[] items = reader.readNext();
88            assertEquals(2, items.length);
89            assertArrayEquals(ASCII_ARRAY, items);
90        }
91     }
92  
93     @Test
94     public void writeThenReadTwiceAscii() throws IOException, CsvException {
95        StringWriter sw = new StringWriter();
96        try (ICSVWriter writer = new CSVWriter(sw)) {
97          writer.writeNext(ASCII_ARRAY);
98            writer.writeNext(ASCII_ARRAY);
99        }
100       try (CSVReader reader = new CSVReader(new StringReader(sw.toString()))) {
101         List<String[]> lines = reader.readAll();
102           assertEquals(2, lines.size());
103 
104           String[] items = lines.get(0);
105           assertEquals(2, items.length);
106           assertArrayEquals(ASCII_ARRAY, items);
107 
108 
109           items = lines.get(1);
110           assertEquals(2, items.length);
111           assertArrayEquals(ASCII_ARRAY, items);
112       }
113    }
114 
115    @Test
116    public void writeThenReadTwiceUnicode() throws IOException, CsvException {
117       StringWriter sw = new StringWriter();
118       try (ICSVWriter writer = new CSVWriter(sw)) {
119         writer.writeNext(UNICODE_ARRAY);
120           writer.writeNext(UNICODE_ARRAY);
121       }
122       try (CSVReader reader = new CSVReader(new StringReader(sw.toString()))) {
123         List<String[]> lines = reader.readAll();
124           assertEquals(2, lines.size());
125 
126           String[] items = lines.get(0);
127           assertEquals(2, items.length);
128           assertArrayEquals(UNICODE_ARRAY, items);
129 
130 
131           items = lines.get(1);
132           assertEquals(2, items.length);
133           assertArrayEquals(UNICODE_ARRAY, items);
134       }
135    }
136 
137    @Test
138    public void writeThenReadTwiceMixedUnicode() throws IOException, CsvException {
139       StringWriter sw = new StringWriter();
140       try (ICSVWriter writer = new CSVWriter(sw)) {
141         writer.writeNext(MIXED_ARRAY);
142           writer.writeNext(MIXED_ARRAY);
143       }
144       try (CSVReader reader = new CSVReader(new StringReader(sw.toString()))) {
145         List<String[]> lines = reader.readAll();
146           assertEquals(2, lines.size());
147 
148           String[] items = lines.get(0);
149           assertEquals(4, items.length);
150           assertArrayEquals(MIXED_ARRAY, items);
151 
152 
153           items = lines.get(1);
154           assertEquals(4, items.length);
155           assertArrayEquals(MIXED_ARRAY, items);
156       }
157    }
158 }