This is an automated email from the ASF dual-hosted git repository. sebb pushed a commit to branch singlequotes in repository https://gitbox.apache.org/repos/asf/commons-lang.git
The following commit(s) were added to refs/heads/singlequotes by this push: new e22a81603 Support generation of single quotes e22a81603 is described below commit e22a81603a1a6204a694459e6d4847205d081832 Author: Sebb <s...@apache.org> AuthorDate: Sun May 26 23:16:26 2024 +0100 Support generation of single quotes --- .../apache/commons/lang3/time/DurationFormatUtils.java | 7 ++++++- .../commons/lang3/time/DurationFormatUtilsTest.java | 15 +++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/apache/commons/lang3/time/DurationFormatUtils.java b/src/main/java/org/apache/commons/lang3/time/DurationFormatUtils.java index 18dc6a49d..4512e3b12 100644 --- a/src/main/java/org/apache/commons/lang3/time/DurationFormatUtils.java +++ b/src/main/java/org/apache/commons/lang3/time/DurationFormatUtils.java @@ -264,7 +264,12 @@ public class DurationFormatUtils { } if (isLiteral) { if (!inOptional || !lastOutputZero) { - buffer.append(value.toString()); + final String val = value.toString(); + if (val.length() > 0) { + buffer.append(val); + } else { + buffer.append("'"); + } } } else if (value.equals(y)) { lastOutputSeconds = false; 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 7df279573..976e5e44e 100644 --- a/src/test/java/org/apache/commons/lang3/time/DurationFormatUtilsTest.java +++ b/src/test/java/org/apache/commons/lang3/time/DurationFormatUtilsTest.java @@ -473,6 +473,21 @@ public class DurationFormatUtilsTest extends AbstractLangTest { assertEquals("helloworld", DurationFormatUtils.formatPeriod(time1970, time, "'hello''world'")); } + @Test + public void testSingleQuotes() { + final Calendar cal1970 = Calendar.getInstance(); + cal1970.set(1970, Calendar.JANUARY, 1, 0, 0, 0); + cal1970.set(Calendar.MILLISECOND, 0); + final long time1970 = cal1970.getTime().getTime(); + long time = time1970 + 60 * 1000; + // empty quoted strings: '' should now generate a single quote + assertEquals("'", DurationFormatUtils.formatPeriod(time1970, time, "''")); + assertEquals("a'", DurationFormatUtils.formatPeriod(time1970, time, "'a'''")); + assertEquals("'b", DurationFormatUtils.formatPeriod(time1970, time, "'''b'")); + assertEquals("a'b", DurationFormatUtils.formatPeriod(time1970, time, "'a''''b'")); + assertEquals("01' 04sec",DurationFormatUtils.formatDuration(64000L, "mm'' ss'sec'")); + } + @Test public void testFormatPeriodeStartGreaterEnd() { assertThrows(IllegalArgumentException.class, () -> DurationFormatUtils.formatPeriod(5000, 2500, "yy/MM"));