The failing test cases:
src/test/java/org/joda/time/TestDuration_Basics.java:470-492
public void testToPeriod_fixedZone() throws Throwable {
DateTimeZone zone = DateTimeZone.getDefault();
try {
DateTimeZone.setDefault(DateTimeZone.forOffsetHours(2));
long length =
(4L + (3L * 7L) + (2L * 30L) + 365L) * DateTimeConstants.MILLIS_PER_DAY +
5L * DateTimeConstants.MILLIS_PER_HOUR +
6L * DateTimeConstants.MILLIS_PER_MINUTE +
7L * DateTimeConstants.MILLIS_PER_SECOND + 8L;
Duration dur = new Duration(length);
Period test = dur.toPeriod();
assertEquals(0, test.getYears()); // (4 + (3 * 7) + (2 * 30) + 365) == 450
assertEquals(0, test.getMonths());
assertEquals(0, test.getWeeks()); // <-- TC fails here
assertEquals(0, test.getDays());
assertEquals((450 * 24) + 5, test.getHours());
assertEquals(6, test.getMinutes());
assertEquals(7, test.getSeconds());
assertEquals(8, test.getMillis());
} finally {
DateTimeZone.setDefault(zone);
}
}
src/test/java/org/joda/time/TestPeriod_Constructors.java:174-197
public void testConstructor_long_fixedZone() throws Throwable {
DateTimeZone zone = DateTimeZone.getDefault();
try {
DateTimeZone.setDefault(DateTimeZone.forOffsetHours(2));
long length =
(4L + (3L * 7L) + (2L * 30L) + 365L) * DateTimeConstants.MILLIS_PER_DAY +
5L * DateTimeConstants.MILLIS_PER_HOUR +
6L * DateTimeConstants.MILLIS_PER_MINUTE +
7L * DateTimeConstants.MILLIS_PER_SECOND + 8L;
Period test = new Period(length);
assertEquals(PeriodType.standard(), test.getPeriodType());
// only time fields are precise in AllType
assertEquals(0, test.getYears()); // (4 + (3 * 7) + (2 * 30) + 365) == 450
assertEquals(0, test.getMonths());
assertEquals(0, test.getWeeks()); // <-- TC fails here
assertEquals(0, test.getDays());
assertEquals((450 * 24) + 5, test.getHours());
assertEquals(6, test.getMinutes());
assertEquals(7, test.getSeconds());
assertEquals(8, test.getMillis());
} finally {
DateTimeZone.setDefault(zone);
}
}
The faulty code:
Line is covered but NOT in slice
Line is covered and in slice
Line is in slice but NOT covered
src/main/java/org/joda/time/base/BasePeriod.java:221-224
protected BasePeriod(long duration) {
this(duration, null, null); //<-- BUG!!
// bug [3264409]
}
Other code:
src/test/java/org/joda/time/TestMutablePeriod_Basics.java:447-452
public void testClone() {
MutablePeriod test = new MutablePeriod(123L);
MutablePeriod copy = (MutablePeriod) test.clone();
assertEquals(test.getPeriodType(), copy.getPeriodType());
assertEquals(test, copy);
}