1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.supercsv.prefs;
17
18 import static org.junit.Assert.assertEquals;
19 import static org.junit.Assert.assertFalse;
20 import static org.junit.Assert.assertNull;
21 import static org.junit.Assert.assertTrue;
22 import static org.supercsv.prefs.CsvPreference.EXCEL_NORTH_EUROPE_PREFERENCE;
23 import static org.supercsv.prefs.CsvPreference.EXCEL_PREFERENCE;
24 import static org.supercsv.prefs.CsvPreference.STANDARD_PREFERENCE;
25 import static org.supercsv.prefs.CsvPreference.TAB_PREFERENCE;
26
27 import org.junit.Test;
28 import org.supercsv.encoder.DefaultCsvEncoder;
29 import org.supercsv.quote.AlwaysQuoteMode;
30 import org.supercsv.quote.NormalQuoteMode;
31
32
33
34
35
36
37 public class CsvPreferenceTest {
38
39
40
41
42 @Test
43 public void testConstants() {
44 assertEquals('"', STANDARD_PREFERENCE.getQuoteChar());
45 assertEquals(',', STANDARD_PREFERENCE.getDelimiterChar());
46 assertEquals("\r\n", STANDARD_PREFERENCE.getEndOfLineSymbols());
47
48 assertEquals('"', EXCEL_PREFERENCE.getQuoteChar());
49 assertEquals(',', EXCEL_PREFERENCE.getDelimiterChar());
50 assertEquals("\n", EXCEL_PREFERENCE.getEndOfLineSymbols());
51
52 assertEquals('"', EXCEL_NORTH_EUROPE_PREFERENCE.getQuoteChar());
53 assertEquals(';', EXCEL_NORTH_EUROPE_PREFERENCE.getDelimiterChar());
54 assertEquals("\n", EXCEL_NORTH_EUROPE_PREFERENCE.getEndOfLineSymbols());
55
56 assertEquals('"', TAB_PREFERENCE.getQuoteChar());
57 assertEquals('\t', TAB_PREFERENCE.getDelimiterChar());
58 assertEquals("\n", TAB_PREFERENCE.getEndOfLineSymbols());
59 }
60
61
62
63
64 @Test
65 public void testCustomPreferenceWithDefaults() {
66 final CsvPreference custom = new CsvPreference.Builder('"', ',', "\n").build();
67 assertEquals('"', custom.getQuoteChar());
68 assertEquals(',', custom.getDelimiterChar());
69 assertEquals("\n", custom.getEndOfLineSymbols());
70 assertFalse(custom.isSurroundingSpacesNeedQuotes());
71 assertNull(custom.getCommentMatcher());
72 assertTrue(custom.getEncoder() instanceof DefaultCsvEncoder);
73 assertTrue(custom.getQuoteMode() instanceof NormalQuoteMode);
74 }
75
76
77
78
79 @Test
80 public void testCustomPreference() {
81 final CsvPreference custom = new CsvPreference.Builder('"', ',', "\n").surroundingSpacesNeedQuotes(true)
82 .useEncoder(new DefaultCsvEncoder()).useQuoteMode(new AlwaysQuoteMode()).build();
83 assertEquals('"', custom.getQuoteChar());
84 assertEquals(',', custom.getDelimiterChar());
85 assertEquals("\n", custom.getEndOfLineSymbols());
86 assertTrue(custom.isSurroundingSpacesNeedQuotes());
87 assertTrue(custom.getEncoder() instanceof DefaultCsvEncoder);
88 assertTrue(custom.getQuoteMode() instanceof AlwaysQuoteMode);
89 }
90
91
92
93
94 @Test
95 public void testCustomPreferenceBasedOnExistingWithDefaults() {
96 final CsvPreference custom = new CsvPreference.Builder(EXCEL_PREFERENCE).build();
97 assertEquals(EXCEL_PREFERENCE.getQuoteChar(), custom.getQuoteChar());
98 assertEquals(EXCEL_PREFERENCE.getDelimiterChar(), custom.getDelimiterChar());
99 assertEquals(EXCEL_PREFERENCE.getEndOfLineSymbols(), custom.getEndOfLineSymbols());
100 assertEquals(EXCEL_PREFERENCE.isSurroundingSpacesNeedQuotes(), custom.isSurroundingSpacesNeedQuotes());
101 assertEquals(EXCEL_PREFERENCE.getEncoder(), custom.getEncoder());
102 assertEquals(EXCEL_PREFERENCE.getQuoteMode(), custom.getQuoteMode());
103 }
104
105
106
107
108 @Test
109 public void testCustomPreferenceBasedOnExisting() {
110 final CsvPreference custom = new CsvPreference.Builder(EXCEL_PREFERENCE).surroundingSpacesNeedQuotes(true)
111 .useEncoder(new DefaultCsvEncoder()).useQuoteMode(new AlwaysQuoteMode()).build();
112 assertEquals(EXCEL_PREFERENCE.getQuoteChar(), custom.getQuoteChar());
113 assertEquals(EXCEL_PREFERENCE.getDelimiterChar(), custom.getDelimiterChar());
114 assertEquals(EXCEL_PREFERENCE.getEndOfLineSymbols(), custom.getEndOfLineSymbols());
115 assertTrue(custom.isSurroundingSpacesNeedQuotes());
116 assertTrue(custom.getEncoder() instanceof DefaultCsvEncoder);
117 assertTrue(custom.getQuoteMode() instanceof AlwaysQuoteMode);
118 }
119
120
121
122
123 @Test(expected = IllegalArgumentException.class)
124 public void testCustomPreferenceWithInvalidQuoteAndDelimeterChars() {
125 new CsvPreference.Builder('|', '|', "\n").build();
126 }
127
128
129
130
131 @Test(expected = NullPointerException.class)
132 public void testConstructorWithNullEolSymbols() {
133 new CsvPreference.Builder('"', ',', null).build();
134 }
135
136
137
138
139 @Test(expected = NullPointerException.class)
140 public void testSkipCommentsWithNullCommentMatcher() {
141 new CsvPreference.Builder(EXCEL_PREFERENCE).skipComments(null).build();
142 }
143
144
145
146
147 @Test(expected = NullPointerException.class)
148 public void testUseEncoderWithNull() {
149 new CsvPreference.Builder(EXCEL_PREFERENCE).useEncoder(null).build();
150 }
151
152
153
154
155 @Test(expected = NullPointerException.class)
156 public void testUseQuoteModeWithNull() {
157 new CsvPreference.Builder(EXCEL_PREFERENCE).useQuoteMode(null).build();
158 }
159 }