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.supercsv.SuperCsvTestUtils.ANONYMOUS_CSVCONTEXT;
20
21 import java.text.DecimalFormat;
22
23 import org.junit.Before;
24 import org.junit.Test;
25 import org.supercsv.cellprocessor.ift.CellProcessor;
26 import org.supercsv.exception.SuperCsvCellProcessorException;
27 import org.supercsv.mock.IdentityTransform;
28
29
30
31
32
33
34
35
36
37 public class FmtNumberTest {
38
39 private static final String DECIMAL_FORMAT = "00.00";
40
41
42 private static final String FORMATTED_NUMBER = new DecimalFormat(DECIMAL_FORMAT).format(12.34);
43
44 private CellProcessor processor;
45 private CellProcessor processor2;
46 private CellProcessor processorChain;
47 private CellProcessor processorChain2;
48
49
50
51
52 @Before
53 public void setUp() {
54 processor = new FmtNumber(DECIMAL_FORMAT);
55 processor2 = new FmtNumber(new DecimalFormat(DECIMAL_FORMAT));
56 processorChain = new FmtNumber(DECIMAL_FORMAT, new IdentityTransform());
57 processorChain2 = new FmtNumber(new DecimalFormat(DECIMAL_FORMAT), new IdentityTransform());
58 }
59
60
61
62
63 @Test
64 public void testFormat() {
65 final double number = 12.34;
66 assertEquals(FORMATTED_NUMBER, processor.execute(number, ANONYMOUS_CSVCONTEXT));
67 assertEquals(FORMATTED_NUMBER, processor2.execute(number, ANONYMOUS_CSVCONTEXT));
68 assertEquals(FORMATTED_NUMBER, processorChain.execute(number, ANONYMOUS_CSVCONTEXT));
69 assertEquals(FORMATTED_NUMBER, processorChain2.execute(number, ANONYMOUS_CSVCONTEXT));
70 }
71
72
73
74
75 @Test
76 public void testRoundUp() {
77 final double toRoundUp = 12.339;
78 assertEquals(FORMATTED_NUMBER, processor.execute(toRoundUp, ANONYMOUS_CSVCONTEXT));
79 assertEquals(FORMATTED_NUMBER, processor2.execute(toRoundUp, ANONYMOUS_CSVCONTEXT));
80 assertEquals(FORMATTED_NUMBER, processorChain.execute(toRoundUp, ANONYMOUS_CSVCONTEXT));
81 assertEquals(FORMATTED_NUMBER, processorChain2.execute(toRoundUp, ANONYMOUS_CSVCONTEXT));
82 }
83
84
85
86
87 @Test
88 public void testRoundDown() {
89 final double toRoundDown = 12.341;
90 assertEquals(FORMATTED_NUMBER, processor.execute(toRoundDown, ANONYMOUS_CSVCONTEXT));
91 assertEquals(FORMATTED_NUMBER, processor2.execute(toRoundDown, ANONYMOUS_CSVCONTEXT));
92 assertEquals(FORMATTED_NUMBER, processorChain.execute(toRoundDown, ANONYMOUS_CSVCONTEXT));
93 assertEquals(FORMATTED_NUMBER, processorChain2.execute(toRoundDown, ANONYMOUS_CSVCONTEXT));
94 }
95
96
97
98
99 @Test(expected = SuperCsvCellProcessorException.class)
100 public void testWithNull() {
101 processor.execute(null, ANONYMOUS_CSVCONTEXT);
102 }
103
104
105
106
107 @Test(expected = SuperCsvCellProcessorException.class)
108 public void testWithNonNumber() {
109 processor.execute("abc", ANONYMOUS_CSVCONTEXT);
110 }
111
112
113
114
115 @Test(expected = SuperCsvCellProcessorException.class)
116 public void testWithInvalidNumberFormat() {
117 final double number = 12.34;
118 CellProcessor invalidNumberFormatProcessor = new FmtNumber("%%%");
119 invalidNumberFormatProcessor.execute(number, ANONYMOUS_CSVCONTEXT);
120 }
121
122
123
124
125 @Test(expected = NullPointerException.class)
126 public void testWithNullNumberFormatString() {
127 final double number = 12.34;
128 CellProcessor invalidNumberFormatProcessor = new FmtNumber((String) null);
129 invalidNumberFormatProcessor.execute(number, ANONYMOUS_CSVCONTEXT);
130 }
131
132
133
134
135 @Test(expected = NullPointerException.class)
136 public void testWithNullNumberFormat() {
137 final double number = 12.34;
138 CellProcessor invalidNumberFormatProcessor = new FmtNumber((DecimalFormat) null);
139 invalidNumberFormatProcessor.execute(number, ANONYMOUS_CSVCONTEXT);
140 }
141
142 }