1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.supercsv.encoder;
17
18 import static org.junit.Assert.assertEquals;
19
20 import org.junit.Before;
21 import org.junit.Test;
22 import org.supercsv.encoder.DefaultCsvEncoder;
23 import org.supercsv.prefs.CsvPreference;
24 import org.supercsv.quote.AlwaysQuoteMode;
25 import org.supercsv.util.CsvContext;
26
27
28
29
30
31
32 public class DefaultCsvEncoderTest {
33
34 private static final CsvPreference PREFS = CsvPreference.STANDARD_PREFERENCE;
35 private static final CsvPreference SURROUNDING_SPACES_REQUIRE_QUOTES_PREFS = new CsvPreference.Builder(
36 CsvPreference.STANDARD_PREFERENCE).surroundingSpacesNeedQuotes(true).build();
37 private static final CsvPreference ALWAYS_QUOTE_PREFS = new CsvPreference.Builder(CsvPreference.STANDARD_PREFERENCE)
38 .useQuoteMode(new AlwaysQuoteMode()).build();
39
40 private DefaultCsvEncoder csvEncoder;
41
42
43
44
45 @Before
46 public void setUp() {
47 this.csvEncoder = new DefaultCsvEncoder();
48 }
49
50
51
52
53 @Test
54 public void testEncode() {
55
56 final CsvContext context = new CsvContext(1, 1, 1);
57
58 final String empty = "";
59 assertEquals("", csvEncoder.encode(empty, context, PREFS));
60 assertEquals("", csvEncoder.encode(empty, context, SURROUNDING_SPACES_REQUIRE_QUOTES_PREFS));
61 assertEquals("\"\"", csvEncoder.encode(empty, context, ALWAYS_QUOTE_PREFS));
62
63 final String space = " ";
64 assertEquals(" ", csvEncoder.encode(space, context, PREFS));
65 assertEquals("\" \"", csvEncoder.encode(space, context, SURROUNDING_SPACES_REQUIRE_QUOTES_PREFS));
66 assertEquals("\" \"", csvEncoder.encode(space, context, ALWAYS_QUOTE_PREFS));
67
68 final String leadingSpace = " leading space";
69 assertEquals(leadingSpace, csvEncoder.encode(leadingSpace, context, PREFS));
70 assertEquals("\" leading space\"",
71 csvEncoder.encode(leadingSpace, context, SURROUNDING_SPACES_REQUIRE_QUOTES_PREFS));
72 assertEquals("\" leading space\"", csvEncoder.encode(leadingSpace, context, ALWAYS_QUOTE_PREFS));
73
74 final String trailingSpace = "trailing space ";
75 assertEquals(trailingSpace, csvEncoder.encode(trailingSpace, context, PREFS));
76 assertEquals("\"trailing space \"",
77 csvEncoder.encode(trailingSpace, context, SURROUNDING_SPACES_REQUIRE_QUOTES_PREFS));
78 assertEquals("\"trailing space \"", csvEncoder.encode(trailingSpace, context, ALWAYS_QUOTE_PREFS));
79
80 final String normal = "just a normal phrase";
81 assertEquals(normal, csvEncoder.encode(normal, context, PREFS));
82 assertEquals(normal, csvEncoder.encode(normal, context, SURROUNDING_SPACES_REQUIRE_QUOTES_PREFS));
83 assertEquals("\"just a normal phrase\"", csvEncoder.encode(normal, context, ALWAYS_QUOTE_PREFS));
84
85 final String comma = "oh look, a comma";
86 assertEquals("\"oh look, a comma\"", csvEncoder.encode(comma, context, PREFS));
87 assertEquals("\"oh look, a comma\"", csvEncoder.encode(comma, context, SURROUNDING_SPACES_REQUIRE_QUOTES_PREFS));
88 assertEquals("\"oh look, a comma\"", csvEncoder.encode(comma, context, ALWAYS_QUOTE_PREFS));
89
90 final String quoted = "\"Watch out for quotes\", he said";
91 assertEquals("\"\"\"Watch out for quotes\"\", he said\"", csvEncoder.encode(quoted, context, PREFS));
92 assertEquals("\"\"\"Watch out for quotes\"\", he said\"",
93 csvEncoder.encode(quoted, context, SURROUNDING_SPACES_REQUIRE_QUOTES_PREFS));
94 assertEquals("\"\"\"Watch out for quotes\"\", he said\"",
95 csvEncoder.encode(quoted, context, ALWAYS_QUOTE_PREFS));
96
97 final String twoLines = "text that spans\ntwo lines";
98 int lineNumber = context.getLineNumber();
99 assertEquals("\"text that spans\r\ntwo lines\"", csvEncoder.encode(twoLines, context, PREFS));
100 assertEquals(++lineNumber, context.getLineNumber());
101 assertEquals("\"text that spans\r\ntwo lines\"",
102 csvEncoder.encode(twoLines, context, SURROUNDING_SPACES_REQUIRE_QUOTES_PREFS));
103 assertEquals(++lineNumber, context.getLineNumber());
104 assertEquals("\"text that spans\r\ntwo lines\"", csvEncoder.encode(twoLines, context, ALWAYS_QUOTE_PREFS));
105 assertEquals(++lineNumber, context.getLineNumber());
106
107 final String quotesTwoLines = "text \"with quotes\" that spans\ntwo lines";
108 assertEquals("\"text \"\"with quotes\"\" that spans\r\ntwo lines\"",
109 csvEncoder.encode(quotesTwoLines, context, PREFS));
110 assertEquals(++lineNumber, context.getLineNumber());
111 assertEquals("\"text \"\"with quotes\"\" that spans\r\ntwo lines\"",
112 csvEncoder.encode(quotesTwoLines, context, SURROUNDING_SPACES_REQUIRE_QUOTES_PREFS));
113 assertEquals(++lineNumber, context.getLineNumber());
114 assertEquals("\"text \"\"with quotes\"\" that spans\r\ntwo lines\"",
115 csvEncoder.encode(quotesTwoLines, context, ALWAYS_QUOTE_PREFS));
116 assertEquals(++lineNumber, context.getLineNumber());
117 }
118
119 }