| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package org.apache.commons.lang2.math; |
| |
| import java.lang.reflect.Constructor; |
| import java.lang.reflect.Modifier; |
| import java.math.BigDecimal; |
| import java.math.BigInteger; |
| |
| import junit.framework.Test; |
| import junit.framework.TestCase; |
| import junit.framework.TestSuite; |
| import junit.textui.TestRunner; |
| import org.apache.commons.lang2.SystemUtils; |
| |
| /** |
| * Unit tests {@link org.apache.commons.lang2.math.NumberUtils}. |
| * |
| * @author <a href="mailto:rand_mcneely@yahoo.com">Rand McNeely</a> |
| * @author <a href="mailto:ridesmet@users.sourceforge.net">Ringo De Smet</a> |
| * @author Eric Pugh |
| * @author Phil Steitz |
| * @author Stephen Colebourne |
| * @author Matthew Hawthorne |
| * @author <a href="mailto:ggregory@seagullsw.com">Gary Gregory</a> |
| * @version $Id$ |
| */ |
| public class NumberUtilsTest extends TestCase { |
| |
| public NumberUtilsTest(String name) { |
| super(name); |
| } |
| |
| public static void main(String[] args) { |
| TestRunner.run(suite()); |
| } |
| |
| public static Test suite() { |
| TestSuite suite = new TestSuite(NumberUtilsTest.class); |
| suite.setName("NumberUtils Tests"); |
| return suite; |
| } |
| |
| //----------------------------------------------------------------------- |
| public void testConstructor() { |
| assertNotNull(new NumberUtils()); |
| Constructor[] cons = NumberUtils.class.getDeclaredConstructors(); |
| assertEquals(1, cons.length); |
| assertEquals(true, Modifier.isPublic(cons[0].getModifiers())); |
| assertEquals(true, Modifier.isPublic(NumberUtils.class.getModifiers())); |
| assertEquals(false, Modifier.isFinal(NumberUtils.class.getModifiers())); |
| } |
| |
| //--------------------------------------------------------------------- |
| |
| /** |
| * Test for {@link NumberUtils#toInt(String)}. |
| */ |
| public void testToIntString() { |
| assertTrue("toInt(String) 1 failed", NumberUtils.toInt("12345") == 12345); |
| assertTrue("toInt(String) 2 failed", NumberUtils.toInt("abc") == 0); |
| assertTrue("toInt(empty) failed", NumberUtils.toInt("") == 0); |
| assertTrue("toInt(null) failed", NumberUtils.toInt(null) == 0); |
| } |
| |
| /** |
| * Test for {@link NumberUtils#toInt(String, int)}. |
| */ |
| public void testToIntStringI() { |
| assertTrue("toInt(String,int) 1 failed", NumberUtils.toInt("12345", 5) == 12345); |
| assertTrue("toInt(String,int) 2 failed", NumberUtils.toInt("1234.5", 5) == 5); |
| } |
| |
| /** |
| * Test for {@link NumberUtils#toLong(String)}. |
| */ |
| public void testToLongString() { |
| assertTrue("toLong(String) 1 failed", NumberUtils.toLong("12345") == 12345l); |
| assertTrue("toLong(String) 2 failed", NumberUtils.toLong("abc") == 0l); |
| assertTrue("toLong(String) 3 failed", NumberUtils.toLong("1L") == 0l); |
| assertTrue("toLong(String) 4 failed", NumberUtils.toLong("1l") == 0l); |
| assertTrue("toLong(Long.MAX_VALUE) failed", NumberUtils.toLong(Long.MAX_VALUE+"") == Long.MAX_VALUE); |
| assertTrue("toLong(Long.MIN_VALUE) failed", NumberUtils.toLong(Long.MIN_VALUE+"") == Long.MIN_VALUE); |
| assertTrue("toLong(empty) failed", NumberUtils.toLong("") == 0l); |
| assertTrue("toLong(null) failed", NumberUtils.toLong(null) == 0l); |
| } |
| |
| /** |
| * Test for {@link NumberUtils#toLong(String, long)}. |
| */ |
| public void testToLongStringL() { |
| assertTrue("toLong(String,long) 1 failed", NumberUtils.toLong("12345", 5l) == 12345l); |
| assertTrue("toLong(String,long) 2 failed", NumberUtils.toLong("1234.5", 5l) == 5l); |
| } |
| |
| /** |
| * Test for {@link NumberUtils#toFloat(String)}. |
| */ |
| public void testToFloatString() { |
| assertTrue("toFloat(String) 1 failed", NumberUtils.toFloat("-1.2345") == -1.2345f); |
| assertTrue("toFloat(String) 2 failed", NumberUtils.toFloat("1.2345") == 1.2345f); |
| assertTrue("toFloat(String) 3 failed", NumberUtils.toFloat("abc") == 0.0f); |
| assertTrue("toFloat(Float.MAX_VALUE) failed", NumberUtils.toFloat(Float.MAX_VALUE+"") == Float.MAX_VALUE); |
| assertTrue("toFloat(Float.MIN_VALUE) failed", NumberUtils.toFloat(Float.MIN_VALUE+"") == Float.MIN_VALUE); |
| assertTrue("toFloat(empty) failed", NumberUtils.toFloat("") == 0.0f); |
| assertTrue("toFloat(null) failed", NumberUtils.toFloat(null) == 0.0f); |
| } |
| |
| /** |
| * Test for {@link NumberUtils#toFloat(String, float)}. |
| */ |
| public void testToFloatStringF() { |
| assertTrue("toFloat(String,int) 1 failed", NumberUtils.toFloat("1.2345", 5.1f) == 1.2345f); |
| assertTrue("toFloat(String,int) 2 failed", NumberUtils.toFloat("a", 5.0f) == 5.0f); |
| } |
| |
| /** |
| * Test for {@link NumberUtils#toDouble(String)}. |
| */ |
| public void testStringToDoubleString() { |
| assertTrue("toDouble(String) 1 failed", NumberUtils.toDouble("-1.2345") == -1.2345d); |
| assertTrue("toDouble(String) 2 failed", NumberUtils.toDouble("1.2345") == 1.2345d); |
| assertTrue("toDouble(String) 3 failed", NumberUtils.toDouble("abc") == 0.0d); |
| assertTrue("toDouble(Double.MAX_VALUE) failed", NumberUtils.toDouble(Double.MAX_VALUE+"") == Double.MAX_VALUE); |
| assertTrue("toDouble(Double.MIN_VALUE) failed", NumberUtils.toDouble(Double.MIN_VALUE+"") == Double.MIN_VALUE); |
| assertTrue("toDouble(empty) failed", NumberUtils.toDouble("") == 0.0d); |
| assertTrue("toDouble(null) failed", NumberUtils.toDouble(null) == 0.0d); |
| } |
| |
| /** |
| * Test for {@link NumberUtils#toDouble(String, double)}. |
| */ |
| public void testStringToDoubleStringD() { |
| assertTrue("toDouble(String,int) 1 failed", NumberUtils.toDouble("1.2345", 5.1d) == 1.2345d); |
| assertTrue("toDouble(String,int) 2 failed", NumberUtils.toDouble("a", 5.0d) == 5.0d); |
| } |
| |
| public void testCreateNumber() { |
| // a lot of things can go wrong |
| assertEquals("createNumber(String) 1 failed", new Float("1234.5"), NumberUtils.createNumber("1234.5")); |
| assertEquals("createNumber(String) 2 failed", new Integer("12345"), NumberUtils.createNumber("12345")); |
| assertEquals("createNumber(String) 3 failed", new Double("1234.5"), NumberUtils.createNumber("1234.5D")); |
| assertEquals("createNumber(String) 3 failed", new Double("1234.5"), NumberUtils.createNumber("1234.5d")); |
| assertEquals("createNumber(String) 4 failed", new Float("1234.5"), NumberUtils.createNumber("1234.5F")); |
| assertEquals("createNumber(String) 4 failed", new Float("1234.5"), NumberUtils.createNumber("1234.5f")); |
| assertEquals("createNumber(String) 5 failed", new Long(Integer.MAX_VALUE + 1L), NumberUtils.createNumber("" |
| + (Integer.MAX_VALUE + 1L))); |
| assertEquals("createNumber(String) 6 failed", new Long(12345), NumberUtils.createNumber("12345L")); |
| assertEquals("createNumber(String) 6 failed", new Long(12345), NumberUtils.createNumber("12345l")); |
| assertEquals("createNumber(String) 7 failed", new Float("-1234.5"), NumberUtils.createNumber("-1234.5")); |
| assertEquals("createNumber(String) 8 failed", new Integer("-12345"), NumberUtils.createNumber("-12345")); |
| assertTrue("createNumber(String) 9 failed", 0xFADE == NumberUtils.createNumber("0xFADE").intValue()); |
| assertTrue("createNumber(String) 10 failed", -0xFADE == NumberUtils.createNumber("-0xFADE").intValue()); |
| assertEquals("createNumber(String) 11 failed", new Double("1.1E200"), NumberUtils.createNumber("1.1E200")); |
| assertEquals("createNumber(String) 12 failed", new Float("1.1E20"), NumberUtils.createNumber("1.1E20")); |
| assertEquals("createNumber(String) 13 failed", new Double("-1.1E200"), NumberUtils.createNumber("-1.1E200")); |
| assertEquals("createNumber(String) 14 failed", new Double("1.1E-200"), NumberUtils.createNumber("1.1E-200")); |
| assertEquals("createNumber(null) failed", null, NumberUtils.createNumber(null)); |
| assertEquals("createNumber(String) failed", new BigInteger("12345678901234567890"), NumberUtils |
| .createNumber("12345678901234567890L")); |
| |
| // jdk 1.2 doesn't support this. unsure about jdk 1.2.2 |
| if (SystemUtils.isJavaVersionAtLeast(1.3f)) { |
| assertEquals("createNumber(String) 15 failed", new BigDecimal("1.1E-700"), NumberUtils |
| .createNumber("1.1E-700F")); |
| } |
| assertEquals("createNumber(String) 16 failed", new Long("10" + Integer.MAX_VALUE), NumberUtils |
| .createNumber("10" + Integer.MAX_VALUE + "L")); |
| assertEquals("createNumber(String) 17 failed", new Long("10" + Integer.MAX_VALUE), NumberUtils |
| .createNumber("10" + Integer.MAX_VALUE)); |
| assertEquals("createNumber(String) 18 failed", new BigInteger("10" + Long.MAX_VALUE), NumberUtils |
| .createNumber("10" + Long.MAX_VALUE)); |
| } |
| |
| public void testCreateFloat() { |
| assertEquals("createFloat(String) failed", new Float("1234.5"), NumberUtils.createFloat("1234.5")); |
| assertEquals("createFloat(null) failed", null, NumberUtils.createFloat(null)); |
| this.testCreateFloatFailure(""); |
| this.testCreateFloatFailure(" "); |
| this.testCreateFloatFailure("\b\t\n\f\r"); |
| // Funky whitespaces |
| this.testCreateFloatFailure("\u00A0\uFEFF\u000B\u000C\u001C\u001D\u001E\u001F"); |
| } |
| |
| protected void testCreateFloatFailure(String str) { |
| try { |
| Float value = NumberUtils.createFloat(str); |
| fail("createFloat(blank) failed: " + value); |
| } catch (NumberFormatException ex) { |
| // empty |
| } |
| } |
| |
| public void testCreateDouble() { |
| assertEquals("createDouble(String) failed", new Double("1234.5"), NumberUtils.createDouble("1234.5")); |
| assertEquals("createDouble(null) failed", null, NumberUtils.createDouble(null)); |
| this.testCreateDoubleFailure(""); |
| this.testCreateDoubleFailure(" "); |
| this.testCreateDoubleFailure("\b\t\n\f\r"); |
| // Funky whitespaces |
| this.testCreateDoubleFailure("\u00A0\uFEFF\u000B\u000C\u001C\u001D\u001E\u001F"); |
| } |
| |
| protected void testCreateDoubleFailure(String str) { |
| try { |
| Double value = NumberUtils.createDouble(str); |
| fail("createDouble(blank) failed: " + value); |
| } catch (NumberFormatException ex) { |
| // empty |
| } |
| } |
| |
| public void testCreateInteger() { |
| assertEquals("createInteger(String) failed", new Integer("12345"), NumberUtils.createInteger("12345")); |
| assertEquals("createInteger(null) failed", null, NumberUtils.createInteger(null)); |
| this.testCreateIntegerFailure(""); |
| this.testCreateIntegerFailure(" "); |
| this.testCreateIntegerFailure("\b\t\n\f\r"); |
| // Funky whitespaces |
| this.testCreateIntegerFailure("\u00A0\uFEFF\u000B\u000C\u001C\u001D\u001E\u001F"); |
| } |
| |
| protected void testCreateIntegerFailure(String str) { |
| try { |
| Integer value = NumberUtils.createInteger(str); |
| fail("createInteger(blank) failed: " + value); |
| } catch (NumberFormatException ex) { |
| // empty |
| } |
| } |
| |
| public void testCreateLong() { |
| assertEquals("createLong(String) failed", new Long("12345"), NumberUtils.createLong("12345")); |
| assertEquals("createLong(null) failed", null, NumberUtils.createLong(null)); |
| this.testCreateLongFailure(""); |
| this.testCreateLongFailure(" "); |
| this.testCreateLongFailure("\b\t\n\f\r"); |
| // Funky whitespaces |
| this.testCreateLongFailure("\u00A0\uFEFF\u000B\u000C\u001C\u001D\u001E\u001F"); |
| } |
| |
| protected void testCreateLongFailure(String str) { |
| try { |
| Long value = NumberUtils.createLong(str); |
| fail("createLong(blank) failed: " + value); |
| } catch (NumberFormatException ex) { |
| // empty |
| } |
| } |
| |
| public void testCreateBigInteger() { |
| assertEquals("createBigInteger(String) failed", new BigInteger("12345"), NumberUtils.createBigInteger("12345")); |
| assertEquals("createBigInteger(null) failed", null, NumberUtils.createBigInteger(null)); |
| this.testCreateBigIntegerFailure(""); |
| this.testCreateBigIntegerFailure(" "); |
| this.testCreateBigIntegerFailure("\b\t\n\f\r"); |
| // Funky whitespaces |
| this.testCreateBigIntegerFailure("\u00A0\uFEFF\u000B\u000C\u001C\u001D\u001E\u001F"); |
| } |
| |
| protected void testCreateBigIntegerFailure(String str) { |
| try { |
| BigInteger value = NumberUtils.createBigInteger(str); |
| fail("createBigInteger(blank) failed: " + value); |
| } catch (NumberFormatException ex) { |
| // empty |
| } |
| } |
| |
| public void testCreateBigDecimal() { |
| assertEquals("createBigDecimal(String) failed", new BigDecimal("1234.5"), NumberUtils.createBigDecimal("1234.5")); |
| assertEquals("createBigDecimal(null) failed", null, NumberUtils.createBigDecimal(null)); |
| this.testCreateBigDecimalFailure(""); |
| this.testCreateBigDecimalFailure(" "); |
| this.testCreateBigDecimalFailure("\b\t\n\f\r"); |
| // Funky whitespaces |
| this.testCreateBigDecimalFailure("\u00A0\uFEFF\u000B\u000C\u001C\u001D\u001E\u001F"); |
| } |
| |
| protected void testCreateBigDecimalFailure(String str) { |
| try { |
| BigDecimal value = NumberUtils.createBigDecimal(str); |
| fail("createBigDecimal(blank) failed: " + value); |
| } catch (NumberFormatException ex) { |
| // empty |
| } |
| } |
| |
| // min/max tests |
| // ---------------------------------------------------------------------- |
| public void testMinLong() { |
| final long[] l = null; |
| try { |
| NumberUtils.min(l); |
| fail("No exception was thrown for null input."); |
| } catch (IllegalArgumentException ex) {} |
| |
| try { |
| NumberUtils.min(new long[0]); |
| fail("No exception was thrown for empty input."); |
| } catch (IllegalArgumentException ex) {} |
| |
| assertEquals( |
| "min(long[]) failed for array length 1", |
| 5, |
| NumberUtils.min(new long[] { 5 })); |
| |
| assertEquals( |
| "min(long[]) failed for array length 2", |
| 6, |
| NumberUtils.min(new long[] { 6, 9 })); |
| |
| assertEquals(-10, NumberUtils.min(new long[] { -10, -5, 0, 5, 10 })); |
| assertEquals(-10, NumberUtils.min(new long[] { -5, 0, -10, 5, 10 })); |
| } |
| |
| public void testMinInt() { |
| final int[] i = null; |
| try { |
| NumberUtils.min(i); |
| fail("No exception was thrown for null input."); |
| } catch (IllegalArgumentException ex) {} |
| |
| try { |
| NumberUtils.min(new int[0]); |
| fail("No exception was thrown for empty input."); |
| } catch (IllegalArgumentException ex) {} |
| |
| assertEquals( |
| "min(int[]) failed for array length 1", |
| 5, |
| NumberUtils.min(new int[] { 5 })); |
| |
| assertEquals( |
| "min(int[]) failed for array length 2", |
| 6, |
| NumberUtils.min(new int[] { 6, 9 })); |
| |
| assertEquals(-10, NumberUtils.min(new int[] { -10, -5, 0, 5, 10 })); |
| assertEquals(-10, NumberUtils.min(new int[] { -5, 0, -10, 5, 10 })); |
| } |
| |
| public void testMinShort() { |
| final short[] s = null; |
| try { |
| NumberUtils.min(s); |
| fail("No exception was thrown for null input."); |
| } catch (IllegalArgumentException ex) {} |
| |
| try { |
| NumberUtils.min(new short[0]); |
| fail("No exception was thrown for empty input."); |
| } catch (IllegalArgumentException ex) {} |
| |
| assertEquals( |
| "min(short[]) failed for array length 1", |
| 5, |
| NumberUtils.min(new short[] { 5 })); |
| |
| assertEquals( |
| "min(short[]) failed for array length 2", |
| 6, |
| NumberUtils.min(new short[] { 6, 9 })); |
| |
| assertEquals(-10, NumberUtils.min(new short[] { -10, -5, 0, 5, 10 })); |
| assertEquals(-10, NumberUtils.min(new short[] { -5, 0, -10, 5, 10 })); |
| } |
| |
| public void testMinByte() { |
| final byte[] b = null; |
| try { |
| NumberUtils.min(b); |
| fail("No exception was thrown for null input."); |
| } catch (IllegalArgumentException ex) {} |
| |
| try { |
| NumberUtils.min(new byte[0]); |
| fail("No exception was thrown for empty input."); |
| } catch (IllegalArgumentException ex) {} |
| |
| assertEquals( |
| "min(byte[]) failed for array length 1", |
| 5, |
| NumberUtils.min(new byte[] { 5 })); |
| |
| assertEquals( |
| "min(byte[]) failed for array length 2", |
| 6, |
| NumberUtils.min(new byte[] { 6, 9 })); |
| |
| assertEquals(-10, NumberUtils.min(new byte[] { -10, -5, 0, 5, 10 })); |
| assertEquals(-10, NumberUtils.min(new byte[] { -5, 0, -10, 5, 10 })); |
| } |
| |
| public void testMinDouble() { |
| final double[] d = null; |
| try { |
| NumberUtils.min(d); |
| fail("No exception was thrown for null input."); |
| } catch (IllegalArgumentException ex) {} |
| |
| try { |
| NumberUtils.min(new double[0]); |
| fail("No exception was thrown for empty input."); |
| } catch (IllegalArgumentException ex) {} |
| |
| assertEquals( |
| "min(double[]) failed for array length 1", |
| 5.12, |
| NumberUtils.min(new double[] { 5.12 }), |
| 0); |
| |
| assertEquals( |
| "min(double[]) failed for array length 2", |
| 6.23, |
| NumberUtils.min(new double[] { 6.23, 9.34 }), |
| 0); |
| |
| assertEquals( |
| "min(double[]) failed for array length 5", |
| -10.45, |
| NumberUtils.min(new double[] { -10.45, -5.56, 0, 5.67, 10.78 }), |
| 0); |
| assertEquals(-10, NumberUtils.min(new double[] { -10, -5, 0, 5, 10 }), 0.0001); |
| assertEquals(-10, NumberUtils.min(new double[] { -5, 0, -10, 5, 10 }), 0.0001); |
| } |
| |
| public void testMinFloat() { |
| final float[] f = null; |
| try { |
| NumberUtils.min(f); |
| fail("No exception was thrown for null input."); |
| } catch (IllegalArgumentException ex) {} |
| |
| try { |
| NumberUtils.min(new float[0]); |
| fail("No exception was thrown for empty input."); |
| } catch (IllegalArgumentException ex) {} |
| |
| assertEquals( |
| "min(float[]) failed for array length 1", |
| 5.9f, |
| NumberUtils.min(new float[] { 5.9f }), |
| 0); |
| |
| assertEquals( |
| "min(float[]) failed for array length 2", |
| 6.8f, |
| NumberUtils.min(new float[] { 6.8f, 9.7f }), |
| 0); |
| |
| assertEquals( |
| "min(float[]) failed for array length 5", |
| -10.6f, |
| NumberUtils.min(new float[] { -10.6f, -5.5f, 0, 5.4f, 10.3f }), |
| 0); |
| assertEquals(-10, NumberUtils.min(new float[] { -10, -5, 0, 5, 10 }), 0.0001f); |
| assertEquals(-10, NumberUtils.min(new float[] { -5, 0, -10, 5, 10 }), 0.0001f); |
| } |
| |
| public void testMaxLong() { |
| final long[] l = null; |
| try { |
| NumberUtils.max(l); |
| fail("No exception was thrown for null input."); |
| } catch (IllegalArgumentException ex) {} |
| |
| try { |
| NumberUtils.max(new long[0]); |
| fail("No exception was thrown for empty input."); |
| } catch (IllegalArgumentException ex) {} |
| |
| assertEquals( |
| "max(long[]) failed for array length 1", |
| 5, |
| NumberUtils.max(new long[] { 5 })); |
| |
| assertEquals( |
| "max(long[]) failed for array length 2", |
| 9, |
| NumberUtils.max(new long[] { 6, 9 })); |
| |
| assertEquals( |
| "max(long[]) failed for array length 5", |
| 10, |
| NumberUtils.max(new long[] { -10, -5, 0, 5, 10 })); |
| assertEquals(10, NumberUtils.max(new long[] { -10, -5, 0, 5, 10 })); |
| assertEquals(10, NumberUtils.max(new long[] { -5, 0, 10, 5, -10 })); |
| } |
| |
| public void testMaxInt() { |
| final int[] i = null; |
| try { |
| NumberUtils.max(i); |
| fail("No exception was thrown for null input."); |
| } catch (IllegalArgumentException ex) {} |
| |
| try { |
| NumberUtils.max(new int[0]); |
| fail("No exception was thrown for empty input."); |
| } catch (IllegalArgumentException ex) {} |
| |
| assertEquals( |
| "max(int[]) failed for array length 1", |
| 5, |
| NumberUtils.max(new int[] { 5 })); |
| |
| assertEquals( |
| "max(int[]) failed for array length 2", |
| 9, |
| NumberUtils.max(new int[] { 6, 9 })); |
| |
| assertEquals( |
| "max(int[]) failed for array length 5", |
| 10, |
| NumberUtils.max(new int[] { -10, -5, 0, 5, 10 })); |
| assertEquals(10, NumberUtils.max(new int[] { -10, -5, 0, 5, 10 })); |
| assertEquals(10, NumberUtils.max(new int[] { -5, 0, 10, 5, -10 })); |
| } |
| |
| public void testMaxShort() { |
| final short[] s = null; |
| try { |
| NumberUtils.max(s); |
| fail("No exception was thrown for null input."); |
| } catch (IllegalArgumentException ex) {} |
| |
| try { |
| NumberUtils.max(new short[0]); |
| fail("No exception was thrown for empty input."); |
| } catch (IllegalArgumentException ex) {} |
| |
| assertEquals( |
| "max(short[]) failed for array length 1", |
| 5, |
| NumberUtils.max(new short[] { 5 })); |
| |
| assertEquals( |
| "max(short[]) failed for array length 2", |
| 9, |
| NumberUtils.max(new short[] { 6, 9 })); |
| |
| assertEquals( |
| "max(short[]) failed for array length 5", |
| 10, |
| NumberUtils.max(new short[] { -10, -5, 0, 5, 10 })); |
| assertEquals(10, NumberUtils.max(new short[] { -10, -5, 0, 5, 10 })); |
| assertEquals(10, NumberUtils.max(new short[] { -5, 0, 10, 5, -10 })); |
| } |
| |
| public void testMaxByte() { |
| final byte[] b = null; |
| try { |
| NumberUtils.max(b); |
| fail("No exception was thrown for null input."); |
| } catch (IllegalArgumentException ex) {} |
| |
| try { |
| NumberUtils.max(new byte[0]); |
| fail("No exception was thrown for empty input."); |
| } catch (IllegalArgumentException ex) {} |
| |
| assertEquals( |
| "max(byte[]) failed for array length 1", |
| 5, |
| NumberUtils.max(new byte[] { 5 })); |
| |
| assertEquals( |
| "max(byte[]) failed for array length 2", |
| 9, |
| NumberUtils.max(new byte[] { 6, 9 })); |
| |
| assertEquals( |
| "max(byte[]) failed for array length 5", |
| 10, |
| NumberUtils.max(new byte[] { -10, -5, 0, 5, 10 })); |
| assertEquals(10, NumberUtils.max(new byte[] { -10, -5, 0, 5, 10 })); |
| assertEquals(10, NumberUtils.max(new byte[] { -5, 0, 10, 5, -10 })); |
| } |
| |
| public void testMaxDouble() { |
| final double[] d = null; |
| try { |
| NumberUtils.max(d); |
| fail("No exception was thrown for null input."); |
| } catch (IllegalArgumentException ex) {} |
| |
| try { |
| NumberUtils.max(new double[0]); |
| fail("No exception was thrown for empty input."); |
| } catch (IllegalArgumentException ex) {} |
| |
| assertEquals( |
| "max(double[]) failed for array length 1", |
| 5.1f, |
| NumberUtils.max(new double[] { 5.1f }), |
| 0); |
| |
| assertEquals( |
| "max(double[]) failed for array length 2", |
| 9.2f, |
| NumberUtils.max(new double[] { 6.3f, 9.2f }), |
| 0); |
| |
| assertEquals( |
| "max(double[]) failed for float length 5", |
| 10.4f, |
| NumberUtils.max(new double[] { -10.5f, -5.6f, 0, 5.7f, 10.4f }), |
| 0); |
| assertEquals(10, NumberUtils.max(new double[] { -10, -5, 0, 5, 10 }), 0.0001); |
| assertEquals(10, NumberUtils.max(new double[] { -5, 0, 10, 5, -10 }), 0.0001); |
| } |
| |
| public void testMaxFloat() { |
| final float[] f = null; |
| try { |
| NumberUtils.max(f); |
| fail("No exception was thrown for null input."); |
| } catch (IllegalArgumentException ex) {} |
| |
| try { |
| NumberUtils.max(new float[0]); |
| fail("No exception was thrown for empty input."); |
| } catch (IllegalArgumentException ex) {} |
| |
| assertEquals( |
| "max(float[]) failed for array length 1", |
| 5.1f, |
| NumberUtils.max(new float[] { 5.1f }), |
| 0); |
| |
| assertEquals( |
| "max(float[]) failed for array length 2", |
| 9.2f, |
| NumberUtils.max(new float[] { 6.3f, 9.2f }), |
| 0); |
| |
| assertEquals( |
| "max(float[]) failed for float length 5", |
| 10.4f, |
| NumberUtils.max(new float[] { -10.5f, -5.6f, 0, 5.7f, 10.4f }), |
| 0); |
| assertEquals(10, NumberUtils.max(new float[] { -10, -5, 0, 5, 10 }), 0.0001f); |
| assertEquals(10, NumberUtils.max(new float[] { -5, 0, 10, 5, -10 }), 0.0001f); |
| } |
| |
| public void testMinimumLong() { |
| assertEquals("minimum(long,long,long) 1 failed", 12345L, NumberUtils.min(12345L, 12345L + 1L, 12345L + 2L)); |
| assertEquals("minimum(long,long,long) 2 failed", 12345L, NumberUtils.min(12345L + 1L, 12345L, 12345 + 2L)); |
| assertEquals("minimum(long,long,long) 3 failed", 12345L, NumberUtils.min(12345L + 1L, 12345L + 2L, 12345L)); |
| assertEquals("minimum(long,long,long) 4 failed", 12345L, NumberUtils.min(12345L + 1L, 12345L, 12345L)); |
| assertEquals("minimum(long,long,long) 5 failed", 12345L, NumberUtils.min(12345L, 12345L, 12345L)); |
| } |
| |
| public void testMinimumInt() { |
| assertEquals("minimum(int,int,int) 1 failed", 12345, NumberUtils.min(12345, 12345 + 1, 12345 + 2)); |
| assertEquals("minimum(int,int,int) 2 failed", 12345, NumberUtils.min(12345 + 1, 12345, 12345 + 2)); |
| assertEquals("minimum(int,int,int) 3 failed", 12345, NumberUtils.min(12345 + 1, 12345 + 2, 12345)); |
| assertEquals("minimum(int,int,int) 4 failed", 12345, NumberUtils.min(12345 + 1, 12345, 12345)); |
| assertEquals("minimum(int,int,int) 5 failed", 12345, NumberUtils.min(12345, 12345, 12345)); |
| } |
| |
| public void testMinimumShort() { |
| short low = 1234; |
| short mid = 1234 + 1; |
| short high = 1234 + 2; |
| assertEquals("minimum(short,short,short) 1 failed", low, NumberUtils.min(low, mid, high)); |
| assertEquals("minimum(short,short,short) 1 failed", low, NumberUtils.min(mid, low, high)); |
| assertEquals("minimum(short,short,short) 1 failed", low, NumberUtils.min(mid, high, low)); |
| assertEquals("minimum(short,short,short) 1 failed", low, NumberUtils.min(low, mid, low)); |
| } |
| |
| public void testMinimumByte() { |
| byte low = 123; |
| byte mid = 123 + 1; |
| byte high = 123 + 2; |
| assertEquals("minimum(byte,byte,byte) 1 failed", low, NumberUtils.min(low, mid, high)); |
| assertEquals("minimum(byte,byte,byte) 1 failed", low, NumberUtils.min(mid, low, high)); |
| assertEquals("minimum(byte,byte,byte) 1 failed", low, NumberUtils.min(mid, high, low)); |
| assertEquals("minimum(byte,byte,byte) 1 failed", low, NumberUtils.min(low, mid, low)); |
| } |
| |
| public void testMinimumDouble() { |
| double low = 12.3; |
| double mid = 12.3 + 1; |
| double high = 12.3 + 2; |
| assertEquals(low, NumberUtils.min(low, mid, high), 0.0001); |
| assertEquals(low, NumberUtils.min(mid, low, high), 0.0001); |
| assertEquals(low, NumberUtils.min(mid, high, low), 0.0001); |
| assertEquals(low, NumberUtils.min(low, mid, low), 0.0001); |
| assertEquals(mid, NumberUtils.min(high, mid, high), 0.0001); |
| } |
| |
| public void testMinimumFloat() { |
| float low = 12.3f; |
| float mid = 12.3f + 1; |
| float high = 12.3f + 2; |
| assertEquals(low, NumberUtils.min(low, mid, high), 0.0001f); |
| assertEquals(low, NumberUtils.min(mid, low, high), 0.0001f); |
| assertEquals(low, NumberUtils.min(mid, high, low), 0.0001f); |
| assertEquals(low, NumberUtils.min(low, mid, low), 0.0001f); |
| assertEquals(mid, NumberUtils.min(high, mid, high), 0.0001f); |
| } |
| |
| public void testMaximumLong() { |
| assertEquals("maximum(long,long,long) 1 failed", 12345L, NumberUtils.max(12345L, 12345L - 1L, 12345L - 2L)); |
| assertEquals("maximum(long,long,long) 2 failed", 12345L, NumberUtils.max(12345L - 1L, 12345L, 12345L - 2L)); |
| assertEquals("maximum(long,long,long) 3 failed", 12345L, NumberUtils.max(12345L - 1L, 12345L - 2L, 12345L)); |
| assertEquals("maximum(long,long,long) 4 failed", 12345L, NumberUtils.max(12345L - 1L, 12345L, 12345L)); |
| assertEquals("maximum(long,long,long) 5 failed", 12345L, NumberUtils.max(12345L, 12345L, 12345L)); |
| } |
| |
| public void testMaximumInt() { |
| assertEquals("maximum(int,int,int) 1 failed", 12345, NumberUtils.max(12345, 12345 - 1, 12345 - 2)); |
| assertEquals("maximum(int,int,int) 2 failed", 12345, NumberUtils.max(12345 - 1, 12345, 12345 - 2)); |
| assertEquals("maximum(int,int,int) 3 failed", 12345, NumberUtils.max(12345 - 1, 12345 - 2, 12345)); |
| assertEquals("maximum(int,int,int) 4 failed", 12345, NumberUtils.max(12345 - 1, 12345, 12345)); |
| assertEquals("maximum(int,int,int) 5 failed", 12345, NumberUtils.max(12345, 12345, 12345)); |
| } |
| |
| public void testMaximumShort() { |
| short low = 1234; |
| short mid = 1234 + 1; |
| short high = 1234 + 2; |
| assertEquals("maximum(short,short,short) 1 failed", high, NumberUtils.max(low, mid, high)); |
| assertEquals("maximum(short,short,short) 1 failed", high, NumberUtils.max(mid, low, high)); |
| assertEquals("maximum(short,short,short) 1 failed", high, NumberUtils.max(mid, high, low)); |
| assertEquals("maximum(short,short,short) 1 failed", high, NumberUtils.max(high, mid, high)); |
| } |
| |
| public void testMaximumByte() { |
| byte low = 123; |
| byte mid = 123 + 1; |
| byte high = 123 + 2; |
| assertEquals("maximum(byte,byte,byte) 1 failed", high, NumberUtils.max(low, mid, high)); |
| assertEquals("maximum(byte,byte,byte) 1 failed", high, NumberUtils.max(mid, low, high)); |
| assertEquals("maximum(byte,byte,byte) 1 failed", high, NumberUtils.max(mid, high, low)); |
| assertEquals("maximum(byte,byte,byte) 1 failed", high, NumberUtils.max(high, mid, high)); |
| } |
| |
| public void testMaximumDouble() { |
| double low = 12.3; |
| double mid = 12.3 + 1; |
| double high = 12.3 + 2; |
| assertEquals(high, NumberUtils.max(low, mid, high), 0.0001); |
| assertEquals(high, NumberUtils.max(mid, low, high), 0.0001); |
| assertEquals(high, NumberUtils.max(mid, high, low), 0.0001); |
| assertEquals(mid, NumberUtils.max(low, mid, low), 0.0001); |
| assertEquals(high, NumberUtils.max(high, mid, high), 0.0001); |
| } |
| |
| public void testMaximumFloat() { |
| float low = 12.3f; |
| float mid = 12.3f + 1; |
| float high = 12.3f + 2; |
| assertEquals(high, NumberUtils.max(low, mid, high), 0.0001f); |
| assertEquals(high, NumberUtils.max(mid, low, high), 0.0001f); |
| assertEquals(high, NumberUtils.max(mid, high, low), 0.0001f); |
| assertEquals(mid, NumberUtils.max(low, mid, low), 0.0001f); |
| assertEquals(high, NumberUtils.max(high, mid, high), 0.0001f); |
| } |
| |
| public void testCompareDouble() { |
| assertTrue(NumberUtils.compare(Double.NaN, Double.NaN) == 0); |
| assertTrue(NumberUtils.compare(Double.NaN, Double.POSITIVE_INFINITY) == +1); |
| assertTrue(NumberUtils.compare(Double.NaN, Double.MAX_VALUE) == +1); |
| assertTrue(NumberUtils.compare(Double.NaN, 1.2d) == +1); |
| assertTrue(NumberUtils.compare(Double.NaN, 0.0d) == +1); |
| assertTrue(NumberUtils.compare(Double.NaN, -0.0d) == +1); |
| assertTrue(NumberUtils.compare(Double.NaN, -1.2d) == +1); |
| assertTrue(NumberUtils.compare(Double.NaN, -Double.MAX_VALUE) == +1); |
| assertTrue(NumberUtils.compare(Double.NaN, Double.NEGATIVE_INFINITY) == +1); |
| |
| assertTrue(NumberUtils.compare(Double.POSITIVE_INFINITY, Double.NaN) == -1); |
| assertTrue(NumberUtils.compare(Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY) == 0); |
| assertTrue(NumberUtils.compare(Double.POSITIVE_INFINITY, Double.MAX_VALUE) == +1); |
| assertTrue(NumberUtils.compare(Double.POSITIVE_INFINITY, 1.2d) == +1); |
| assertTrue(NumberUtils.compare(Double.POSITIVE_INFINITY, 0.0d) == +1); |
| assertTrue(NumberUtils.compare(Double.POSITIVE_INFINITY, -0.0d) == +1); |
| assertTrue(NumberUtils.compare(Double.POSITIVE_INFINITY, -1.2d) == +1); |
| assertTrue(NumberUtils.compare(Double.POSITIVE_INFINITY, -Double.MAX_VALUE) == +1); |
| assertTrue(NumberUtils.compare(Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY) == +1); |
| |
| assertTrue(NumberUtils.compare(Double.MAX_VALUE, Double.NaN) == -1); |
| assertTrue(NumberUtils.compare(Double.MAX_VALUE, Double.POSITIVE_INFINITY) == -1); |
| assertTrue(NumberUtils.compare(Double.MAX_VALUE, Double.MAX_VALUE) == 0); |
| assertTrue(NumberUtils.compare(Double.MAX_VALUE, 1.2d) == +1); |
| assertTrue(NumberUtils.compare(Double.MAX_VALUE, 0.0d) == +1); |
| assertTrue(NumberUtils.compare(Double.MAX_VALUE, -0.0d) == +1); |
| assertTrue(NumberUtils.compare(Double.MAX_VALUE, -1.2d) == +1); |
| assertTrue(NumberUtils.compare(Double.MAX_VALUE, -Double.MAX_VALUE) == +1); |
| assertTrue(NumberUtils.compare(Double.MAX_VALUE, Double.NEGATIVE_INFINITY) == +1); |
| |
| assertTrue(NumberUtils.compare(1.2d, Double.NaN) == -1); |
| assertTrue(NumberUtils.compare(1.2d, Double.POSITIVE_INFINITY) == -1); |
| assertTrue(NumberUtils.compare(1.2d, Double.MAX_VALUE) == -1); |
| assertTrue(NumberUtils.compare(1.2d, 1.2d) == 0); |
| assertTrue(NumberUtils.compare(1.2d, 0.0d) == +1); |
| assertTrue(NumberUtils.compare(1.2d, -0.0d) == +1); |
| assertTrue(NumberUtils.compare(1.2d, -1.2d) == +1); |
| assertTrue(NumberUtils.compare(1.2d, -Double.MAX_VALUE) == +1); |
| assertTrue(NumberUtils.compare(1.2d, Double.NEGATIVE_INFINITY) == +1); |
| |
| assertTrue(NumberUtils.compare(0.0d, Double.NaN) == -1); |
| assertTrue(NumberUtils.compare(0.0d, Double.POSITIVE_INFINITY) == -1); |
| assertTrue(NumberUtils.compare(0.0d, Double.MAX_VALUE) == -1); |
| assertTrue(NumberUtils.compare(0.0d, 1.2d) == -1); |
| assertTrue(NumberUtils.compare(0.0d, 0.0d) == 0); |
| assertTrue(NumberUtils.compare(0.0d, -0.0d) == +1); |
| assertTrue(NumberUtils.compare(0.0d, -1.2d) == +1); |
| assertTrue(NumberUtils.compare(0.0d, -Double.MAX_VALUE) == +1); |
| assertTrue(NumberUtils.compare(0.0d, Double.NEGATIVE_INFINITY) == +1); |
| |
| assertTrue(NumberUtils.compare(-0.0d, Double.NaN) == -1); |
| assertTrue(NumberUtils.compare(-0.0d, Double.POSITIVE_INFINITY) == -1); |
| assertTrue(NumberUtils.compare(-0.0d, Double.MAX_VALUE) == -1); |
| assertTrue(NumberUtils.compare(-0.0d, 1.2d) == -1); |
| assertTrue(NumberUtils.compare(-0.0d, 0.0d) == -1); |
| assertTrue(NumberUtils.compare(-0.0d, -0.0d) == 0); |
| assertTrue(NumberUtils.compare(-0.0d, -1.2d) == +1); |
| assertTrue(NumberUtils.compare(-0.0d, -Double.MAX_VALUE) == +1); |
| assertTrue(NumberUtils.compare(-0.0d, Double.NEGATIVE_INFINITY) == +1); |
| |
| assertTrue(NumberUtils.compare(-1.2d, Double.NaN) == -1); |
| assertTrue(NumberUtils.compare(-1.2d, Double.POSITIVE_INFINITY) == -1); |
| assertTrue(NumberUtils.compare(-1.2d, Double.MAX_VALUE) == -1); |
| assertTrue(NumberUtils.compare(-1.2d, 1.2d) == -1); |
| assertTrue(NumberUtils.compare(-1.2d, 0.0d) == -1); |
| assertTrue(NumberUtils.compare(-1.2d, -0.0d) == -1); |
| assertTrue(NumberUtils.compare(-1.2d, -1.2d) == 0); |
| assertTrue(NumberUtils.compare(-1.2d, -Double.MAX_VALUE) == +1); |
| assertTrue(NumberUtils.compare(-1.2d, Double.NEGATIVE_INFINITY) == +1); |
| |
| assertTrue(NumberUtils.compare(-Double.MAX_VALUE, Double.NaN) == -1); |
| assertTrue(NumberUtils.compare(-Double.MAX_VALUE, Double.POSITIVE_INFINITY) == -1); |
| assertTrue(NumberUtils.compare(-Double.MAX_VALUE, Double.MAX_VALUE) == -1); |
| assertTrue(NumberUtils.compare(-Double.MAX_VALUE, 1.2d) == -1); |
| assertTrue(NumberUtils.compare(-Double.MAX_VALUE, 0.0d) == -1); |
| assertTrue(NumberUtils.compare(-Double.MAX_VALUE, -0.0d) == -1); |
| assertTrue(NumberUtils.compare(-Double.MAX_VALUE, -1.2d) == -1); |
| assertTrue(NumberUtils.compare(-Double.MAX_VALUE, -Double.MAX_VALUE) == 0); |
| assertTrue(NumberUtils.compare(-Double.MAX_VALUE, Double.NEGATIVE_INFINITY) == +1); |
| |
| assertTrue(NumberUtils.compare(Double.NEGATIVE_INFINITY, Double.NaN) == -1); |
| assertTrue(NumberUtils.compare(Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY) == -1); |
| assertTrue(NumberUtils.compare(Double.NEGATIVE_INFINITY, Double.MAX_VALUE) == -1); |
| assertTrue(NumberUtils.compare(Double.NEGATIVE_INFINITY, 1.2d) == -1); |
| assertTrue(NumberUtils.compare(Double.NEGATIVE_INFINITY, 0.0d) == -1); |
| assertTrue(NumberUtils.compare(Double.NEGATIVE_INFINITY, -0.0d) == -1); |
| assertTrue(NumberUtils.compare(Double.NEGATIVE_INFINITY, -1.2d) == -1); |
| assertTrue(NumberUtils.compare(Double.NEGATIVE_INFINITY, -Double.MAX_VALUE) == -1); |
| assertTrue(NumberUtils.compare(Double.NEGATIVE_INFINITY, Double.NEGATIVE_INFINITY) == 0); |
| } |
| |
| public void testCompareFloat() { |
| assertTrue(NumberUtils.compare(Float.NaN, Float.NaN) == 0); |
| assertTrue(NumberUtils.compare(Float.NaN, Float.POSITIVE_INFINITY) == +1); |
| assertTrue(NumberUtils.compare(Float.NaN, Float.MAX_VALUE) == +1); |
| assertTrue(NumberUtils.compare(Float.NaN, 1.2f) == +1); |
| assertTrue(NumberUtils.compare(Float.NaN, 0.0f) == +1); |
| assertTrue(NumberUtils.compare(Float.NaN, -0.0f) == +1); |
| assertTrue(NumberUtils.compare(Float.NaN, -1.2f) == +1); |
| assertTrue(NumberUtils.compare(Float.NaN, -Float.MAX_VALUE) == +1); |
| assertTrue(NumberUtils.compare(Float.NaN, Float.NEGATIVE_INFINITY) == +1); |
| |
| assertTrue(NumberUtils.compare(Float.POSITIVE_INFINITY, Float.NaN) == -1); |
| assertTrue(NumberUtils.compare(Float.POSITIVE_INFINITY, Float.POSITIVE_INFINITY) == 0); |
| assertTrue(NumberUtils.compare(Float.POSITIVE_INFINITY, Float.MAX_VALUE) == +1); |
| assertTrue(NumberUtils.compare(Float.POSITIVE_INFINITY, 1.2f) == +1); |
| assertTrue(NumberUtils.compare(Float.POSITIVE_INFINITY, 0.0f) == +1); |
| assertTrue(NumberUtils.compare(Float.POSITIVE_INFINITY, -0.0f) == +1); |
| assertTrue(NumberUtils.compare(Float.POSITIVE_INFINITY, -1.2f) == +1); |
| assertTrue(NumberUtils.compare(Float.POSITIVE_INFINITY, -Float.MAX_VALUE) == +1); |
| assertTrue(NumberUtils.compare(Float.POSITIVE_INFINITY, Float.NEGATIVE_INFINITY) == +1); |
| |
| assertTrue(NumberUtils.compare(Float.MAX_VALUE, Float.NaN) == -1); |
| assertTrue(NumberUtils.compare(Float.MAX_VALUE, Float.POSITIVE_INFINITY) == -1); |
| assertTrue(NumberUtils.compare(Float.MAX_VALUE, Float.MAX_VALUE) == 0); |
| assertTrue(NumberUtils.compare(Float.MAX_VALUE, 1.2f) == +1); |
| assertTrue(NumberUtils.compare(Float.MAX_VALUE, 0.0f) == +1); |
| assertTrue(NumberUtils.compare(Float.MAX_VALUE, -0.0f) == +1); |
| assertTrue(NumberUtils.compare(Float.MAX_VALUE, -1.2f) == +1); |
| assertTrue(NumberUtils.compare(Float.MAX_VALUE, -Float.MAX_VALUE) == +1); |
| assertTrue(NumberUtils.compare(Float.MAX_VALUE, Float.NEGATIVE_INFINITY) == +1); |
| |
| assertTrue(NumberUtils.compare(1.2f, Float.NaN) == -1); |
| assertTrue(NumberUtils.compare(1.2f, Float.POSITIVE_INFINITY) == -1); |
| assertTrue(NumberUtils.compare(1.2f, Float.MAX_VALUE) == -1); |
| assertTrue(NumberUtils.compare(1.2f, 1.2f) == 0); |
| assertTrue(NumberUtils.compare(1.2f, 0.0f) == +1); |
| assertTrue(NumberUtils.compare(1.2f, -0.0f) == +1); |
| assertTrue(NumberUtils.compare(1.2f, -1.2f) == +1); |
| assertTrue(NumberUtils.compare(1.2f, -Float.MAX_VALUE) == +1); |
| assertTrue(NumberUtils.compare(1.2f, Float.NEGATIVE_INFINITY) == +1); |
| |
| assertTrue(NumberUtils.compare(0.0f, Float.NaN) == -1); |
| assertTrue(NumberUtils.compare(0.0f, Float.POSITIVE_INFINITY) == -1); |
| assertTrue(NumberUtils.compare(0.0f, Float.MAX_VALUE) == -1); |
| assertTrue(NumberUtils.compare(0.0f, 1.2f) == -1); |
| assertTrue(NumberUtils.compare(0.0f, 0.0f) == 0); |
| assertTrue(NumberUtils.compare(0.0f, -0.0f) == +1); |
| assertTrue(NumberUtils.compare(0.0f, -1.2f) == +1); |
| assertTrue(NumberUtils.compare(0.0f, -Float.MAX_VALUE) == +1); |
| assertTrue(NumberUtils.compare(0.0f, Float.NEGATIVE_INFINITY) == +1); |
| |
| assertTrue(NumberUtils.compare(-0.0f, Float.NaN) == -1); |
| assertTrue(NumberUtils.compare(-0.0f, Float.POSITIVE_INFINITY) == -1); |
| assertTrue(NumberUtils.compare(-0.0f, Float.MAX_VALUE) == -1); |
| assertTrue(NumberUtils.compare(-0.0f, 1.2f) == -1); |
| assertTrue(NumberUtils.compare(-0.0f, 0.0f) == -1); |
| assertTrue(NumberUtils.compare(-0.0f, -0.0f) == 0); |
| assertTrue(NumberUtils.compare(-0.0f, -1.2f) == +1); |
| assertTrue(NumberUtils.compare(-0.0f, -Float.MAX_VALUE) == +1); |
| assertTrue(NumberUtils.compare(-0.0f, Float.NEGATIVE_INFINITY) == +1); |
| |
| assertTrue(NumberUtils.compare(-1.2f, Float.NaN) == -1); |
| assertTrue(NumberUtils.compare(-1.2f, Float.POSITIVE_INFINITY) == -1); |
| assertTrue(NumberUtils.compare(-1.2f, Float.MAX_VALUE) == -1); |
| assertTrue(NumberUtils.compare(-1.2f, 1.2f) == -1); |
| assertTrue(NumberUtils.compare(-1.2f, 0.0f) == -1); |
| assertTrue(NumberUtils.compare(-1.2f, -0.0f) == -1); |
| assertTrue(NumberUtils.compare(-1.2f, -1.2f) == 0); |
| assertTrue(NumberUtils.compare(-1.2f, -Float.MAX_VALUE) == +1); |
| assertTrue(NumberUtils.compare(-1.2f, Float.NEGATIVE_INFINITY) == +1); |
| |
| assertTrue(NumberUtils.compare(-Float.MAX_VALUE, Float.NaN) == -1); |
| assertTrue(NumberUtils.compare(-Float.MAX_VALUE, Float.POSITIVE_INFINITY) == -1); |
| assertTrue(NumberUtils.compare(-Float.MAX_VALUE, Float.MAX_VALUE) == -1); |
| assertTrue(NumberUtils.compare(-Float.MAX_VALUE, 1.2f) == -1); |
| assertTrue(NumberUtils.compare(-Float.MAX_VALUE, 0.0f) == -1); |
| assertTrue(NumberUtils.compare(-Float.MAX_VALUE, -0.0f) == -1); |
| assertTrue(NumberUtils.compare(-Float.MAX_VALUE, -1.2f) == -1); |
| assertTrue(NumberUtils.compare(-Float.MAX_VALUE, -Float.MAX_VALUE) == 0); |
| assertTrue(NumberUtils.compare(-Float.MAX_VALUE, Float.NEGATIVE_INFINITY) == +1); |
| |
| assertTrue(NumberUtils.compare(Float.NEGATIVE_INFINITY, Float.NaN) == -1); |
| assertTrue(NumberUtils.compare(Float.NEGATIVE_INFINITY, Float.POSITIVE_INFINITY) == -1); |
| assertTrue(NumberUtils.compare(Float.NEGATIVE_INFINITY, Float.MAX_VALUE) == -1); |
| assertTrue(NumberUtils.compare(Float.NEGATIVE_INFINITY, 1.2f) == -1); |
| assertTrue(NumberUtils.compare(Float.NEGATIVE_INFINITY, 0.0f) == -1); |
| assertTrue(NumberUtils.compare(Float.NEGATIVE_INFINITY, -0.0f) == -1); |
| assertTrue(NumberUtils.compare(Float.NEGATIVE_INFINITY, -1.2f) == -1); |
| assertTrue(NumberUtils.compare(Float.NEGATIVE_INFINITY, -Float.MAX_VALUE) == -1); |
| assertTrue(NumberUtils.compare(Float.NEGATIVE_INFINITY, Float.NEGATIVE_INFINITY) == 0); |
| } |
| |
| public void testIsDigits() { |
| assertEquals("isDigits(null) failed", false, NumberUtils.isDigits(null)); |
| assertEquals("isDigits('') failed", false, NumberUtils.isDigits("")); |
| assertEquals("isDigits(String) failed", true, NumberUtils.isDigits("12345")); |
| assertEquals("isDigits(String) neg 1 failed", false, NumberUtils.isDigits("1234.5")); |
| assertEquals("isDigits(String) neg 3 failed", false, NumberUtils.isDigits("1ab")); |
| assertEquals("isDigits(String) neg 4 failed", false, NumberUtils.isDigits("abc")); |
| } |
| |
| /** |
| * Tests isNumber(String) and tests that createNumber(String) returns |
| * a valid number iff isNumber(String) returns false. |
| */ |
| public void testIsNumber() { |
| String val = "12345"; |
| assertTrue("isNumber(String) 1 failed", NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 1 failed", checkCreateNumber(val)); |
| val = "1234.5"; |
| assertTrue("isNumber(String) 2 failed", NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 2 failed", checkCreateNumber(val)); |
| val = ".12345"; |
| assertTrue("isNumber(String) 3 failed", NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 3 failed", checkCreateNumber(val)); |
| val = "1234E5"; |
| assertTrue("isNumber(String) 4 failed", NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 4 failed", checkCreateNumber(val)); |
| val = "1234E+5"; |
| assertTrue("isNumber(String) 5 failed", NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 5 failed", checkCreateNumber(val)); |
| val = "1234E-5"; |
| assertTrue("isNumber(String) 6 failed", NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 6 failed", checkCreateNumber(val)); |
| val = "123.4E5"; |
| assertTrue("isNumber(String) 7 failed", NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 7 failed", checkCreateNumber(val)); |
| val = "-1234"; |
| assertTrue("isNumber(String) 8 failed", NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 8 failed", checkCreateNumber(val)); |
| val = "-1234.5"; |
| assertTrue("isNumber(String) 9 failed", NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 9 failed", checkCreateNumber(val)); |
| val = "-.12345"; |
| assertTrue("isNumber(String) 10 failed", NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 10 failed", checkCreateNumber(val)); |
| val = "-1234E5"; |
| assertTrue("isNumber(String) 11 failed", NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 11 failed", checkCreateNumber(val)); |
| val = "0"; |
| assertTrue("isNumber(String) 12 failed", NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 12 failed", checkCreateNumber(val)); |
| val = "-0"; |
| assertTrue("isNumber(String) 13 failed", NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 13 failed", checkCreateNumber(val)); |
| val = "01234"; |
| assertTrue("isNumber(String) 14 failed", NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 14 failed", checkCreateNumber(val)); |
| val = "-01234"; |
| assertTrue("isNumber(String) 15 failed", NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 15 failed", checkCreateNumber(val)); |
| val = "0xABC123"; |
| assertTrue("isNumber(String) 16 failed", NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 16 failed", checkCreateNumber(val)); |
| val = "0x0"; |
| assertTrue("isNumber(String) 17 failed", NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 17 failed", checkCreateNumber(val)); |
| val = "123.4E21D"; |
| assertTrue("isNumber(String) 19 failed", NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 19 failed", checkCreateNumber(val)); |
| val = "-221.23F"; |
| assertTrue("isNumber(String) 20 failed", NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 20 failed", checkCreateNumber(val)); |
| val = "22338L"; |
| assertTrue("isNumber(String) 21 failed", NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 21 failed", checkCreateNumber(val)); |
| val = null; |
| assertTrue("isNumber(String) 1 Neg failed", !NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 1 Neg failed", !checkCreateNumber(val)); |
| val = ""; |
| assertTrue("isNumber(String) 2 Neg failed", !NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 2 Neg failed", !checkCreateNumber(val)); |
| val = "--2.3"; |
| assertTrue("isNumber(String) 3 Neg failed", !NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 3 Neg failed", !checkCreateNumber(val)); |
| val = ".12.3"; |
| assertTrue("isNumber(String) 4 Neg failed", !NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 4 Neg failed", !checkCreateNumber(val)); |
| val = "-123E"; |
| assertTrue("isNumber(String) 5 Neg failed", !NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 5 Neg failed", !checkCreateNumber(val)); |
| val = "-123E+-212"; |
| assertTrue("isNumber(String) 6 Neg failed", !NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 6 Neg failed", !checkCreateNumber(val)); |
| val = "-123E2.12"; |
| assertTrue("isNumber(String) 7 Neg failed", !NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 7 Neg failed", !checkCreateNumber(val)); |
| val = "0xGF"; |
| assertTrue("isNumber(String) 8 Neg failed", !NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 8 Neg failed", !checkCreateNumber(val)); |
| val = "0xFAE-1"; |
| assertTrue("isNumber(String) 9 Neg failed", !NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 9 Neg failed", !checkCreateNumber(val)); |
| val = "."; |
| assertTrue("isNumber(String) 10 Neg failed", !NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 10 Neg failed", !checkCreateNumber(val)); |
| val = "-0ABC123"; |
| assertTrue("isNumber(String) 11 Neg failed", !NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 11 Neg failed", !checkCreateNumber(val)); |
| val = "123.4E-D"; |
| assertTrue("isNumber(String) 12 Neg failed", !NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 12 Neg failed", !checkCreateNumber(val)); |
| val = "123.4ED"; |
| assertTrue("isNumber(String) 13 Neg failed", !NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 13 Neg failed", !checkCreateNumber(val)); |
| val = "1234E5l"; |
| assertTrue("isNumber(String) 14 Neg failed", !NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 14 Neg failed", !checkCreateNumber(val)); |
| val = "11a"; |
| assertTrue("isNumber(String) 15 Neg failed", !NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 15 Neg failed", !checkCreateNumber(val)); |
| val = "1a"; |
| assertTrue("isNumber(String) 16 Neg failed", !NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 16 Neg failed", !checkCreateNumber(val)); |
| val = "a"; |
| assertTrue("isNumber(String) 17 Neg failed", !NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 17 Neg failed", !checkCreateNumber(val)); |
| val = "11g"; |
| assertTrue("isNumber(String) 18 Neg failed", !NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 18 Neg failed", !checkCreateNumber(val)); |
| val = "11z"; |
| assertTrue("isNumber(String) 19 Neg failed", !NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 19 Neg failed", !checkCreateNumber(val)); |
| val = "11def"; |
| assertTrue("isNumber(String) 20 Neg failed", !NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 20 Neg failed", !checkCreateNumber(val)); |
| val = "11d11"; |
| assertTrue("isNumber(String) 21 Neg failed", !NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 21 Neg failed", !checkCreateNumber(val)); |
| val = "11 11"; |
| assertTrue("isNumber(String) 22 Neg failed", !NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 22 Neg failed", !checkCreateNumber(val)); |
| val = " 1111"; |
| assertTrue("isNumber(String) 23 Neg failed", !NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 23 Neg failed", !checkCreateNumber(val)); |
| val = "1111 "; |
| assertTrue("isNumber(String) 24 Neg failed", !NumberUtils.isNumber(val)); |
| assertTrue("isNumber(String)/createNumber(String) 24 Neg failed", !checkCreateNumber(val)); |
| |
| } |
| |
| private boolean checkCreateNumber(String val) { |
| try { |
| Object obj = NumberUtils.createNumber(val); |
| if (obj == null) { |
| return false; |
| } |
| return true; |
| } catch (NumberFormatException e) { |
| return false; |
| } |
| } |
| |
| public void testConstants() { |
| assertTrue(NumberUtils.LONG_ZERO instanceof Long); |
| assertTrue(NumberUtils.LONG_ONE instanceof Long); |
| assertTrue(NumberUtils.LONG_MINUS_ONE instanceof Long); |
| assertTrue(NumberUtils.INTEGER_ZERO instanceof Integer); |
| assertTrue(NumberUtils.INTEGER_ONE instanceof Integer); |
| assertTrue(NumberUtils.INTEGER_MINUS_ONE instanceof Integer); |
| assertTrue(NumberUtils.SHORT_ZERO instanceof Short); |
| assertTrue(NumberUtils.SHORT_ONE instanceof Short); |
| assertTrue(NumberUtils.SHORT_MINUS_ONE instanceof Short); |
| assertTrue(NumberUtils.BYTE_ZERO instanceof Byte); |
| assertTrue(NumberUtils.BYTE_ONE instanceof Byte); |
| assertTrue(NumberUtils.BYTE_MINUS_ONE instanceof Byte); |
| assertTrue(NumberUtils.DOUBLE_ZERO instanceof Double); |
| assertTrue(NumberUtils.DOUBLE_ONE instanceof Double); |
| assertTrue(NumberUtils.DOUBLE_MINUS_ONE instanceof Double); |
| assertTrue(NumberUtils.FLOAT_ZERO instanceof Float); |
| assertTrue(NumberUtils.FLOAT_ONE instanceof Float); |
| assertTrue(NumberUtils.FLOAT_MINUS_ONE instanceof Float); |
| |
| assertTrue(NumberUtils.LONG_ZERO.longValue() == 0); |
| assertTrue(NumberUtils.LONG_ONE.longValue() == 1); |
| assertTrue(NumberUtils.LONG_MINUS_ONE.longValue() == -1); |
| assertTrue(NumberUtils.INTEGER_ZERO.intValue() == 0); |
| assertTrue(NumberUtils.INTEGER_ONE.intValue() == 1); |
| assertTrue(NumberUtils.INTEGER_MINUS_ONE.intValue() == -1); |
| assertTrue(NumberUtils.SHORT_ZERO.shortValue() == 0); |
| assertTrue(NumberUtils.SHORT_ONE.shortValue() == 1); |
| assertTrue(NumberUtils.SHORT_MINUS_ONE.shortValue() == -1); |
| assertTrue(NumberUtils.BYTE_ZERO.byteValue() == 0); |
| assertTrue(NumberUtils.BYTE_ONE.byteValue() == 1); |
| assertTrue(NumberUtils.BYTE_MINUS_ONE.byteValue() == -1); |
| assertTrue(NumberUtils.DOUBLE_ZERO.doubleValue() == 0.0d); |
| assertTrue(NumberUtils.DOUBLE_ONE.doubleValue() == 1.0d); |
| assertTrue(NumberUtils.DOUBLE_MINUS_ONE.doubleValue() == -1.0d); |
| assertTrue(NumberUtils.FLOAT_ZERO.floatValue() == 0.0f); |
| assertTrue(NumberUtils.FLOAT_ONE.floatValue() == 1.0f); |
| assertTrue(NumberUtils.FLOAT_MINUS_ONE.floatValue() == -1.0f); |
| } |
| |
| public void testLang300() { |
| NumberUtils.createNumber("-1l"); |
| NumberUtils.createNumber("01l"); |
| NumberUtils.createNumber("1l"); |
| } |
| |
| } |