Skip to content

Commit 7201d4d

Browse files
committed
Add support for Number in NumberUtils
1 parent 401b6c5 commit 7201d4d

File tree

2 files changed

+46
-0
lines changed

2 files changed

+46
-0
lines changed

src/main/java/org/scijava/util/NumberUtils.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@ public static Number getMinimumNumber(final Class<?> type) {
7878
if (Types.isLong(type)) return Long.MIN_VALUE;
7979
if (Types.isFloat(type)) return -Float.MAX_VALUE;
8080
if (Types.isDouble(type)) return -Double.MAX_VALUE;
81+
// Fallback for Number.class
82+
if (Types.isNumber(type)) return -Double.MAX_VALUE;
8183
return null;
8284
}
8385

@@ -88,6 +90,8 @@ public static Number getMaximumNumber(final Class<?> type) {
8890
if (Types.isLong(type)) return Long.MAX_VALUE;
8991
if (Types.isFloat(type)) return Float.MAX_VALUE;
9092
if (Types.isDouble(type)) return Double.MAX_VALUE;
93+
// Fallback for Number.class
94+
if (Types.isNumber(type)) return Double.MAX_VALUE;
9195
return null;
9296
}
9397

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
2+
package org.scijava.util;
3+
4+
import org.junit.Test;
5+
6+
import static org.junit.Assert.assertEquals;
7+
8+
/**
9+
* Tests {@link NumberUtils} functionality
10+
*
11+
* @author Gabriel Selzer
12+
*/
13+
public class NumberUtilsTest {
14+
15+
/** Tests {@link NumberUtils#getMinimumNumber(Class)} */
16+
@Test
17+
public void testGetMinimumNumber() {
18+
assertEquals(Byte.MIN_VALUE, NumberUtils.getMinimumNumber(Byte.class));
19+
assertEquals(Short.MIN_VALUE, NumberUtils.getMinimumNumber(Short.class));
20+
assertEquals(Integer.MIN_VALUE, NumberUtils.getMinimumNumber(
21+
Integer.class));
22+
assertEquals(Long.MIN_VALUE, NumberUtils.getMinimumNumber(Long.class));
23+
assertEquals(-Float.MAX_VALUE, NumberUtils.getMinimumNumber(Float.class));
24+
assertEquals(-Double.MAX_VALUE, NumberUtils.getMinimumNumber(Double.class));
25+
// Number's minimum value should be the smallest of all the above -> Double
26+
assertEquals(-Double.MAX_VALUE, NumberUtils.getMinimumNumber(Number.class));
27+
}
28+
29+
/** Tests {@link NumberUtils#getMaximumNumber(Class)} */
30+
@Test
31+
public void testGetMaximumNumber() {
32+
assertEquals(Byte.MAX_VALUE, NumberUtils.getMaximumNumber(Byte.class));
33+
assertEquals(Short.MAX_VALUE, NumberUtils.getMaximumNumber(Short.class));
34+
assertEquals(Integer.MAX_VALUE, NumberUtils.getMaximumNumber(
35+
Integer.class));
36+
assertEquals(Long.MAX_VALUE, NumberUtils.getMaximumNumber(Long.class));
37+
assertEquals(Float.MAX_VALUE, NumberUtils.getMaximumNumber(Float.class));
38+
assertEquals(Double.MAX_VALUE, NumberUtils.getMaximumNumber(Double.class));
39+
// Number's minimum value should be the smallest of all the above -> Double
40+
assertEquals(Double.MAX_VALUE, NumberUtils.getMaximumNumber(Number.class));
41+
}
42+
}

0 commit comments

Comments
 (0)