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));
+ }
}