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"));

Reply via email to