Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions src/main/java/org/apache/commons/lang3/math/NumberUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -1847,4 +1847,24 @@ public static int compare(final short x, final short y) {
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;
}

/**
* 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);
}
}
92 changes: 92 additions & 0 deletions src/test/java/org/apache/commons/lang3/math/NumberUtilsTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -1743,4 +1743,96 @@ 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);
}

/**
* 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);
}
}