/* * Copyright 2001-2013 Stephen Colebourne * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.joda.time; import junit.framework.TestCase; import junit.framework.TestSuite; import org.joda.time.chrono.GJChronology; import org.joda.time.chrono.ISOChronology; import org.joda.time.chrono.JulianChronology; import org.joda.time.field.FieldUtils; import org.joda.time.field.SkipDateTimeField; /** * Tests IllegalFieldValueException by triggering it from other methods. * * @author Brian S O'Neill */ public class TestIllegalFieldValueException extends TestCase { public static void main(String[] args) { junit.textui.TestRunner.run(suite()); } public static TestSuite suite() { return new TestSuite(TestIllegalFieldValueException.class); } public TestIllegalFieldValueException(String name) { super(name); } public void testVerifyValueBounds() { try { FieldUtils.verifyValueBounds(ISOChronology.getInstance().monthOfYear(), -5, 1, 31); fail(); } catch (IllegalFieldValueException e) { assertEquals(DateTimeFieldType.monthOfYear(), e.getDateTimeFieldType()); assertEquals(null, e.getDurationFieldType()); assertEquals("monthOfYear", e.getFieldName()); assertEquals(new Integer(-5), e.getIllegalNumberValue()); assertEquals(null, e.getIllegalStringValue()); assertEquals("-5", e.getIllegalValueAsString()); assertEquals(new Integer(1), e.getLowerBound()); assertEquals(new Integer(31), e.getUpperBound()); } try { FieldUtils.verifyValueBounds(DateTimeFieldType.hourOfDay(), 27, 0, 23); fail(); } catch (IllegalFieldValueException e) { assertEquals(DateTimeFieldType.hourOfDay(), e.getDateTimeFieldType()); assertEquals(null, e.getDurationFieldType()); assertEquals("hourOfDay", e.getFieldName()); assertEquals(new Integer(27), e.getIllegalNumberValue()); assertEquals(null, e.getIllegalStringValue()); assertEquals("27", e.getIllegalValueAsString()); assertEquals(new Integer(0), e.getLowerBound()); assertEquals(new Integer(23), e.getUpperBound()); } try { FieldUtils.verifyValueBounds("foo", 1, 2, 3); fail(); } catch (IllegalFieldValueException e) { assertEquals(null, e.getDateTimeFieldType()); assertEquals(null, e.getDurationFieldType()); assertEquals("foo", e.getFieldName()); assertEquals(new Integer(1), e.getIllegalNumberValue()); assertEquals(null, e.getIllegalStringValue()); assertEquals("1", e.getIllegalValueAsString()); assertEquals(new Integer(2), e.getLowerBound()); assertEquals(new Integer(3), e.getUpperBound()); } } public void testSkipDateTimeField() { DateTimeField field = new SkipDateTimeField (ISOChronology.getInstanceUTC(), ISOChronology.getInstanceUTC().year(), 1970); try { field.set(0, 1970); fail(); } catch (IllegalFieldValueException e) { assertEquals(DateTimeFieldType.year(), e.getDateTimeFieldType()); assertEquals(null, e.getDurationFieldType()); assertEquals("year", e.getFieldName()); assertEquals(new Integer(1970), e.getIllegalNumberValue()); assertEquals(null, e.getIllegalStringValue()); assertEquals("1970", e.getIllegalValueAsString()); assertEquals(null, e.getLowerBound()); assertEquals(null, e.getUpperBound()); } } public void testSetText() { try { ISOChronology.getInstanceUTC().year().set(0, null, java.util.Locale.US); fail(); } catch (IllegalFieldValueException e) { assertEquals(DateTimeFieldType.year(), e.getDateTimeFieldType()); assertEquals(null, e.getDurationFieldType()); assertEquals("year", e.getFieldName()); assertEquals(null, e.getIllegalNumberValue()); assertEquals(null, e.getIllegalStringValue()); assertEquals("null", e.getIllegalValueAsString()); assertEquals(null, e.getLowerBound()); assertEquals(null, e.getUpperBound()); } try { ISOChronology.getInstanceUTC().year().set(0, "nineteen seventy", java.util.Locale.US); fail(); } catch (IllegalFieldValueException e) { assertEquals(DateTimeFieldType.year(), e.getDateTimeFieldType()); assertEquals(null, e.getDurationFieldType()); assertEquals("year", e.getFieldName()); assertEquals(null, e.getIllegalNumberValue()); assertEquals("nineteen seventy", e.getIllegalStringValue()); assertEquals("nineteen seventy", e.getIllegalValueAsString()); assertEquals(null, e.getLowerBound()); assertEquals(null, e.getUpperBound()); } try { ISOChronology.getInstanceUTC().era().set(0, "long ago", java.util.Locale.US); fail(); } catch (IllegalFieldValueException e) { assertEquals(DateTimeFieldType.era(), e.getDateTimeFieldType()); assertEquals(null, e.getDurationFieldType()); assertEquals("era", e.getFieldName()); assertEquals(null, e.getIllegalNumberValue()); assertEquals("long ago", e.getIllegalStringValue()); assertEquals("long ago", e.getIllegalValueAsString()); assertEquals(null, e.getLowerBound()); assertEquals(null, e.getUpperBound()); } try { ISOChronology.getInstanceUTC().monthOfYear().set(0, "spring", java.util.Locale.US); fail(); } catch (IllegalFieldValueException e) { assertEquals(DateTimeFieldType.monthOfYear(), e.getDateTimeFieldType()); assertEquals(null, e.getDurationFieldType()); assertEquals("monthOfYear", e.getFieldName()); assertEquals(null, e.getIllegalNumberValue()); assertEquals("spring", e.getIllegalStringValue()); assertEquals("spring", e.getIllegalValueAsString()); assertEquals(null, e.getLowerBound()); assertEquals(null, e.getUpperBound()); } try { ISOChronology.getInstanceUTC().dayOfWeek().set(0, "yesterday", java.util.Locale.US); fail(); } catch (IllegalFieldValueException e) { assertEquals(DateTimeFieldType.dayOfWeek(), e.getDateTimeFieldType()); assertEquals(null, e.getDurationFieldType()); assertEquals("dayOfWeek", e.getFieldName()); assertEquals(null, e.getIllegalNumberValue()); assertEquals("yesterday", e.getIllegalStringValue()); assertEquals("yesterday", e.getIllegalValueAsString()); assertEquals(null, e.getLowerBound()); assertEquals(null, e.getUpperBound()); } try { ISOChronology.getInstanceUTC().halfdayOfDay().set(0, "morning", java.util.Locale.US); fail(); } catch (IllegalFieldValueException e) { assertEquals(DateTimeFieldType.halfdayOfDay(), e.getDateTimeFieldType()); assertEquals(null, e.getDurationFieldType()); assertEquals("halfdayOfDay", e.getFieldName()); assertEquals(null, e.getIllegalNumberValue()); assertEquals("morning", e.getIllegalStringValue()); assertEquals("morning", e.getIllegalValueAsString()); assertEquals(null, e.getLowerBound()); assertEquals(null, e.getUpperBound()); } } public void testZoneTransition() { DateTime dt = new DateTime (2005, 4, 3, 1, 0, 0, 0, DateTimeZone.forID("America/Los_Angeles")); try { dt.hourOfDay().setCopy(2); fail(); } catch (IllegalFieldValueException e) { assertEquals(DateTimeFieldType.hourOfDay(), e.getDateTimeFieldType()); assertEquals(null, e.getDurationFieldType()); assertEquals("hourOfDay", e.getFieldName()); assertEquals(new Integer(2), e.getIllegalNumberValue()); assertEquals(null, e.getIllegalStringValue()); assertEquals("2", e.getIllegalValueAsString()); assertEquals(null, e.getLowerBound()); assertEquals(null, e.getUpperBound()); } } public void testJulianYearZero() { DateTime dt = new DateTime(JulianChronology.getInstanceUTC()); try { dt.year().setCopy(0); fail(); } catch (IllegalFieldValueException e) { assertEquals(DateTimeFieldType.year(), e.getDateTimeFieldType()); assertEquals(null, e.getDurationFieldType()); assertEquals("year", e.getFieldName()); assertEquals(new Integer(0), e.getIllegalNumberValue()); assertEquals(null, e.getIllegalStringValue()); assertEquals("0", e.getIllegalValueAsString()); assertEquals(null, e.getLowerBound()); assertEquals(null, e.getUpperBound()); } } public void testGJCutover() { DateTime dt = new DateTime("1582-10-04", GJChronology.getInstanceUTC()); try { dt.dayOfMonth().setCopy(5); fail(); } catch (IllegalFieldValueException e) { assertEquals(DateTimeFieldType.dayOfMonth(), e.getDateTimeFieldType()); assertEquals(null, e.getDurationFieldType()); assertEquals("dayOfMonth", e.getFieldName()); assertEquals(new Integer(5), e.getIllegalNumberValue()); assertEquals(null, e.getIllegalStringValue()); assertEquals("5", e.getIllegalValueAsString()); assertEquals(null, e.getLowerBound()); assertEquals(null, e.getUpperBound()); } dt = new DateTime("1582-10-15", GJChronology.getInstanceUTC()); try { dt.dayOfMonth().setCopy(14); fail(); } catch (IllegalFieldValueException e) { assertEquals(DateTimeFieldType.dayOfMonth(), e.getDateTimeFieldType()); assertEquals(null, e.getDurationFieldType()); assertEquals("dayOfMonth", e.getFieldName()); assertEquals(new Integer(14), e.getIllegalNumberValue()); assertEquals(null, e.getIllegalStringValue()); assertEquals("14", e.getIllegalValueAsString()); assertEquals(null, e.getLowerBound()); assertEquals(null, e.getUpperBound()); } } @SuppressWarnings("deprecation") public void testReadablePartialValidate() { try { new YearMonthDay(1970, -5, 1); fail(); } catch (IllegalFieldValueException e) { assertEquals(DateTimeFieldType.monthOfYear(), e.getDateTimeFieldType()); assertEquals(null, e.getDurationFieldType()); assertEquals("monthOfYear", e.getFieldName()); assertEquals(new Integer(-5), e.getIllegalNumberValue()); assertEquals(null, e.getIllegalStringValue()); assertEquals("-5", e.getIllegalValueAsString()); assertEquals(new Integer(1), e.getLowerBound()); assertEquals(null, e.getUpperBound()); } try { new YearMonthDay(1970, 500, 1); fail(); } catch (IllegalFieldValueException e) { assertEquals(DateTimeFieldType.monthOfYear(), e.getDateTimeFieldType()); assertEquals(null, e.getDurationFieldType()); assertEquals("monthOfYear", e.getFieldName()); assertEquals(new Integer(500), e.getIllegalNumberValue()); assertEquals(null, e.getIllegalStringValue()); assertEquals("500", e.getIllegalValueAsString()); assertEquals(null, e.getLowerBound()); assertEquals(new Integer(12), e.getUpperBound()); } try { new YearMonthDay(1970, 2, 30); fail(); } catch (IllegalFieldValueException e) { assertEquals(DateTimeFieldType.dayOfMonth(), e.getDateTimeFieldType()); assertEquals(null, e.getDurationFieldType()); assertEquals("dayOfMonth", e.getFieldName()); assertEquals(new Integer(30), e.getIllegalNumberValue()); assertEquals(null, e.getIllegalStringValue()); assertEquals("30", e.getIllegalValueAsString()); assertEquals(null, e.getLowerBound()); assertEquals(new Integer(28), e.getUpperBound()); } } // Test extra constructors not currently called by anything public void testOtherConstructors() { IllegalFieldValueException e = new IllegalFieldValueException (DurationFieldType.days(), new Integer(1), new Integer(2), new Integer(3)); assertEquals(null, e.getDateTimeFieldType()); assertEquals(DurationFieldType.days(), e.getDurationFieldType()); assertEquals("days", e.getFieldName()); assertEquals(new Integer(1), e.getIllegalNumberValue()); assertEquals(null, e.getIllegalStringValue()); assertEquals("1", e.getIllegalValueAsString()); assertEquals(new Integer(2), e.getLowerBound()); assertEquals(new Integer(3), e.getUpperBound()); e = new IllegalFieldValueException(DurationFieldType.months(), "five"); assertEquals(null, e.getDateTimeFieldType()); assertEquals(DurationFieldType.months(), e.getDurationFieldType()); assertEquals("months", e.getFieldName()); assertEquals(null, e.getIllegalNumberValue()); assertEquals("five", e.getIllegalStringValue()); assertEquals("five", e.getIllegalValueAsString()); assertEquals(null, e.getLowerBound()); assertEquals(null, e.getUpperBound()); e = new IllegalFieldValueException("months", "five"); assertEquals(null, e.getDateTimeFieldType()); assertEquals(null, e.getDurationFieldType()); assertEquals("months", e.getFieldName()); assertEquals(null, e.getIllegalNumberValue()); assertEquals("five", e.getIllegalStringValue()); assertEquals("five", e.getIllegalValueAsString()); assertEquals(null, e.getLowerBound()); assertEquals(null, e.getUpperBound()); } }