The failing test cases:
src/test/java/org/joda/time/TestLocalDateTime_Constructors.java:112-118
public void testFactory_fromCalendarFields_beforeYearZero1() throws Exception {
GregorianCalendar cal = new GregorianCalendar(1, 1, 3, 4, 5, 6);
cal.set(Calendar.ERA, GregorianCalendar.BC);
cal.set(Calendar.MILLISECOND, 7);
LocalDateTime expected = new LocalDateTime(0, 2, 3, 4, 5, 6, 7);
assertEquals(expected, LocalDateTime.fromCalendarFields(cal)); // <-- TC fails here
}
src/test/java/org/joda/time/TestLocalDateTime_Constructors.java:120-126
public void testFactory_fromCalendarFields_beforeYearZero3() throws Exception {
GregorianCalendar cal = new GregorianCalendar(3, 1, 3, 4, 5, 6);
cal.set(Calendar.ERA, GregorianCalendar.BC);
cal.set(Calendar.MILLISECOND, 7);
LocalDateTime expected = new LocalDateTime(-2, 2, 3, 4, 5, 6, 7);
assertEquals(expected, LocalDateTime.fromCalendarFields(cal)); // <-- TC fails here
}
src/test/java/org/joda/time/TestLocalDateTime_Constructors.java:150-156
public void testFactory_fromDateFields_beforeYearZero1() throws Exception {
GregorianCalendar cal = new GregorianCalendar(1, 1, 3, 4, 5, 6);
cal.set(Calendar.ERA, GregorianCalendar.BC);
cal.set(Calendar.MILLISECOND, 7);
LocalDateTime expected = new LocalDateTime(0, 2, 3, 4, 5, 6, 7);
assertEquals(expected, LocalDateTime.fromDateFields(cal.getTime())); // <-- TC fails here
}
src/test/java/org/joda/time/TestLocalDateTime_Constructors.java:158-164
public void testFactory_fromDateFields_beforeYearZero3() throws Exception {
GregorianCalendar cal = new GregorianCalendar(3, 1, 3, 4, 5, 6);
cal.set(Calendar.ERA, GregorianCalendar.BC);
cal.set(Calendar.MILLISECOND, 7);
LocalDateTime expected = new LocalDateTime(-2, 2, 3, 4, 5, 6, 7);
assertEquals(expected, LocalDateTime.fromDateFields(cal.getTime())); // <-- TC fails here
}
src/test/java/org/joda/time/TestLocalDate_Constructors.java:104-110
public void testFactory_fromCalendarFields_beforeYearZero1() throws Exception {
GregorianCalendar cal = new GregorianCalendar(1, 1, 3, 4, 5, 6);
cal.set(Calendar.ERA, GregorianCalendar.BC);
cal.set(Calendar.MILLISECOND, 7);
LocalDate expected = new LocalDate(0, 2, 3);
assertEquals(expected, LocalDate.fromCalendarFields(cal)); // <-- TC fails here
}
src/test/java/org/joda/time/TestLocalDate_Constructors.java:112-118
public void testFactory_fromCalendarFields_beforeYearZero3() throws Exception {
GregorianCalendar cal = new GregorianCalendar(3, 1, 3, 4, 5, 6);
cal.set(Calendar.ERA, GregorianCalendar.BC);
cal.set(Calendar.MILLISECOND, 7);
LocalDate expected = new LocalDate(-2, 2, 3);
assertEquals(expected, LocalDate.fromCalendarFields(cal)); // <-- TC fails here
}
src/test/java/org/joda/time/TestLocalDate_Constructors.java:142-148
public void testFactory_fromDateFields_beforeYearZero1() throws Exception {
GregorianCalendar cal = new GregorianCalendar(1, 1, 3, 4, 5, 6);
cal.set(Calendar.ERA, GregorianCalendar.BC);
cal.set(Calendar.MILLISECOND, 7);
LocalDate expected = new LocalDate(0, 2, 3);
assertEquals(expected, LocalDate.fromDateFields(cal.getTime())); // <-- TC fails here
}
src/test/java/org/joda/time/TestLocalDate_Constructors.java:150-156
public void testFactory_fromDateFields_beforeYearZero3() throws Exception {
GregorianCalendar cal = new GregorianCalendar(3, 1, 3, 4, 5, 6);
cal.set(Calendar.ERA, GregorianCalendar.BC);
cal.set(Calendar.MILLISECOND, 7);
LocalDate expected = new LocalDate(-2, 2, 3);
assertEquals(expected, LocalDate.fromDateFields(cal.getTime())); // <-- TC fails here
}
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/LocalDateTime.java:195-209
public static LocalDateTime fromCalendarFields(Calendar calendar) {
if (calendar == null) {
throw new IllegalArgumentException("The calendar must not be null");
}
int yearOfEra = calendar.get(Calendar.YEAR);
return new LocalDateTime( // <-- statement includes bug
yearOfEra, // <-- BUG!!
calendar.get(Calendar.MONTH) + 1,
calendar.get(Calendar.DAY_OF_MONTH),
calendar.get(Calendar.HOUR_OF_DAY),
calendar.get(Calendar.MINUTE),
calendar.get(Calendar.SECOND),
calendar.get(Calendar.MILLISECOND)
);
}
src/main/java/org/joda/time/LocalDateTime.java:611-616
public boolean isSupported(DateTimeFieldType type) {
if (type == null) {
return false;
}
return type.getField(getChronology()).isSupported();
}
src/main/java/org/joda/time/LocalDate.java:206-216
public static LocalDate fromCalendarFields(Calendar calendar) {
if (calendar == null) {
throw new IllegalArgumentException("The calendar must not be null");
}
int yearOfEra = calendar.get(Calendar.YEAR);
return new LocalDate( // <-- statement includes bug
yearOfEra, // <-- BUG!!
calendar.get(Calendar.MONTH) + 1,
calendar.get(Calendar.DAY_OF_MONTH)
);
}