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.Test;
21 import org.supercsv.prefs.CsvPreference;
22 import org.supercsv.util.CsvContext;
23
24
25
26
27
28
29 public class SelectiveCsvEncoderTest {
30
31 private static final String UNESCAPED = "\"Escape!\", he yelled.";
32
33 private static final String ESCAPED = "\"\"\"Escape!\"\", he yelled.\"";
34
35
36
37
38 @Test
39 public void testEncodeWithIntArray() {
40 final SelectiveCsvEncoder encoder = new SelectiveCsvEncoder(2, 3);
41 testEncode(encoder);
42 }
43
44
45
46
47 @Test
48 public void testEncodeWithBoolArray() {
49 final SelectiveCsvEncoder encoder = new SelectiveCsvEncoder(new boolean[]{false, true, true, false});
50 testEncode(encoder);
51 }
52
53
54
55
56
57
58
59 private void testEncode(final CsvEncoder encoder) {
60 final CsvContext context = new CsvContext(1, 1, 1);
61 assertEquals(UNESCAPED, encoder.encode(UNESCAPED, context, CsvPreference.STANDARD_PREFERENCE));
62 context.setColumnNumber(2);
63 assertEquals(ESCAPED, encoder.encode(UNESCAPED, context, CsvPreference.STANDARD_PREFERENCE));
64 context.setColumnNumber(3);
65 assertEquals(ESCAPED, encoder.encode(UNESCAPED, context, CsvPreference.STANDARD_PREFERENCE));
66 context.setColumnNumber(4);
67 assertEquals(UNESCAPED, encoder.encode(UNESCAPED, context, CsvPreference.STANDARD_PREFERENCE));
68 }
69
70
71
72
73 @Test
74 public void testEncodeWithNoColumnNumbers() {
75 final SelectiveCsvEncoder encoder = new SelectiveCsvEncoder();
76 final CsvContext context = new CsvContext(1, 1, 1);
77 assertEquals(UNESCAPED, encoder.encode(UNESCAPED, context, CsvPreference.STANDARD_PREFERENCE));
78 }
79
80
81
82
83 @Test(expected = NullPointerException.class)
84 public void testIntArrayConstructorWithNull() {
85 new SelectiveCsvEncoder((int[]) null);
86 }
87
88
89
90
91 @Test(expected = NullPointerException.class)
92 public void testBoolArrayConstructorWithNull() {
93 new SelectiveCsvEncoder((boolean[]) null);
94 }
95
96 }