From 2a512ee33ec8b053e05bc8361fe56dd06777bf3e Mon Sep 17 00:00:00 2001 From: PiMaDaum Date: Wed, 30 Nov 2022 00:27:58 +0100 Subject: [PATCH 1/3] NumberUtils check if Number is null or zero --- .../commons/lang3/math/NumberUtils.java | 5 ++ .../commons/lang3/math/NumberUtilsTest.java | 46 +++++++++++++++++++ 2 files changed, 51 insertions(+) diff --git a/src/main/java/org/apache/commons/lang3/math/NumberUtils.java b/src/main/java/org/apache/commons/lang3/math/NumberUtils.java index 02a6069b321..90d8d0a2b14 100644 --- a/src/main/java/org/apache/commons/lang3/math/NumberUtils.java +++ b/src/main/java/org/apache/commons/lang3/math/NumberUtils.java @@ -22,6 +22,7 @@ import java.math.RoundingMode; import java.util.Objects; +import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.Validate; @@ -1847,4 +1848,8 @@ public static int compare(final short x, final short y) { public static int compare(final byte x, final byte y) { return x - y; } + + public static boolean isNullOrZero(Number number) { + return null == number || number.doubleValue() == 0.0d; + } } diff --git a/src/test/java/org/apache/commons/lang3/math/NumberUtilsTest.java b/src/test/java/org/apache/commons/lang3/math/NumberUtilsTest.java index 2a01fab163c..463991bd743 100644 --- a/src/test/java/org/apache/commons/lang3/math/NumberUtilsTest.java +++ b/src/test/java/org/apache/commons/lang3/math/NumberUtilsTest.java @@ -1743,4 +1743,50 @@ public void testToShortStringI() { assertEquals(12345, NumberUtils.toShort("12345", (short) 5), "toShort(String, short) 1 failed"); assertEquals(5, NumberUtils.toShort("1234.5", (short) 5), "toShort(String, short) 2 failed"); } + + /** + * Test for {@link NumberUtils#isNullOrZero(Number)} + */ + @Test + public void testIsNullOrZero() { + String errorMessageNullShouldTrue = "A null Object should return true on isNullOrZero(Number)"; + String errorMessageZeroShouldTrue = "A zero Value of Number should return true on isNullOrZero(Number)"; + String errorMessageNonZeroShouldFalse = "A non zero Value should return false on isNullOrZero(Number)"; + + assertTrue(NumberUtils.isNullOrZero((BigDecimal) null), + BigDecimal.class.getSimpleName() + " - " + errorMessageNullShouldTrue); + assertTrue(NumberUtils.isNullOrZero(BigDecimal.ZERO), + BigDecimal.class.getSimpleName() + " - " + errorMessageZeroShouldTrue); + assertTrue(NumberUtils.isNullOrZero(BigDecimal.valueOf(0.00d)), + BigDecimal.class.getSimpleName() + " - " + errorMessageZeroShouldTrue); + assertTrue(NumberUtils.isNullOrZero((Integer) null), + Integer.class.getSimpleName() + " - " + errorMessageNullShouldTrue); + assertTrue(NumberUtils.isNullOrZero(NumberUtils.INTEGER_ZERO), + Integer.class.getSimpleName() + " - " + errorMessageZeroShouldTrue); + assertTrue(NumberUtils.isNullOrZero((Float) null), + Float.class.getSimpleName() + " - " + errorMessageNullShouldTrue); + assertTrue(NumberUtils.isNullOrZero(NumberUtils.FLOAT_ZERO), + Float.class.getSimpleName() + " - " + errorMessageZeroShouldTrue); + assertTrue(NumberUtils.isNullOrZero((Double) null), + Double.class.getSimpleName() + " - " + errorMessageNullShouldTrue); + assertTrue(NumberUtils.isNullOrZero(NumberUtils.DOUBLE_ZERO), + Double.class.getSimpleName() + " - " + errorMessageZeroShouldTrue); + + assertFalse(NumberUtils.isNullOrZero(BigDecimal.ONE), + BigDecimal.class.getSimpleName() + " - " + errorMessageNonZeroShouldFalse); + assertFalse(NumberUtils.isNullOrZero(BigDecimal.valueOf(0.0025)), + BigDecimal.class.getSimpleName() + " - " + errorMessageNonZeroShouldFalse); + assertFalse(NumberUtils.isNullOrZero(NumberUtils.INTEGER_ONE), + Integer.class.getSimpleName() + " - " + errorMessageNonZeroShouldFalse); + assertFalse(NumberUtils.isNullOrZero(NumberUtils.toInt("236")), + Integer.class.getSimpleName() + " - " + errorMessageNonZeroShouldFalse); + assertFalse(NumberUtils.isNullOrZero(NumberUtils.FLOAT_MINUS_ONE), + Float.class.getSimpleName() + " - " + errorMessageNonZeroShouldFalse); + assertFalse(NumberUtils.isNullOrZero(2.4685f), + Float.class.getSimpleName() + " - " + errorMessageNonZeroShouldFalse); + assertFalse(NumberUtils.isNullOrZero(NumberUtils.DOUBLE_ONE), + Double.class.getSimpleName() + " - " + errorMessageNonZeroShouldFalse); + assertFalse(NumberUtils.isNullOrZero(NumberUtils.toDouble("-45.6382")), + Double.class.getSimpleName() + " - " + errorMessageNonZeroShouldFalse); + } } From ebf62c577f22befcb1e1a9b986e32e56760ead54 Mon Sep 17 00:00:00 2001 From: PiMaDaum Date: Thu, 1 Dec 2022 00:13:29 +0100 Subject: [PATCH 2/3] Add Comment to the new isNullOrZero method in NumberUtils --- .../java/org/apache/commons/lang3/math/NumberUtils.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/apache/commons/lang3/math/NumberUtils.java b/src/main/java/org/apache/commons/lang3/math/NumberUtils.java index 90d8d0a2b14..075748e4b9a 100644 --- a/src/main/java/org/apache/commons/lang3/math/NumberUtils.java +++ b/src/main/java/org/apache/commons/lang3/math/NumberUtils.java @@ -22,7 +22,6 @@ import java.math.RoundingMode; import java.util.Objects; -import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.Validate; @@ -1849,6 +1848,12 @@ public static int compare(final byte x, final byte y) { return x - y; } + /** + * Checks whether the specified {@link Number} is {@code null} or {@code 0} as value. + * + * @param number the {@code number} to check + * @return {@code true} if the Object of {@code number} is {@code null} or has the value {@code 0}. + */ public static boolean isNullOrZero(Number number) { return null == number || number.doubleValue() == 0.0d; } From 6baea487f0a84dabb073109d73c101acde80a781 Mon Sep 17 00:00:00 2001 From: PiMaDaum Date: Thu, 1 Dec 2022 00:24:08 +0100 Subject: [PATCH 3/3] Add new method isNoneNullOrZero in NumberUtils as negation of isNullOrZero --- .../commons/lang3/math/NumberUtils.java | 10 ++++ .../commons/lang3/math/NumberUtilsTest.java | 46 +++++++++++++++++++ 2 files changed, 56 insertions(+) diff --git a/src/main/java/org/apache/commons/lang3/math/NumberUtils.java b/src/main/java/org/apache/commons/lang3/math/NumberUtils.java index 075748e4b9a..244715e1dee 100644 --- a/src/main/java/org/apache/commons/lang3/math/NumberUtils.java +++ b/src/main/java/org/apache/commons/lang3/math/NumberUtils.java @@ -1857,4 +1857,14 @@ public static int compare(final byte x, final byte y) { public static boolean isNullOrZero(Number number) { return null == number || number.doubleValue() == 0.0d; } + + /** + * Checks whether the specified {@link Number} is not {@code null} and is unlike {@code 0} as value. + * + * @param number number the {@code number} to check + * @return {@code true} is the Object of {@code number} is not {@code null} and has a value unlike {@code 0} + */ + public static boolean isNoneNullOrZero(Number number) { + return ! isNullOrZero(number); + } } diff --git a/src/test/java/org/apache/commons/lang3/math/NumberUtilsTest.java b/src/test/java/org/apache/commons/lang3/math/NumberUtilsTest.java index 463991bd743..300bfca87a7 100644 --- a/src/test/java/org/apache/commons/lang3/math/NumberUtilsTest.java +++ b/src/test/java/org/apache/commons/lang3/math/NumberUtilsTest.java @@ -1789,4 +1789,50 @@ public void testIsNullOrZero() { assertFalse(NumberUtils.isNullOrZero(NumberUtils.toDouble("-45.6382")), Double.class.getSimpleName() + " - " + errorMessageNonZeroShouldFalse); } + + /** + * Test for {@link NumberUtils#isNoneNullOrZero(Number)} + */ + @Test + public void testIsNoneNullOrZero() { + String errorMessageNullShouldFalse = "A null Object should return false on isNoneNullOrZero(Number)"; + String errorMessageZeroShouldFalse = "A zero Value of Number should return false on isNoneNullOrZero(Number)"; + String errorMessageNonZeroShouldTrue = "A non zero Value should return true on isNoneNullOrZero(Number)"; + + assertFalse(NumberUtils.isNoneNullOrZero((BigDecimal) null), + BigDecimal.class.getSimpleName() + " - " + errorMessageNullShouldFalse); + assertFalse(NumberUtils.isNoneNullOrZero(BigDecimal.ZERO), + BigDecimal.class.getSimpleName() + " - " + errorMessageZeroShouldFalse); + assertFalse(NumberUtils.isNoneNullOrZero(BigDecimal.valueOf(0.00d)), + BigDecimal.class.getSimpleName() + " - " + errorMessageZeroShouldFalse); + assertFalse(NumberUtils.isNoneNullOrZero((Integer) null), + Integer.class.getSimpleName() + " - " + errorMessageNullShouldFalse); + assertFalse(NumberUtils.isNoneNullOrZero(NumberUtils.INTEGER_ZERO), + Integer.class.getSimpleName() + " - " + errorMessageZeroShouldFalse); + assertFalse(NumberUtils.isNoneNullOrZero((Float) null), + Float.class.getSimpleName() + " - " + errorMessageNullShouldFalse); + assertFalse(NumberUtils.isNoneNullOrZero(NumberUtils.FLOAT_ZERO), + Float.class.getSimpleName() + " - " + errorMessageZeroShouldFalse); + assertFalse(NumberUtils.isNoneNullOrZero((Double) null), + Double.class.getSimpleName() + " - " + errorMessageNullShouldFalse); + assertFalse(NumberUtils.isNoneNullOrZero(NumberUtils.DOUBLE_ZERO), + Double.class.getSimpleName() + " - " + errorMessageZeroShouldFalse); + + assertTrue(NumberUtils.isNoneNullOrZero(BigDecimal.ONE), + BigDecimal.class.getSimpleName() + " - " + errorMessageNonZeroShouldTrue); + assertTrue(NumberUtils.isNoneNullOrZero(BigDecimal.valueOf(0.0025)), + BigDecimal.class.getSimpleName() + " - " + errorMessageNonZeroShouldTrue); + assertTrue(NumberUtils.isNoneNullOrZero(NumberUtils.INTEGER_ONE), + Integer.class.getSimpleName() + " - " + errorMessageNonZeroShouldTrue); + assertTrue(NumberUtils.isNoneNullOrZero(NumberUtils.toInt("236")), + Integer.class.getSimpleName() + " - " + errorMessageNonZeroShouldTrue); + assertTrue(NumberUtils.isNoneNullOrZero(NumberUtils.FLOAT_MINUS_ONE), + Float.class.getSimpleName() + " - " + errorMessageNonZeroShouldTrue); + assertTrue(NumberUtils.isNoneNullOrZero(2.4685f), + Float.class.getSimpleName() + " - " + errorMessageNonZeroShouldTrue); + assertTrue(NumberUtils.isNoneNullOrZero(NumberUtils.DOUBLE_ONE), + Double.class.getSimpleName() + " - " + errorMessageNonZeroShouldTrue); + assertTrue(NumberUtils.isNoneNullOrZero(NumberUtils.toDouble("-45.6382")), + Double.class.getSimpleName() + " - " + errorMessageNonZeroShouldTrue); + } }