1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.joda.time;
17
18 import junit.framework.TestCase;
19 import junit.framework.TestSuite;
20
21 import org.joda.time.chrono.GJChronology;
22 import org.joda.time.chrono.ISOChronology;
23 import org.joda.time.chrono.JulianChronology;
24 import org.joda.time.field.FieldUtils;
25 import org.joda.time.field.SkipDateTimeField;
26
27
28
29
30
31
32 public class TestIllegalFieldValueException extends TestCase {
33 public static void main(String[] args) {
34 junit.textui.TestRunner.run(suite());
35 }
36
37 public static TestSuite suite() {
38 return new TestSuite(TestIllegalFieldValueException.class);
39 }
40
41 public TestIllegalFieldValueException(String name) {
42 super(name);
43 }
44
45 public void testVerifyValueBounds() {
46 try {
47 FieldUtils.verifyValueBounds(ISOChronology.getInstance().monthOfYear(), -5, 1, 31);
48 fail();
49 } catch (IllegalFieldValueException e) {
50 assertEquals(DateTimeFieldType.monthOfYear(), e.getDateTimeFieldType());
51 assertEquals(null, e.getDurationFieldType());
52 assertEquals("monthOfYear", e.getFieldName());
53 assertEquals(new Integer(-5), e.getIllegalNumberValue());
54 assertEquals(null, e.getIllegalStringValue());
55 assertEquals("-5", e.getIllegalValueAsString());
56 assertEquals(new Integer(1), e.getLowerBound());
57 assertEquals(new Integer(31), e.getUpperBound());
58 }
59
60 try {
61 FieldUtils.verifyValueBounds(DateTimeFieldType.hourOfDay(), 27, 0, 23);
62 fail();
63 } catch (IllegalFieldValueException e) {
64 assertEquals(DateTimeFieldType.hourOfDay(), e.getDateTimeFieldType());
65 assertEquals(null, e.getDurationFieldType());
66 assertEquals("hourOfDay", e.getFieldName());
67 assertEquals(new Integer(27), e.getIllegalNumberValue());
68 assertEquals(null, e.getIllegalStringValue());
69 assertEquals("27", e.getIllegalValueAsString());
70 assertEquals(new Integer(0), e.getLowerBound());
71 assertEquals(new Integer(23), e.getUpperBound());
72 }
73
74 try {
75 FieldUtils.verifyValueBounds("foo", 1, 2, 3);
76 fail();
77 } catch (IllegalFieldValueException e) {
78 assertEquals(null, e.getDateTimeFieldType());
79 assertEquals(null, e.getDurationFieldType());
80 assertEquals("foo", e.getFieldName());
81 assertEquals(new Integer(1), e.getIllegalNumberValue());
82 assertEquals(null, e.getIllegalStringValue());
83 assertEquals("1", e.getIllegalValueAsString());
84 assertEquals(new Integer(2), e.getLowerBound());
85 assertEquals(new Integer(3), e.getUpperBound());
86 }
87 }
88
89 public void testSkipDateTimeField() {
90 DateTimeField field = new SkipDateTimeField
91 (ISOChronology.getInstanceUTC(), ISOChronology.getInstanceUTC().year(), 1970);
92 try {
93 field.set(0, 1970);
94 fail();
95 } catch (IllegalFieldValueException e) {
96 assertEquals(DateTimeFieldType.year(), e.getDateTimeFieldType());
97 assertEquals(null, e.getDurationFieldType());
98 assertEquals("year", e.getFieldName());
99 assertEquals(new Integer(1970), e.getIllegalNumberValue());
100 assertEquals(null, e.getIllegalStringValue());
101 assertEquals("1970", e.getIllegalValueAsString());
102 assertEquals(null, e.getLowerBound());
103 assertEquals(null, e.getUpperBound());
104 }
105 }
106
107 public void testSetText() {
108 try {
109 ISOChronology.getInstanceUTC().year().set(0, null, java.util.Locale.US);
110 fail();
111 } catch (IllegalFieldValueException e) {
112 assertEquals(DateTimeFieldType.year(), e.getDateTimeFieldType());
113 assertEquals(null, e.getDurationFieldType());
114 assertEquals("year", e.getFieldName());
115 assertEquals(null, e.getIllegalNumberValue());
116 assertEquals(null, e.getIllegalStringValue());
117 assertEquals("null", e.getIllegalValueAsString());
118 assertEquals(null, e.getLowerBound());
119 assertEquals(null, e.getUpperBound());
120 }
121
122 try {
123 ISOChronology.getInstanceUTC().year().set(0, "nineteen seventy", java.util.Locale.US);
124 fail();
125 } catch (IllegalFieldValueException e) {
126 assertEquals(DateTimeFieldType.year(), e.getDateTimeFieldType());
127 assertEquals(null, e.getDurationFieldType());
128 assertEquals("year", e.getFieldName());
129 assertEquals(null, e.getIllegalNumberValue());
130 assertEquals("nineteen seventy", e.getIllegalStringValue());
131 assertEquals("nineteen seventy", e.getIllegalValueAsString());
132 assertEquals(null, e.getLowerBound());
133 assertEquals(null, e.getUpperBound());
134 }
135
136 try {
137 ISOChronology.getInstanceUTC().era().set(0, "long ago", java.util.Locale.US);
138 fail();
139 } catch (IllegalFieldValueException e) {
140 assertEquals(DateTimeFieldType.era(), e.getDateTimeFieldType());
141 assertEquals(null, e.getDurationFieldType());
142 assertEquals("era", e.getFieldName());
143 assertEquals(null, e.getIllegalNumberValue());
144 assertEquals("long ago", e.getIllegalStringValue());
145 assertEquals("long ago", e.getIllegalValueAsString());
146 assertEquals(null, e.getLowerBound());
147 assertEquals(null, e.getUpperBound());
148 }
149
150 try {
151 ISOChronology.getInstanceUTC().monthOfYear().set(0, "spring", java.util.Locale.US);
152 fail();
153 } catch (IllegalFieldValueException e) {
154 assertEquals(DateTimeFieldType.monthOfYear(), e.getDateTimeFieldType());
155 assertEquals(null, e.getDurationFieldType());
156 assertEquals("monthOfYear", e.getFieldName());
157 assertEquals(null, e.getIllegalNumberValue());
158 assertEquals("spring", e.getIllegalStringValue());
159 assertEquals("spring", e.getIllegalValueAsString());
160 assertEquals(null, e.getLowerBound());
161 assertEquals(null, e.getUpperBound());
162 }
163
164 try {
165 ISOChronology.getInstanceUTC().dayOfWeek().set(0, "yesterday", java.util.Locale.US);
166 fail();
167 } catch (IllegalFieldValueException e) {
168 assertEquals(DateTimeFieldType.dayOfWeek(), e.getDateTimeFieldType());
169 assertEquals(null, e.getDurationFieldType());
170 assertEquals("dayOfWeek", e.getFieldName());
171 assertEquals(null, e.getIllegalNumberValue());
172 assertEquals("yesterday", e.getIllegalStringValue());
173 assertEquals("yesterday", e.getIllegalValueAsString());
174 assertEquals(null, e.getLowerBound());
175 assertEquals(null, e.getUpperBound());
176 }
177
178 try {
179 ISOChronology.getInstanceUTC().halfdayOfDay().set(0, "morning", java.util.Locale.US);
180 fail();
181 } catch (IllegalFieldValueException e) {
182 assertEquals(DateTimeFieldType.halfdayOfDay(), e.getDateTimeFieldType());
183 assertEquals(null, e.getDurationFieldType());
184 assertEquals("halfdayOfDay", e.getFieldName());
185 assertEquals(null, e.getIllegalNumberValue());
186 assertEquals("morning", e.getIllegalStringValue());
187 assertEquals("morning", e.getIllegalValueAsString());
188 assertEquals(null, e.getLowerBound());
189 assertEquals(null, e.getUpperBound());
190 }
191 }
192
193 public void testZoneTransition() {
194 DateTime dt = new DateTime
195 (2005, 4, 3, 1, 0, 0, 0, DateTimeZone.forID("America/Los_Angeles"));
196 try {
197 dt.hourOfDay().setCopy(2);
198 fail();
199 } catch (IllegalFieldValueException e) {
200 assertEquals(DateTimeFieldType.hourOfDay(), e.getDateTimeFieldType());
201 assertEquals(null, e.getDurationFieldType());
202 assertEquals("hourOfDay", e.getFieldName());
203 assertEquals(new Integer(2), e.getIllegalNumberValue());
204 assertEquals(null, e.getIllegalStringValue());
205 assertEquals("2", e.getIllegalValueAsString());
206 assertEquals(null, e.getLowerBound());
207 assertEquals(null, e.getUpperBound());
208 }
209 }
210
211 public void testJulianYearZero() {
212 DateTime dt = new DateTime(JulianChronology.getInstanceUTC());
213 try {
214 dt.year().setCopy(0);
215 fail();
216 } catch (IllegalFieldValueException e) {
217 assertEquals(DateTimeFieldType.year(), e.getDateTimeFieldType());
218 assertEquals(null, e.getDurationFieldType());
219 assertEquals("year", e.getFieldName());
220 assertEquals(new Integer(0), e.getIllegalNumberValue());
221 assertEquals(null, e.getIllegalStringValue());
222 assertEquals("0", e.getIllegalValueAsString());
223 assertEquals(null, e.getLowerBound());
224 assertEquals(null, e.getUpperBound());
225 }
226 }
227
228 public void testGJCutover() {
229 DateTime dt = new DateTime("1582-10-04", GJChronology.getInstanceUTC());
230 try {
231 dt.dayOfMonth().setCopy(5);
232 fail();
233 } catch (IllegalFieldValueException e) {
234 assertEquals(DateTimeFieldType.dayOfMonth(), e.getDateTimeFieldType());
235 assertEquals(null, e.getDurationFieldType());
236 assertEquals("dayOfMonth", e.getFieldName());
237 assertEquals(new Integer(5), e.getIllegalNumberValue());
238 assertEquals(null, e.getIllegalStringValue());
239 assertEquals("5", e.getIllegalValueAsString());
240 assertEquals(null, e.getLowerBound());
241 assertEquals(null, e.getUpperBound());
242 }
243
244 dt = new DateTime("1582-10-15", GJChronology.getInstanceUTC());
245 try {
246 dt.dayOfMonth().setCopy(14);
247 fail();
248 } catch (IllegalFieldValueException e) {
249 assertEquals(DateTimeFieldType.dayOfMonth(), e.getDateTimeFieldType());
250 assertEquals(null, e.getDurationFieldType());
251 assertEquals("dayOfMonth", e.getFieldName());
252 assertEquals(new Integer(14), e.getIllegalNumberValue());
253 assertEquals(null, e.getIllegalStringValue());
254 assertEquals("14", e.getIllegalValueAsString());
255 assertEquals(null, e.getLowerBound());
256 assertEquals(null, e.getUpperBound());
257 }
258 }
259
260 public void testReadablePartialValidate() {
261 try {
262 new YearMonthDay(1970, -5, 1);
263 fail();
264 } catch (IllegalFieldValueException e) {
265 assertEquals(DateTimeFieldType.monthOfYear(), e.getDateTimeFieldType());
266 assertEquals(null, e.getDurationFieldType());
267 assertEquals("monthOfYear", e.getFieldName());
268 assertEquals(new Integer(-5), e.getIllegalNumberValue());
269 assertEquals(null, e.getIllegalStringValue());
270 assertEquals("-5", e.getIllegalValueAsString());
271 assertEquals(new Integer(1), e.getLowerBound());
272 assertEquals(null, e.getUpperBound());
273 }
274
275 try {
276 new YearMonthDay(1970, 500, 1);
277 fail();
278 } catch (IllegalFieldValueException e) {
279 assertEquals(DateTimeFieldType.monthOfYear(), e.getDateTimeFieldType());
280 assertEquals(null, e.getDurationFieldType());
281 assertEquals("monthOfYear", e.getFieldName());
282 assertEquals(new Integer(500), e.getIllegalNumberValue());
283 assertEquals(null, e.getIllegalStringValue());
284 assertEquals("500", e.getIllegalValueAsString());
285 assertEquals(null, e.getLowerBound());
286 assertEquals(new Integer(12), e.getUpperBound());
287 }
288
289 try {
290 new YearMonthDay(1970, 2, 30);
291 fail();
292 } catch (IllegalFieldValueException e) {
293 assertEquals(DateTimeFieldType.dayOfMonth(), e.getDateTimeFieldType());
294 assertEquals(null, e.getDurationFieldType());
295 assertEquals("dayOfMonth", e.getFieldName());
296 assertEquals(new Integer(30), e.getIllegalNumberValue());
297 assertEquals(null, e.getIllegalStringValue());
298 assertEquals("30", e.getIllegalValueAsString());
299 assertEquals(null, e.getLowerBound());
300 assertEquals(new Integer(28), e.getUpperBound());
301 }
302 }
303
304
305 public void testOtherConstructors() {
306 IllegalFieldValueException e = new IllegalFieldValueException
307 (DurationFieldType.days(), new Integer(1), new Integer(2), new Integer(3));
308 assertEquals(null, e.getDateTimeFieldType());
309 assertEquals(DurationFieldType.days(), e.getDurationFieldType());
310 assertEquals("days", e.getFieldName());
311 assertEquals(new Integer(1), e.getIllegalNumberValue());
312 assertEquals(null, e.getIllegalStringValue());
313 assertEquals("1", e.getIllegalValueAsString());
314 assertEquals(new Integer(2), e.getLowerBound());
315 assertEquals(new Integer(3), e.getUpperBound());
316
317 e = new IllegalFieldValueException(DurationFieldType.months(), "five");
318 assertEquals(null, e.getDateTimeFieldType());
319 assertEquals(DurationFieldType.months(), e.getDurationFieldType());
320 assertEquals("months", e.getFieldName());
321 assertEquals(null, e.getIllegalNumberValue());
322 assertEquals("five", e.getIllegalStringValue());
323 assertEquals("five", e.getIllegalValueAsString());
324 assertEquals(null, e.getLowerBound());
325 assertEquals(null, e.getUpperBound());
326
327 e = new IllegalFieldValueException("months", "five");
328 assertEquals(null, e.getDateTimeFieldType());
329 assertEquals(null, e.getDurationFieldType());
330 assertEquals("months", e.getFieldName());
331 assertEquals(null, e.getIllegalNumberValue());
332 assertEquals("five", e.getIllegalStringValue());
333 assertEquals("five", e.getIllegalValueAsString());
334 assertEquals(null, e.getLowerBound());
335 assertEquals(null, e.getUpperBound());
336 }
337 }