Skip to content

Commit 1875db4

Browse files
committed
Add test coverage for negative-day adjustment in
DurationFormatUtils #1596 - Sort new methods - Remove empty lines, use longer lines
1 parent da6d337 commit 1875db4

2 files changed

Lines changed: 31 additions & 48 deletions

File tree

src/changes/changes.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ The <action> type attribute can be add,update,fix,remove.
116116
<action type="fix" dev="ggregory" due-to="Ivan Ponomarev, Gary Gregory">ThreadUtils.sleepQuietly(Duration) now restores the current thread's interrupt flag when catching InterruptedException.</action>
117117
<action issue="LANG-1817" type="fix" dev="ggregory" due-to="Ivan Ponomarev, Gary Gregory">UncheckedFutureImpl clears thread interrupt status when wrapping InterruptedException #1590.</action>
118118
<action type="fix" dev="ggregory" due-to="ThrawnCA, Gary Gregory">Fix StringUtils.abbreviate(String, String, int) contract violations #1572.</action>
119+
<action type="fix" dev="ggregory" due-to="TK_ENDO, Arnout Engelen, Gary Gregory">Add test coverage for negative-day adjustment in DurationFormatUtils #1596.</action>
119120
<!-- ADD -->
120121
<action type="add" dev="ggregory" due-to="Gary Gregory">Add JavaVersion.JAVA_27.</action>
121122
<action type="add" dev="ggregory" due-to="Gary Gregory">Add SystemUtils.IS_JAVA_27.</action>

src/test/java/org/apache/commons/lang3/time/DurationFormatUtilsTest.java

Lines changed: 30 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -473,54 +473,6 @@ void testFormatPeriod() {
473473
assertEquals("helloworld", DurationFormatUtils.formatPeriod(time1970, time, "'hello''world'"));
474474
}
475475

476-
@Test
477-
void testFormatPeriodISOAcrossMonths() {
478-
final TimeZone tz = TimeZones.getTimeZone("GMT-3");
479-
480-
// Verifies period formatting across a month boundary (Jan 31 to Feb 1)
481-
final Calendar start = Calendar.getInstance(tz);
482-
start.clear();
483-
start.set(2020, Calendar.JANUARY, 31);
484-
485-
final Calendar end = Calendar.getInstance(tz);
486-
end.clear();
487-
end.set(2020, Calendar.FEBRUARY, 1);
488-
489-
final String result = DurationFormatUtils.formatPeriod(
490-
start.getTimeInMillis(),
491-
end.getTimeInMillis(),
492-
DurationFormatUtils.ISO_EXTENDED_FORMAT_PATTERN,
493-
false,
494-
tz
495-
);
496-
497-
assertEquals("P0Y0M1DT0H0M0.000S", result);
498-
}
499-
500-
@Test
501-
void testFormatPeriodISOLeapYearBoundary() {
502-
final TimeZone tz = TimeZones.getTimeZone("GMT-3");
503-
504-
// Verifies period formatting across a leap-year boundary (Feb 29 to Mar 1)
505-
final Calendar start = Calendar.getInstance(tz);
506-
start.clear();
507-
start.set(2020, Calendar.FEBRUARY, 29);
508-
509-
final Calendar end = Calendar.getInstance(tz);
510-
end.clear();
511-
end.set(2020, Calendar.MARCH, 1);
512-
513-
final String result = DurationFormatUtils.formatPeriod(
514-
start.getTimeInMillis(),
515-
end.getTimeInMillis(),
516-
DurationFormatUtils.ISO_EXTENDED_FORMAT_PATTERN,
517-
false,
518-
tz
519-
);
520-
521-
assertEquals("P0Y0M1DT0H0M0.000S", result);
522-
}
523-
524476
@Test
525477
void testFormatPeriodeStartGreaterEnd() {
526478
assertIllegalArgumentException(() -> DurationFormatUtils.formatPeriod(5000, 2500, "yy/MM"));
@@ -555,6 +507,36 @@ void testFormatPeriodISO() {
555507
// assertEquals("P1Y2M3DT10H30M", text);
556508
}
557509

510+
@Test
511+
void testFormatPeriodISOAcrossMonths() {
512+
final TimeZone tz = TimeZones.getTimeZone("GMT-3");
513+
// Verifies period formatting across a month boundary (Jan 31 to Feb 1)
514+
final Calendar start = Calendar.getInstance(tz);
515+
start.clear();
516+
start.set(2020, Calendar.JANUARY, 31);
517+
final Calendar end = Calendar.getInstance(tz);
518+
end.clear();
519+
end.set(2020, Calendar.FEBRUARY, 1);
520+
final String result = DurationFormatUtils.formatPeriod(start.getTimeInMillis(), end.getTimeInMillis(), DurationFormatUtils.ISO_EXTENDED_FORMAT_PATTERN,
521+
false, tz);
522+
assertEquals("P0Y0M1DT0H0M0.000S", result);
523+
}
524+
525+
@Test
526+
void testFormatPeriodISOLeapYearBoundary() {
527+
final TimeZone tz = TimeZones.getTimeZone("GMT-3");
528+
// Verifies period formatting across a leap-year boundary (Feb 29 to Mar 1)
529+
final Calendar start = Calendar.getInstance(tz);
530+
start.clear();
531+
start.set(2020, Calendar.FEBRUARY, 29);
532+
final Calendar end = Calendar.getInstance(tz);
533+
end.clear();
534+
end.set(2020, Calendar.MARCH, 1);
535+
final String result = DurationFormatUtils.formatPeriod(start.getTimeInMillis(), end.getTimeInMillis(), DurationFormatUtils.ISO_EXTENDED_FORMAT_PATTERN,
536+
false, tz);
537+
assertEquals("P0Y0M1DT0H0M0.000S", result);
538+
}
539+
558540
@Test
559541
void testFormatPeriodISOMethod() {
560542
assertEquals("P0Y0M0DT0H0M0.000S", DurationFormatUtils.formatPeriodISO(0L, 0L));

0 commit comments

Comments
 (0)