blob: 1abbc70d76de5582426cf92343371a96857e6edc [file] [log] [blame]
/*
* 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 java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Arrays;
import java.util.Locale;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.joda.time.chrono.BuddhistChronology;
import org.joda.time.chrono.CopticChronology;
import org.joda.time.chrono.ISOChronology;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
/**
* This class is a Junit unit test for Partial.
*
* @author Stephen Colebourne
*/
public class TestPartial_Basics extends TestCase {
private static final DateTimeZone PARIS = DateTimeZone.forID("Europe/Paris");
private static final DateTimeZone LONDON = DateTimeZone.forID("Europe/London");
private static final DateTimeZone TOKYO = DateTimeZone.forID("Asia/Tokyo");
private static final Chronology COPTIC_PARIS = CopticChronology.getInstance(PARIS);
private static final Chronology COPTIC_TOKYO = CopticChronology.getInstance(TOKYO);
private static final Chronology COPTIC_UTC = CopticChronology.getInstanceUTC();
private static final Chronology ISO_UTC = ISOChronology.getInstanceUTC();
private static final Chronology BUDDHIST_LONDON = BuddhistChronology.getInstance(LONDON);
private static final Chronology BUDDHIST_TOKYO = BuddhistChronology.getInstance(TOKYO);
private static final Chronology BUDDHIST_UTC = BuddhistChronology.getInstanceUTC();
private long TEST_TIME_NOW =
10L * DateTimeConstants.MILLIS_PER_HOUR
+ 20L * DateTimeConstants.MILLIS_PER_MINUTE
+ 30L * DateTimeConstants.MILLIS_PER_SECOND
+ 40L;
private long TEST_TIME2 =
1L * DateTimeConstants.MILLIS_PER_DAY
+ 5L * DateTimeConstants.MILLIS_PER_HOUR
+ 6L * DateTimeConstants.MILLIS_PER_MINUTE
+ 7L * DateTimeConstants.MILLIS_PER_SECOND
+ 8L;
private DateTimeZone zone = null;
public static void main(String[] args) {
junit.textui.TestRunner.run(suite());
}
public static TestSuite suite() {
return new TestSuite(TestPartial_Basics.class);
}
public TestPartial_Basics(String name) {
super(name);
}
protected void setUp() throws Exception {
DateTimeUtils.setCurrentMillisFixed(TEST_TIME_NOW);
zone = DateTimeZone.getDefault();
DateTimeZone.setDefault(LONDON);
}
protected void tearDown() throws Exception {
DateTimeUtils.setCurrentMillisSystem();
DateTimeZone.setDefault(zone);
zone = null;
}
//-----------------------------------------------------------------------
public void testGet() {
Partial test = createHourMinPartial();
assertEquals(10, test.get(DateTimeFieldType.hourOfDay()));
assertEquals(20, test.get(DateTimeFieldType.minuteOfHour()));
try {
test.get(null);
fail();
} catch (IllegalArgumentException ex) {}
try {
test.get(DateTimeFieldType.secondOfMinute());
fail();
} catch (IllegalArgumentException ex) {}
}
public void testSize() {
Partial test = createHourMinPartial();
assertEquals(2, test.size());
}
public void testGetFieldType() {
Partial test = createHourMinPartial();
assertSame(DateTimeFieldType.hourOfDay(), test.getFieldType(0));
assertSame(DateTimeFieldType.minuteOfHour(), test.getFieldType(1));
try {
test.getFieldType(-1);
} catch (IndexOutOfBoundsException ex) {}
try {
test.getFieldType(2);
} catch (IndexOutOfBoundsException ex) {}
}
public void testGetFieldTypes() {
Partial test = createHourMinPartial();
DateTimeFieldType[] fields = test.getFieldTypes();
assertEquals(2, fields.length);
assertSame(DateTimeFieldType.hourOfDay(), fields[0]);
assertSame(DateTimeFieldType.minuteOfHour(), fields[1]);
assertNotSame(test.getFieldTypes(), test.getFieldTypes());
}
public void testGetField() {
Partial test = createHourMinPartial(COPTIC_PARIS);
assertSame(CopticChronology.getInstanceUTC().hourOfDay(), test.getField(0));
assertSame(CopticChronology.getInstanceUTC().minuteOfHour(), test.getField(1));
try {
test.getField(-1);
} catch (IndexOutOfBoundsException ex) {}
try {
test.getField(5);
} catch (IndexOutOfBoundsException ex) {}
}
public void testGetFields() {
Partial test = createHourMinPartial(COPTIC_PARIS);
DateTimeField[] fields = test.getFields();
assertEquals(2, fields.length);
assertSame(CopticChronology.getInstanceUTC().hourOfDay(), fields[0]);
assertSame(CopticChronology.getInstanceUTC().minuteOfHour(), fields[1]);
assertNotSame(test.getFields(), test.getFields());
}
public void testGetValue() {
Partial test = createHourMinPartial(COPTIC_PARIS);
assertEquals(10, test.getValue(0));
assertEquals(20, test.getValue(1));
try {
test.getValue(-1);
} catch (IndexOutOfBoundsException ex) {}
try {
test.getValue(2);
} catch (IndexOutOfBoundsException ex) {}
}
public void testGetValues() {
Partial test = createHourMinPartial(COPTIC_PARIS);
int[] values = test.getValues();
assertEquals(2, values.length);
assertEquals(10, values[0]);
assertEquals(20, values[1]);
assertNotSame(test.getValues(), test.getValues());
}
public void testIsSupported() {
Partial test = createHourMinPartial(COPTIC_PARIS);
assertEquals(true, test.isSupported(DateTimeFieldType.hourOfDay()));
assertEquals(true, test.isSupported(DateTimeFieldType.minuteOfHour()));
assertEquals(false, test.isSupported(DateTimeFieldType.secondOfMinute()));
assertEquals(false, test.isSupported(DateTimeFieldType.millisOfSecond()));
assertEquals(false, test.isSupported(DateTimeFieldType.dayOfMonth()));
}
@SuppressWarnings("deprecation")
public void testEqualsHashCode() {
Partial test1 = createHourMinPartial(COPTIC_PARIS);
Partial test2 = createHourMinPartial(COPTIC_PARIS);
assertEquals(true, test1.equals(test2));
assertEquals(true, test2.equals(test1));
assertEquals(true, test1.equals(test1));
assertEquals(true, test2.equals(test2));
assertEquals(true, test1.hashCode() == test2.hashCode());
assertEquals(true, test1.hashCode() == test1.hashCode());
assertEquals(true, test2.hashCode() == test2.hashCode());
Partial test3 = createHourMinPartial2(COPTIC_PARIS);
assertEquals(false, test1.equals(test3));
assertEquals(false, test2.equals(test3));
assertEquals(false, test3.equals(test1));
assertEquals(false, test3.equals(test2));
assertEquals(false, test1.hashCode() == test3.hashCode());
assertEquals(false, test2.hashCode() == test3.hashCode());
assertEquals(false, test1.equals("Hello"));
assertEquals(false, test1.equals(MockPartial.EMPTY_INSTANCE));
assertEquals(new TimeOfDay(10, 20, 30, 40), createTODPartial(ISO_UTC));
}
//-----------------------------------------------------------------------
@SuppressWarnings("deprecation")
public void testCompareTo() {
Partial test1 = createHourMinPartial();
Partial test1a = createHourMinPartial();
assertEquals(0, test1.compareTo(test1a));
assertEquals(0, test1a.compareTo(test1));
assertEquals(0, test1.compareTo(test1));
assertEquals(0, test1a.compareTo(test1a));
Partial test2 = createHourMinPartial2(ISO_UTC);
assertEquals(-1, test1.compareTo(test2));
assertEquals(+1, test2.compareTo(test1));
Partial test3 = createHourMinPartial2(COPTIC_UTC);
assertEquals(-1, test1.compareTo(test3));
assertEquals(+1, test3.compareTo(test1));
assertEquals(0, test3.compareTo(test2));
assertEquals(0, new TimeOfDay(10, 20, 30, 40).compareTo(createTODPartial(ISO_UTC)));
try {
test1.compareTo(null);
fail();
} catch (NullPointerException ex) {}
// try {
// test1.compareTo(new Date());
// fail();
// } catch (ClassCastException ex) {}
try {
test1.compareTo(new YearMonthDay());
fail();
} catch (ClassCastException ex) {}
try {
createTODPartial(ISO_UTC).without(DateTimeFieldType.hourOfDay()).compareTo(new YearMonthDay());
fail();
} catch (ClassCastException ex) {}
}
//-----------------------------------------------------------------------
public void testIsEqual_TOD() {
Partial test1 = createHourMinPartial();
Partial test1a = createHourMinPartial();
assertEquals(true, test1.isEqual(test1a));
assertEquals(true, test1a.isEqual(test1));
assertEquals(true, test1.isEqual(test1));
assertEquals(true, test1a.isEqual(test1a));
Partial test2 = createHourMinPartial2(ISO_UTC);
assertEquals(false, test1.isEqual(test2));
assertEquals(false, test2.isEqual(test1));
Partial test3 = createHourMinPartial2(COPTIC_UTC);
assertEquals(false, test1.isEqual(test3));
assertEquals(false, test3.isEqual(test1));
assertEquals(true, test3.isEqual(test2));
try {
createHourMinPartial().isEqual(null);
fail();
} catch (IllegalArgumentException ex) {}
}
//-----------------------------------------------------------------------
public void testIsBefore_TOD() {
Partial test1 = createHourMinPartial();
Partial test1a = createHourMinPartial();
assertEquals(false, test1.isBefore(test1a));
assertEquals(false, test1a.isBefore(test1));
assertEquals(false, test1.isBefore(test1));
assertEquals(false, test1a.isBefore(test1a));
Partial test2 = createHourMinPartial2(ISO_UTC);
assertEquals(true, test1.isBefore(test2));
assertEquals(false, test2.isBefore(test1));
Partial test3 = createHourMinPartial2(COPTIC_UTC);
assertEquals(true, test1.isBefore(test3));
assertEquals(false, test3.isBefore(test1));
assertEquals(false, test3.isBefore(test2));
try {
createHourMinPartial().isBefore(null);
fail();
} catch (IllegalArgumentException ex) {}
}
//-----------------------------------------------------------------------
public void testIsAfter_TOD() {
Partial test1 = createHourMinPartial();
Partial test1a = createHourMinPartial();
assertEquals(false, test1.isAfter(test1a));
assertEquals(false, test1a.isAfter(test1));
assertEquals(false, test1.isAfter(test1));
assertEquals(false, test1a.isAfter(test1a));
Partial test2 = createHourMinPartial2(ISO_UTC);
assertEquals(false, test1.isAfter(test2));
assertEquals(true, test2.isAfter(test1));
Partial test3 = createHourMinPartial2(COPTIC_UTC);
assertEquals(false, test1.isAfter(test3));
assertEquals(true, test3.isAfter(test1));
assertEquals(false, test3.isAfter(test2));
try {
createHourMinPartial().isAfter(null);
fail();
} catch (IllegalArgumentException ex) {}
}
//-----------------------------------------------------------------------
public void testWithChronologyRetainFields_Chrono() {
Partial base = createHourMinPartial(COPTIC_PARIS);
Partial test = base.withChronologyRetainFields(BUDDHIST_TOKYO);
check(base, 10, 20);
assertEquals(COPTIC_UTC, base.getChronology());
check(test, 10, 20);
assertEquals(BUDDHIST_UTC, test.getChronology());
}
public void testWithChronologyRetainFields_sameChrono() {
Partial base = createHourMinPartial(COPTIC_PARIS);
Partial test = base.withChronologyRetainFields(COPTIC_TOKYO);
assertSame(base, test);
}
public void testWithChronologyRetainFields_nullChrono() {
Partial base = createHourMinPartial(COPTIC_PARIS);
Partial test = base.withChronologyRetainFields(null);
check(base, 10, 20);
assertEquals(COPTIC_UTC, base.getChronology());
check(test, 10, 20);
assertEquals(ISO_UTC, test.getChronology());
}
//-----------------------------------------------------------------------
public void testWith1() {
Partial test = createHourMinPartial();
Partial result = test.with(DateTimeFieldType.hourOfDay(), 15);
check(test, 10, 20);
check(result, 15, 20);
}
public void testWith2() {
Partial test = createHourMinPartial();
try {
test.with(null, 6);
fail();
} catch (IllegalArgumentException ex) {}
check(test, 10, 20);
}
public void testWith3a() {
Partial test = createHourMinPartial();
Partial result = test.with(DateTimeFieldType.secondOfMinute(), 15);
check(test, 10, 20);
assertEquals(3, result.size());
assertEquals(true, result.isSupported(DateTimeFieldType.hourOfDay()));
assertEquals(true, result.isSupported(DateTimeFieldType.minuteOfHour()));
assertEquals(true, result.isSupported(DateTimeFieldType.secondOfMinute()));
assertEquals(DateTimeFieldType.hourOfDay(), result.getFieldType(0));
assertEquals(DateTimeFieldType.minuteOfHour(), result.getFieldType(1));
assertEquals(DateTimeFieldType.secondOfMinute(), result.getFieldType(2));
assertEquals(10, result.get(DateTimeFieldType.hourOfDay()));
assertEquals(20, result.get(DateTimeFieldType.minuteOfHour()));
assertEquals(15, result.get(DateTimeFieldType.secondOfMinute()));
}
public void testWith3b() {
Partial test = createHourMinPartial();
Partial result = test.with(DateTimeFieldType.minuteOfDay(), 15);
check(test, 10, 20);
assertEquals(3, result.size());
assertEquals(true, result.isSupported(DateTimeFieldType.hourOfDay()));
assertEquals(true, result.isSupported(DateTimeFieldType.minuteOfDay()));
assertEquals(true, result.isSupported(DateTimeFieldType.minuteOfHour()));
assertEquals(DateTimeFieldType.hourOfDay(), result.getFieldType(0));
assertEquals(DateTimeFieldType.minuteOfDay(), result.getFieldType(1));
assertEquals(DateTimeFieldType.minuteOfHour(), result.getFieldType(2));
assertEquals(10, result.get(DateTimeFieldType.hourOfDay()));
assertEquals(20, result.get(DateTimeFieldType.minuteOfHour()));
assertEquals(15, result.get(DateTimeFieldType.minuteOfDay()));
}
public void testWith3c() {
Partial test = createHourMinPartial();
Partial result = test.with(DateTimeFieldType.dayOfMonth(), 15);
check(test, 10, 20);
assertEquals(3, result.size());
assertEquals(true, result.isSupported(DateTimeFieldType.dayOfMonth()));
assertEquals(true, result.isSupported(DateTimeFieldType.hourOfDay()));
assertEquals(true, result.isSupported(DateTimeFieldType.minuteOfHour()));
assertEquals(DateTimeFieldType.dayOfMonth(), result.getFieldType(0));
assertEquals(DateTimeFieldType.hourOfDay(), result.getFieldType(1));
assertEquals(DateTimeFieldType.minuteOfHour(), result.getFieldType(2));
assertEquals(10, result.get(DateTimeFieldType.hourOfDay()));
assertEquals(20, result.get(DateTimeFieldType.minuteOfHour()));
assertEquals(15, result.get(DateTimeFieldType.dayOfMonth()));
}
public void testWith3d() {
Partial test = new Partial(DateTimeFieldType.year(), 2005);
Partial result = test.with(DateTimeFieldType.monthOfYear(), 6);
assertEquals(2, result.size());
assertEquals(2005, result.get(DateTimeFieldType.year()));
assertEquals(6, result.get(DateTimeFieldType.monthOfYear()));
}
public void testWith3e() {
Partial test = new Partial(DateTimeFieldType.era(), 1);
Partial result = test.with(DateTimeFieldType.halfdayOfDay(), 0);
assertEquals(2, result.size());
assertEquals(1, result.get(DateTimeFieldType.era()));
assertEquals(0, result.get(DateTimeFieldType.halfdayOfDay()));
assertEquals(0, result.indexOf(DateTimeFieldType.era()));
assertEquals(1, result.indexOf(DateTimeFieldType.halfdayOfDay()));
}
public void testWith3f() {
Partial test = new Partial(DateTimeFieldType.halfdayOfDay(), 0);
Partial result = test.with(DateTimeFieldType.era(), 1);
assertEquals(2, result.size());
assertEquals(1, result.get(DateTimeFieldType.era()));
assertEquals(0, result.get(DateTimeFieldType.halfdayOfDay()));
assertEquals(0, result.indexOf(DateTimeFieldType.era()));
assertEquals(1, result.indexOf(DateTimeFieldType.halfdayOfDay()));
}
public void testWith4() {
Partial test = createHourMinPartial();
Partial result = test.with(DateTimeFieldType.hourOfDay(), 10);
assertSame(test, result);
}
//-----------------------------------------------------------------------
public void testWithout1() {
Partial test = createHourMinPartial();
Partial result = test.without(DateTimeFieldType.year());
check(test, 10, 20);
check(result, 10, 20);
}
public void testWithout2() {
Partial test = createHourMinPartial();
Partial result = test.without((DateTimeFieldType) null);
check(test, 10, 20);
check(result, 10, 20);
}
public void testWithout3() {
Partial test = createHourMinPartial();
Partial result = test.without(DateTimeFieldType.hourOfDay());
check(test, 10, 20);
assertEquals(1, result.size());
assertEquals(false, result.isSupported(DateTimeFieldType.hourOfDay()));
assertEquals(true, result.isSupported(DateTimeFieldType.minuteOfHour()));
assertEquals(DateTimeFieldType.minuteOfHour(), result.getFieldType(0));
}
public void testWithout4() {
Partial test = createHourMinPartial();
Partial result = test.without(DateTimeFieldType.minuteOfHour());
check(test, 10, 20);
assertEquals(1, result.size());
assertEquals(true, result.isSupported(DateTimeFieldType.hourOfDay()));
assertEquals(false, result.isSupported(DateTimeFieldType.minuteOfHour()));
assertEquals(DateTimeFieldType.hourOfDay(), result.getFieldType(0));
}
public void testWithout5() {
Partial test = new Partial(DateTimeFieldType.hourOfDay(), 12);
Partial result = test.without(DateTimeFieldType.hourOfDay());
assertEquals(0, result.size());
assertEquals(false, result.isSupported(DateTimeFieldType.hourOfDay()));
}
//-----------------------------------------------------------------------
public void testWithField1() {
Partial test = createHourMinPartial();
Partial result = test.withField(DateTimeFieldType.hourOfDay(), 15);
check(test, 10, 20);
check(result, 15, 20);
}
public void testWithField2() {
Partial test = createHourMinPartial();
try {
test.withField(null, 6);
fail();
} catch (IllegalArgumentException ex) {}
check(test, 10, 20);
}
public void testWithField3() {
Partial test = createHourMinPartial();
try {
test.withField(DateTimeFieldType.dayOfMonth(), 6);
fail();
} catch (IllegalArgumentException ex) {}
check(test, 10, 20);
}
public void testWithField4() {
Partial test = createHourMinPartial();
Partial result = test.withField(DateTimeFieldType.hourOfDay(), 10);
assertSame(test, result);
}
//-----------------------------------------------------------------------
public void testWithFieldAdded1() {
Partial test = createHourMinPartial();
Partial result = test.withFieldAdded(DurationFieldType.hours(), 6);
assertEquals(createHourMinPartial(), test);
check(test, 10, 20);
check(result, 16, 20);
}
public void testWithFieldAdded2() {
Partial test = createHourMinPartial();
try {
test.withFieldAdded(null, 0);
fail();
} catch (IllegalArgumentException ex) {}
check(test, 10, 20);
}
public void testWithFieldAdded3() {
Partial test = createHourMinPartial();
try {
test.withFieldAdded(null, 6);
fail();
} catch (IllegalArgumentException ex) {}
check(test, 10, 20);
}
public void testWithFieldAdded4() {
Partial test = createHourMinPartial();
Partial result = test.withFieldAdded(DurationFieldType.hours(), 0);
assertSame(test, result);
}
public void testWithFieldAdded5() {
Partial test = createHourMinPartial();
try {
test.withFieldAdded(DurationFieldType.days(), 6);
fail();
} catch (IllegalArgumentException ex) {}
check(test, 10, 20);
}
public void testWithFieldAdded6() {
Partial test = createHourMinPartial();
try {
test.withFieldAdded(DurationFieldType.hours(), 16);
fail();
} catch (IllegalArgumentException ex) {
// expected
}
check(test, 10, 20);
}
public void testWithFieldAdded7() {
Partial test = createHourMinPartial(23, 59, ISO_UTC);
try {
test.withFieldAdded(DurationFieldType.minutes(), 1);
fail();
} catch (IllegalArgumentException ex) {
// expected
}
check(test, 23, 59);
test = createHourMinPartial(23, 59, ISO_UTC);
try {
test.withFieldAdded(DurationFieldType.hours(), 1);
fail();
} catch (IllegalArgumentException ex) {
// expected
}
check(test, 23, 59);
}
public void testWithFieldAdded8() {
Partial test = createHourMinPartial(0, 0, ISO_UTC);
try {
test.withFieldAdded(DurationFieldType.minutes(), -1);
fail();
} catch (IllegalArgumentException ex) {
// expected
}
check(test, 0, 0);
test = createHourMinPartial(0, 0, ISO_UTC);
try {
test.withFieldAdded(DurationFieldType.hours(), -1);
fail();
} catch (IllegalArgumentException ex) {
// expected
}
check(test, 0, 0);
}
//-----------------------------------------------------------------------
public void testWithFieldAddWrapped1() {
Partial test = createHourMinPartial();
Partial result = test.withFieldAddWrapped(DurationFieldType.hours(), 6);
assertEquals(createHourMinPartial(), test);
check(test, 10, 20);
check(result, 16, 20);
}
public void testWithFieldAddWrapped2() {
Partial test = createHourMinPartial();
try {
test.withFieldAddWrapped(null, 0);
fail();
} catch (IllegalArgumentException ex) {}
check(test, 10, 20);
}
public void testWithFieldAddWrapped3() {
Partial test = createHourMinPartial();
try {
test.withFieldAddWrapped(null, 6);
fail();
} catch (IllegalArgumentException ex) {}
check(test, 10, 20);
}
public void testWithFieldAddWrapped4() {
Partial test = createHourMinPartial();
Partial result = test.withFieldAddWrapped(DurationFieldType.hours(), 0);
assertSame(test, result);
}
public void testWithFieldAddWrapped5() {
Partial test = createHourMinPartial();
try {
test.withFieldAddWrapped(DurationFieldType.days(), 6);
fail();
} catch (IllegalArgumentException ex) {}
check(test, 10, 20);
}
public void testWithFieldAddWrapped6() {
Partial test = createHourMinPartial();
Partial result = test.withFieldAddWrapped(DurationFieldType.hours(), 16);
assertEquals(createHourMinPartial(), test);
check(test, 10, 20);
check(result, 2, 20);
}
public void testWithFieldAddWrapped7() {
Partial test = createHourMinPartial(23, 59, ISO_UTC);
Partial result = test.withFieldAddWrapped(DurationFieldType.minutes(), 1);
check(test, 23, 59);
check(result, 0, 0);
test = createHourMinPartial(23, 59, ISO_UTC);
result = test.withFieldAddWrapped(DurationFieldType.hours(), 1);
check(test, 23, 59);
check(result, 0, 59);
}
public void testWithFieldAddWrapped8() {
Partial test = createHourMinPartial(0, 0, ISO_UTC);
Partial result = test.withFieldAddWrapped(DurationFieldType.minutes(), -1);
check(test, 0, 0);
check(result, 23, 59);
test = createHourMinPartial(0, 0, ISO_UTC);
result = test.withFieldAddWrapped(DurationFieldType.hours(), -1);
check(test, 0, 0);
check(result, 23, 0);
}
//-----------------------------------------------------------------------
public void testPlus_RP() {
Partial test = createHourMinPartial(BUDDHIST_LONDON);
Partial result = test.plus(new Period(1, 2, 3, 4, 5, 6, 7, 8));
check(test, 10, 20);
check(result, 15, 26);
result = test.plus((ReadablePeriod) null);
assertSame(test, result);
}
//-----------------------------------------------------------------------
public void testMinus_RP() {
Partial test = createHourMinPartial(BUDDHIST_LONDON);
Partial result = test.minus(new Period(1, 1, 1, 1, 1, 1, 1, 1));
check(test, 10, 20);
check(result, 9, 19);
result = test.minus((ReadablePeriod) null);
assertSame(test, result);
}
//-----------------------------------------------------------------------
public void testToDateTime_RI() {
Partial base = createHourMinPartial(COPTIC_PARIS);
DateTime dt = new DateTime(0L); // LONDON zone
assertEquals("1970-01-01T01:00:00.000+01:00", dt.toString());
DateTime test = base.toDateTime(dt);
check(base, 10, 20);
assertEquals("1970-01-01T01:00:00.000+01:00", dt.toString());
assertEquals("1970-01-01T10:20:00.000+01:00", test.toString());
}
public void testToDateTime_nullRI() {
Partial base = createHourMinPartial(1, 2, ISO_UTC);
DateTimeUtils.setCurrentMillisFixed(TEST_TIME2);
DateTime test = base.toDateTime((ReadableInstant) null);
check(base, 1, 2);
assertEquals("1970-01-02T01:02:07.008+01:00", test.toString());
}
//-----------------------------------------------------------------------
public void testProperty() {
Partial test = createHourMinPartial();
assertNotNull(test.property(DateTimeFieldType.hourOfDay()));
assertNotNull(test.property(DateTimeFieldType.minuteOfHour()));
try {
test.property(DateTimeFieldType.secondOfDay());
fail();
} catch (IllegalArgumentException ex) {}
try {
test.property(null);
fail();
} catch (IllegalArgumentException ex) {}
}
//-----------------------------------------------------------------------
public void testSerialization() throws Exception {
Partial test = createHourMinPartial(COPTIC_PARIS);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(test);
byte[] bytes = baos.toByteArray();
oos.close();
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
ObjectInputStream ois = new ObjectInputStream(bais);
Partial result = (Partial) ois.readObject();
ois.close();
assertEquals(test, result);
assertTrue(Arrays.equals(test.getValues(), result.getValues()));
assertTrue(Arrays.equals(test.getFields(), result.getFields()));
assertEquals(test.getChronology(), result.getChronology());
}
//-----------------------------------------------------------------------
public void testGetFormatter1() {
Partial test = new Partial(DateTimeFieldType.year(), 2005);
assertEquals("2005", test.getFormatter().print(test));
test = test.with(DateTimeFieldType.monthOfYear(), 6);
assertEquals("2005-06", test.getFormatter().print(test));
test = test.with(DateTimeFieldType.dayOfMonth(), 25);
assertEquals("2005-06-25", test.getFormatter().print(test));
test = test.without(DateTimeFieldType.monthOfYear());
assertEquals("2005--25", test.getFormatter().print(test));
}
public void testGetFormatter2() {
Partial test = new Partial();
assertEquals(null, test.getFormatter());
test = test.with(DateTimeFieldType.era(), 1);
assertEquals(null, test.getFormatter());
test = test.with(DateTimeFieldType.halfdayOfDay(), 0);
assertEquals(null, test.getFormatter());
}
public void testGetFormatter3() {
Partial test = new Partial(DateTimeFieldType.dayOfWeek(), 5);
assertEquals("-W-5", test.getFormatter().print(test));
// contrast with testToString5
test = test.with(DateTimeFieldType.dayOfMonth(), 13);
assertEquals("---13", test.getFormatter().print(test));
}
//-----------------------------------------------------------------------
public void testToString1() {
Partial test = createHourMinPartial();
assertEquals("10:20", test.toString());
}
public void testToString2() {
Partial test = new Partial();
assertEquals("[]", test.toString());
}
public void testToString3() {
Partial test = new Partial(DateTimeFieldType.year(), 2005);
assertEquals("2005", test.toString());
test = test.with(DateTimeFieldType.monthOfYear(), 6);
assertEquals("2005-06", test.toString());
test = test.with(DateTimeFieldType.dayOfMonth(), 25);
assertEquals("2005-06-25", test.toString());
test = test.without(DateTimeFieldType.monthOfYear());
assertEquals("2005--25", test.toString());
}
public void testToString4() {
Partial test = new Partial(DateTimeFieldType.dayOfWeek(), 5);
assertEquals("-W-5", test.toString());
test = test.with(DateTimeFieldType.dayOfMonth(), 13);
assertEquals("[dayOfMonth=13, dayOfWeek=5]", test.toString());
}
public void testToString5() {
Partial test = new Partial(DateTimeFieldType.era(), 1);
assertEquals("[era=1]", test.toString());
test = test.with(DateTimeFieldType.halfdayOfDay(), 0);
assertEquals("[era=1, halfdayOfDay=0]", test.toString());
}
//-----------------------------------------------------------------------
public void testToString_String() {
Partial test = createHourMinPartial();
assertEquals("\ufffd\ufffd\ufffd\ufffd 10", test.toString("yyyy HH"));
assertEquals("10:20", test.toString((String) null));
}
//-----------------------------------------------------------------------
public void testToString_String_Locale() {
Partial test = createHourMinPartial();
assertEquals("10 20", test.toString("H m", Locale.ENGLISH));
assertEquals("10:20", test.toString(null, Locale.ENGLISH));
assertEquals("10 20", test.toString("H m", null));
assertEquals("10:20", test.toString(null, null));
}
//-----------------------------------------------------------------------
public void testToString_DTFormatter() {
Partial test = createHourMinPartial();
assertEquals("\ufffd\ufffd\ufffd\ufffd 10", test.toString(DateTimeFormat.forPattern("yyyy HH")));
assertEquals("10:20", test.toString((DateTimeFormatter) null));
}
//-----------------------------------------------------------------------
private Partial createHourMinPartial() {
return createHourMinPartial(ISO_UTC);
}
private Partial createHourMinPartial(Chronology chrono) {
return createHourMinPartial(10, 20, chrono);
}
private Partial createHourMinPartial2(Chronology chrono) {
return createHourMinPartial(15, 20, chrono);
}
private Partial createHourMinPartial(int hour, int min, Chronology chrono) {
return new Partial(
new DateTimeFieldType[] {DateTimeFieldType.hourOfDay(), DateTimeFieldType.minuteOfHour()},
new int[] {hour, min},
chrono);
}
private Partial createTODPartial(Chronology chrono) {
return new Partial(
new DateTimeFieldType[] {
DateTimeFieldType.hourOfDay(), DateTimeFieldType.minuteOfHour(),
DateTimeFieldType.secondOfMinute(), DateTimeFieldType.millisOfSecond()},
new int[] {10, 20, 30, 40},
chrono);
}
private void check(Partial test, int hour, int min) {
assertEquals(test.toString(), hour, test.get(DateTimeFieldType.hourOfDay()));
assertEquals(test.toString(), min, test.get(DateTimeFieldType.minuteOfHour()));
}
}