1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.supercsv.cellprocessor;
17
18 import static org.junit.Assert.assertEquals;
19 import static org.junit.Assert.fail;
20 import static org.supercsv.SuperCsvTestUtils.ANONYMOUS_CSVCONTEXT;
21
22 import java.util.Arrays;
23
24 import org.junit.Before;
25 import org.junit.Test;
26 import org.supercsv.cellprocessor.ift.CellProcessor;
27 import org.supercsv.exception.SuperCsvCellProcessorException;
28 import org.supercsv.mock.IdentityTransform;
29
30
31
32
33
34
35 public class ParseEnumTest {
36
37 public enum TestEnum {
38 NORMAL, lowercase, MixedCase
39 }
40
41 private CellProcessor processor;
42 private CellProcessor processorChain;
43 private CellProcessor ignoreCaseProcessor;
44 private CellProcessor ignoreCaseProcessorChain;
45
46
47
48
49 @Before
50 public void setUp() {
51 processor = new ParseEnum(TestEnum.class);
52 processorChain = new ParseEnum(TestEnum.class, new IdentityTransform());
53 ignoreCaseProcessor = new ParseEnum(TestEnum.class, true);
54 ignoreCaseProcessorChain = new ParseEnum(TestEnum.class, true, new IdentityTransform());
55 }
56
57
58
59
60 @Test
61 public void testNormalEnum() {
62 final String input = "NORMAL";
63 assertEquals(TestEnum.NORMAL, processor.execute(input, ANONYMOUS_CSVCONTEXT));
64 assertEquals(TestEnum.NORMAL, processorChain.execute(input, ANONYMOUS_CSVCONTEXT));
65 assertEquals(TestEnum.NORMAL, ignoreCaseProcessor.execute(input, ANONYMOUS_CSVCONTEXT));
66 assertEquals(TestEnum.NORMAL, ignoreCaseProcessorChain.execute(input, ANONYMOUS_CSVCONTEXT));
67 }
68
69
70
71
72 @Test
73 public void testLowerCaseEnum() {
74 final String input = "lowercase";
75 assertEquals(TestEnum.lowercase, processor.execute(input, ANONYMOUS_CSVCONTEXT));
76 assertEquals(TestEnum.lowercase, processorChain.execute(input, ANONYMOUS_CSVCONTEXT));
77 assertEquals(TestEnum.lowercase, ignoreCaseProcessor.execute(input, ANONYMOUS_CSVCONTEXT));
78 assertEquals(TestEnum.lowercase, ignoreCaseProcessorChain.execute(input, ANONYMOUS_CSVCONTEXT));
79 }
80
81
82
83
84 @Test
85 public void testMixedCaseEnum() {
86 final String input = "MixedCase";
87 assertEquals(TestEnum.MixedCase, processor.execute(input, ANONYMOUS_CSVCONTEXT));
88 assertEquals(TestEnum.MixedCase, processorChain.execute(input, ANONYMOUS_CSVCONTEXT));
89 assertEquals(TestEnum.MixedCase, ignoreCaseProcessor.execute(input, ANONYMOUS_CSVCONTEXT));
90 assertEquals(TestEnum.MixedCase, ignoreCaseProcessorChain.execute(input, ANONYMOUS_CSVCONTEXT));
91 }
92
93
94
95
96 @Test
97 public void testDifferentCaseFailsWhenIgnoreCaseFalse() {
98 final String input = "normal";
99 for( CellProcessor p : Arrays.asList(processor, processorChain) ) {
100 try {
101 p.execute(input, ANONYMOUS_CSVCONTEXT);
102 fail("should have thrown SuperCsvCellProcessorException");
103 }
104 catch(SuperCsvCellProcessorException e) {
105 assertEquals("'normal' could not be parsed as a enum of type " + TestEnum.class.getName(),
106 e.getMessage());
107 }
108 }
109 }
110
111
112
113
114 @Test
115 public void testDifferentCaseParsesWhenIgnoreCaseTrue() {
116 final String input = "normal";
117 for( CellProcessor p : Arrays.asList(ignoreCaseProcessor, ignoreCaseProcessorChain) ) {
118 assertEquals(TestEnum.NORMAL, p.execute(input, ANONYMOUS_CSVCONTEXT));
119 }
120 }
121
122
123
124
125 @Test(expected = SuperCsvCellProcessorException.class)
126 public void testWithNull() {
127 processor.execute(null, ANONYMOUS_CSVCONTEXT);
128 }
129
130
131
132
133 @Test(expected = NullPointerException.class)
134 public void testFirstConstructorsWithNullEnumClass(){
135 new ParseEnum(null);
136 }
137
138
139
140
141 @Test(expected = NullPointerException.class)
142 public void testSecondConstructorsWithNullEnumClass(){
143 new ParseEnum(null, false);
144 }
145
146
147
148
149 @Test(expected = NullPointerException.class)
150 public void testThirdConstructorsWithNullEnumClass(){
151 new ParseEnum(null, new IdentityTransform());
152 }
153
154
155
156
157 @Test(expected = NullPointerException.class)
158 public void testFourthConstructorsWithNullEnumClass(){
159 new ParseEnum(null, false, new IdentityTransform());
160 }
161 }