1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.supercsv.cellprocessor.joda;
17
18 import static org.junit.Assert.assertEquals;
19 import static org.junit.Assert.fail;
20 import static org.supercsv.cellprocessor.joda.SuperCsvTestUtils.ANONYMOUS_CSVCONTEXT;
21
22 import java.util.Arrays;
23 import java.util.List;
24
25 import org.joda.time.DateTimeZone;
26 import org.junit.Before;
27 import org.junit.Test;
28 import org.supercsv.cellprocessor.ift.CellProcessor;
29 import org.supercsv.cellprocessor.joda.mock.IdentityTransform;
30 import org.supercsv.exception.SuperCsvCellProcessorException;
31
32
33
34
35 public class ParseDateTimeZoneTest {
36
37 private static final String TIME_ZONE_STRING = "Australia/Brisbane";
38 private static final DateTimeZone DATE_TIME_ZONE = DateTimeZone.forID("Australia/Brisbane");
39
40 private ParseDateTimeZone processor1;
41 private ParseDateTimeZone processorChain1;
42 private List<ParseDateTimeZone> processors;
43
44 @Before
45 public void setUp() {
46 processor1 = new ParseDateTimeZone();
47 processorChain1 = new ParseDateTimeZone(new IdentityTransform());
48 processors = Arrays.asList(processor1, processorChain1);
49 }
50
51 @Test
52 public void testValidDateTimeZone() {
53 for (CellProcessor p : processors) {
54 assertEquals(DATE_TIME_ZONE,
55 p.execute(TIME_ZONE_STRING, ANONYMOUS_CSVCONTEXT));
56 }
57 }
58
59 @Test
60 public void testNullInput() {
61 for (CellProcessor p : processors) {
62 try {
63 p.execute(null, ANONYMOUS_CSVCONTEXT);
64 fail("expecting SuperCsvCellProcessorException");
65 } catch (SuperCsvCellProcessorException e) {
66 assertEquals(
67 "this processor does not accept null input - "
68 + "if the column is optional then chain an Optional() processor before this one",
69 e.getMessage());
70 }
71 }
72 }
73
74 @Test
75 public void testNonStringInput() {
76 for (CellProcessor p : processors) {
77 try {
78 p.execute(123, ANONYMOUS_CSVCONTEXT);
79 fail("expecting SuperCsvCellProcessorException");
80 } catch (SuperCsvCellProcessorException e) {
81 assertEquals(
82 "the input value should be of type java.lang.String but is java.lang.Integer",
83 e.getMessage());
84 }
85 }
86 }
87
88 @Test
89 public void testUnparsableString() {
90 for (CellProcessor p : processors) {
91 try {
92 p.execute("not valid", ANONYMOUS_CSVCONTEXT);
93 fail("expecting SuperCsvCellProcessorException");
94 } catch (SuperCsvCellProcessorException e) {
95 assertEquals("Failed to parse value as a DateTimeZone",
96 e.getMessage());
97 }
98 }
99 }
100
101 @Test(expected = NullPointerException.class)
102 public void testConstructor2WithNullNext() {
103 new ParseDateTimeZone((CellProcessor) null);
104 }
105
106 }