You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2022/09/23 01:53:11 UTC

[tomee] 01/03: Add greater/less operations on Duration

This is an automated email from the ASF dual-hosted git repository.

dblevins pushed a commit to branch TOMEE-4050
in repository https://gitbox.apache.org/repos/asf/tomee.git

commit 5e943d37fb26f971391c7fe9afe2d392f5b30cae
Author: David Blevins <db...@tomitribe.com>
AuthorDate: Wed Sep 21 13:48:03 2022 -0700

    Add greater/less operations on Duration
---
 .../java/org/apache/openejb/util/Duration.java     | 21 +++++++
 .../java/org/apache/openejb/util/DurationTest.java | 65 ++++++++++++++++++++++
 2 files changed, 86 insertions(+)

diff --git a/container/openejb-core/src/main/java/org/apache/openejb/util/Duration.java b/container/openejb-core/src/main/java/org/apache/openejb/util/Duration.java
index f028a16327..dd7b1c6af4 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/util/Duration.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/util/Duration.java
@@ -115,6 +115,7 @@ public class Duration {
         this.unit = unit;
     }
 
+
     private static final class Normalize {
         private final long a;
         private final long b;
@@ -168,6 +169,26 @@ public class Duration {
         return new Duration(n.a - n.b, n.base);
     }
 
+    public boolean greaterThan(final Duration that) {
+        final Normalize n = new Normalize(this, that);
+        return n.a > n.b;
+    }
+
+    public boolean greaterOrEqualTo(final Duration that) {
+        final Normalize n = new Normalize(this, that);
+        return n.a >= n.b;
+    }
+
+    public boolean lessThan(final Duration that) {
+        final Normalize n = new Normalize(this, that);
+        return n.a < n.b;
+    }
+
+    public boolean lessOrEqualTo(final Duration that) {
+        final Normalize n = new Normalize(this, that);
+        return n.a <= n.b;
+    }
+
     public static Duration parse(final String text) {
         return new Duration(text);
     }
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/util/DurationTest.java b/container/openejb-core/src/test/java/org/apache/openejb/util/DurationTest.java
index 2713c0d270..4f370dbac0 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/util/DurationTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/util/DurationTest.java
@@ -20,6 +20,7 @@ import junit.framework.TestCase;
 
 import static java.util.concurrent.TimeUnit.MICROSECONDS;
 import static java.util.concurrent.TimeUnit.MILLISECONDS;
+import static java.util.concurrent.TimeUnit.MINUTES;
 import static java.util.concurrent.TimeUnit.NANOSECONDS;
 import static java.util.concurrent.TimeUnit.SECONDS;
 
@@ -75,4 +76,68 @@ public class DurationTest extends TestCase {
         assertEquals(new Duration(125, SECONDS), Duration.parse("2 minutes and 5 seconds"));
 
     }
+
+    public void testAdd() {
+        final Duration a = new Duration(1, SECONDS);
+        final Duration b = new Duration(1, MINUTES);
+
+
+        final Duration c = a.add(b);
+        assertEquals(c.getUnit(), SECONDS);
+        assertEquals(c.getTime(), 61);
+
+        final Duration d = b.add(a);
+        assertEquals(d.getUnit(), SECONDS);
+        assertEquals(d.getTime(), 61);
+    }
+
+    public void testSubtract() {
+        final Duration a = new Duration(1, SECONDS);
+        final Duration b = new Duration(1, MINUTES);
+
+
+        final Duration c = a.subtract(b);
+        assertEquals(c.getUnit(), SECONDS);
+        assertEquals(c.getTime(), -59);
+
+        final Duration d = b.subtract(a);
+        assertEquals(d.getUnit(), SECONDS);
+        assertEquals(d.getTime(), 59);
+    }
+
+    public void testGreaterThan() {
+        final Duration a = new Duration(1, SECONDS);
+        final Duration b = new Duration(1, MINUTES);
+
+        assertFalse(a.greaterThan(b));
+        assertFalse(a.greaterThan(a));
+        assertTrue(b.greaterThan(a));
+    }
+
+    public void testLessThan() {
+        final Duration a = new Duration(1, SECONDS);
+        final Duration b = new Duration(1, MINUTES);
+
+        assertTrue(a.lessThan(b));
+        assertFalse(a.lessThan(a));
+        assertFalse(b.lessThan(a));
+    }
+
+    public void testGreaterOrEqual() {
+        final Duration a = new Duration(1, SECONDS);
+        final Duration b = new Duration(1, MINUTES);
+
+        assertFalse(a.greaterOrEqualTo(b));
+        assertTrue(a.greaterOrEqualTo(a));
+        assertTrue(b.greaterOrEqualTo(a));
+    }
+
+    public void testLessOrEqual() {
+        final Duration a = new Duration(1, SECONDS);
+        final Duration b = new Duration(1, MINUTES);
+
+        assertTrue(a.lessOrEqualTo(b));
+        assertTrue(a.lessOrEqualTo(a));
+        assertFalse(b.lessOrEqualTo(a));
+    }
 }