This is an automated email from the ASF dual-hosted git repository.
ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-lang.git
The following commit(s) were added to refs/heads/master by this push:
new 1875db4f7 Add test coverage for negative-day adjustment in
DurationFormatUtils #1596
1875db4f7 is described below
commit 1875db4f71db52f5a741368cc6a6a6a89883427b
Author: Gary Gregory <[email protected]>
AuthorDate: Fri Feb 13 08:13:12 2026 -0500
Add test coverage for negative-day adjustment in
DurationFormatUtils #1596
- Sort new methods
- Remove empty lines, use longer lines
---
src/changes/changes.xml | 1 +
.../lang3/time/DurationFormatUtilsTest.java | 78 +++++++++-------------
2 files changed, 31 insertions(+), 48 deletions(-)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index f92daf883..90f3706bb 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -116,6 +116,7 @@ The <action> type attribute can be add,update,fix,remove.
<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>
<action issue="LANG-1817" type="fix" dev="ggregory" due-to="Ivan
Ponomarev, Gary Gregory">UncheckedFutureImpl clears thread interrupt status
when wrapping InterruptedException #1590.</action>
<action type="fix" dev="ggregory" due-to="ThrawnCA, Gary
Gregory">Fix StringUtils.abbreviate(String, String, int) contract violations
#1572.</action>
+ <action type="fix" dev="ggregory" due-to="TK_ENDO,
Arnout Engelen, Gary Gregory">Add test coverage for negative-day adjustment in
DurationFormatUtils #1596.</action>
<!-- ADD -->
<action type="add" dev="ggregory" due-to="Gary
Gregory">Add JavaVersion.JAVA_27.</action>
<action type="add" dev="ggregory" due-to="Gary
Gregory">Add SystemUtils.IS_JAVA_27.</action>
diff --git
a/src/test/java/org/apache/commons/lang3/time/DurationFormatUtilsTest.java
b/src/test/java/org/apache/commons/lang3/time/DurationFormatUtilsTest.java
index 13b42602a..fdadfff98 100644
--- a/src/test/java/org/apache/commons/lang3/time/DurationFormatUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/time/DurationFormatUtilsTest.java
@@ -473,54 +473,6 @@ void testFormatPeriod() {
assertEquals("helloworld", DurationFormatUtils.formatPeriod(time1970,
time, "'hello''world'"));
}
- @Test
- void testFormatPeriodISOAcrossMonths() {
- final TimeZone tz = TimeZones.getTimeZone("GMT-3");
-
- // Verifies period formatting across a month boundary (Jan 31 to Feb 1)
- final Calendar start = Calendar.getInstance(tz);
- start.clear();
- start.set(2020, Calendar.JANUARY, 31);
-
- final Calendar end = Calendar.getInstance(tz);
- end.clear();
- end.set(2020, Calendar.FEBRUARY, 1);
-
- final String result = DurationFormatUtils.formatPeriod(
- start.getTimeInMillis(),
- end.getTimeInMillis(),
- DurationFormatUtils.ISO_EXTENDED_FORMAT_PATTERN,
- false,
- tz
- );
-
- assertEquals("P0Y0M1DT0H0M0.000S", result);
- }
-
- @Test
- void testFormatPeriodISOLeapYearBoundary() {
- final TimeZone tz = TimeZones.getTimeZone("GMT-3");
-
- // Verifies period formatting across a leap-year boundary (Feb 29 to
Mar 1)
- final Calendar start = Calendar.getInstance(tz);
- start.clear();
- start.set(2020, Calendar.FEBRUARY, 29);
-
- final Calendar end = Calendar.getInstance(tz);
- end.clear();
- end.set(2020, Calendar.MARCH, 1);
-
- final String result = DurationFormatUtils.formatPeriod(
- start.getTimeInMillis(),
- end.getTimeInMillis(),
- DurationFormatUtils.ISO_EXTENDED_FORMAT_PATTERN,
- false,
- tz
- );
-
- assertEquals("P0Y0M1DT0H0M0.000S", result);
- }
-
@Test
void testFormatPeriodeStartGreaterEnd() {
assertIllegalArgumentException(() ->
DurationFormatUtils.formatPeriod(5000, 2500, "yy/MM"));
@@ -555,6 +507,36 @@ void testFormatPeriodISO() {
// assertEquals("P1Y2M3DT10H30M", text);
}
+ @Test
+ void testFormatPeriodISOAcrossMonths() {
+ final TimeZone tz = TimeZones.getTimeZone("GMT-3");
+ // Verifies period formatting across a month boundary (Jan 31 to Feb 1)
+ final Calendar start = Calendar.getInstance(tz);
+ start.clear();
+ start.set(2020, Calendar.JANUARY, 31);
+ final Calendar end = Calendar.getInstance(tz);
+ end.clear();
+ end.set(2020, Calendar.FEBRUARY, 1);
+ final String result =
DurationFormatUtils.formatPeriod(start.getTimeInMillis(),
end.getTimeInMillis(), DurationFormatUtils.ISO_EXTENDED_FORMAT_PATTERN,
+ false, tz);
+ assertEquals("P0Y0M1DT0H0M0.000S", result);
+ }
+
+ @Test
+ void testFormatPeriodISOLeapYearBoundary() {
+ final TimeZone tz = TimeZones.getTimeZone("GMT-3");
+ // Verifies period formatting across a leap-year boundary (Feb 29 to
Mar 1)
+ final Calendar start = Calendar.getInstance(tz);
+ start.clear();
+ start.set(2020, Calendar.FEBRUARY, 29);
+ final Calendar end = Calendar.getInstance(tz);
+ end.clear();
+ end.set(2020, Calendar.MARCH, 1);
+ final String result =
DurationFormatUtils.formatPeriod(start.getTimeInMillis(),
end.getTimeInMillis(), DurationFormatUtils.ISO_EXTENDED_FORMAT_PATTERN,
+ false, tz);
+ assertEquals("P0Y0M1DT0H0M0.000S", result);
+ }
+
@Test
void testFormatPeriodISOMethod() {
assertEquals("P0Y0M0DT0H0M0.000S",
DurationFormatUtils.formatPeriodISO(0L, 0L));