Skip to content
Merged
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
4 changes: 4 additions & 0 deletions src/main/java/org/scijava/util/NumberUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,8 @@ public static Number getMinimumNumber(final Class<?> type) {
if (Types.isLong(type)) return Long.MIN_VALUE;
if (Types.isFloat(type)) return -Float.MAX_VALUE;
if (Types.isDouble(type)) return -Double.MAX_VALUE;
// Fallback for Number.class
if (Types.isNumber(type)) return -Double.MAX_VALUE;
return null;
}

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

Expand Down
42 changes: 42 additions & 0 deletions src/test/java/org/scijava/util/NumberUtilsTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@

package org.scijava.util;

import org.junit.Test;

import static org.junit.Assert.assertEquals;

/**
* Tests {@link NumberUtils} functionality
*
* @author Gabriel Selzer
*/
public class NumberUtilsTest {

/** Tests {@link NumberUtils#getMinimumNumber(Class)} */
@Test
public void testGetMinimumNumber() {
assertEquals(Byte.MIN_VALUE, NumberUtils.getMinimumNumber(Byte.class));
assertEquals(Short.MIN_VALUE, NumberUtils.getMinimumNumber(Short.class));
assertEquals(Integer.MIN_VALUE, NumberUtils.getMinimumNumber(
Integer.class));
assertEquals(Long.MIN_VALUE, NumberUtils.getMinimumNumber(Long.class));
assertEquals(-Float.MAX_VALUE, NumberUtils.getMinimumNumber(Float.class));
assertEquals(-Double.MAX_VALUE, NumberUtils.getMinimumNumber(Double.class));
// Number's minimum value should be the smallest of all the above -> Double
assertEquals(-Double.MAX_VALUE, NumberUtils.getMinimumNumber(Number.class));
}

/** Tests {@link NumberUtils#getMaximumNumber(Class)} */
@Test
public void testGetMaximumNumber() {
assertEquals(Byte.MAX_VALUE, NumberUtils.getMaximumNumber(Byte.class));
assertEquals(Short.MAX_VALUE, NumberUtils.getMaximumNumber(Short.class));
assertEquals(Integer.MAX_VALUE, NumberUtils.getMaximumNumber(
Integer.class));
assertEquals(Long.MAX_VALUE, NumberUtils.getMaximumNumber(Long.class));
assertEquals(Float.MAX_VALUE, NumberUtils.getMaximumNumber(Float.class));
assertEquals(Double.MAX_VALUE, NumberUtils.getMaximumNumber(Double.class));
// Number's minimum value should be the smallest of all the above -> Double
assertEquals(Double.MAX_VALUE, NumberUtils.getMaximumNumber(Number.class));
}
}