Removing deprecated Number classes that are now found in the math subpackage

git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/lang/branches/LangTwo-1.x@534268 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/java/org/apache/commons/lang2/NumberRange.java b/src/java/org/apache/commons/lang2/NumberRange.java
deleted file mode 100644
index 6e79797..0000000
--- a/src/java/org/apache/commons/lang2/NumberRange.java
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- * 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;
-
-/**
- * <p>Represents a range of {@link Number} objects.</p>
- * 
- * <p>This class uses <code>double</code> comparisons. This means that it
- * is unsuitable for dealing with large <code>Long</code>, <code>BigDecimal</code>
- * or <code>BigInteger</code> numbers.</p>
- *
- * @author <a href="mailto:chrise@esha.com">Christopher Elkins</a>
- * @author Stephen Colebourne
- * @since 1.0
- * @version $Revision$ $Date$
- * 
- * @deprecated Use one of the Range classes in org.apache.commons.lang2.math.
- *             Class will be removed in Commons Lang 3.0.
- * 
- */
-public final class NumberRange {
-
-    /* The minimum number in this range. */
-    private final Number min;
-
-    /* The maximum number in this range. */
-    private final Number max;
-
-
-    /**
-     * <p>Constructs a new <code>NumberRange</code> using
-     * <code>number</code> as both the minimum and maximum in
-     * this range.</p>
-     *
-     * @param num the number to use for this range
-     * @throws NullPointerException if the number is <code>null</code>
-     */
-    public NumberRange(Number num) {
-        if (num == null) {
-            throw new NullPointerException("The number must not be null");
-        }
-
-        this.min = num;
-        this.max = num;
-    }
-
-    /**
-     * <p>Constructs a new <code>NumberRange</code> with the specified
-     * minimum and maximum numbers.</p>
-     * 
-     * <p><em>If the maximum is less than the minimum, the range will be constructed
-     * from the minimum value to the minimum value, not what you would expect!.</em></p>
-     *
-     * @param min the minimum number in this range
-     * @param max the maximum number in this range
-     * @throws NullPointerException if either the minimum or maximum number is
-     *  <code>null</code>
-     */
-    public NumberRange(Number min, Number max) {
-        if (min == null) {
-            throw new NullPointerException("The minimum value must not be null");
-        } else if (max == null) {
-            throw new NullPointerException("The maximum value must not be null");
-        }
-
-        if (max.doubleValue() < min.doubleValue()) {
-            this.min = this.max = min;
-        } else {
-            this.min = min;
-            this.max = max;
-        }
-    }
-
-    /**
-     * <p>Returns the minimum number in this range.</p>
-     *
-     * @return the minimum number in this range
-     */
-    public Number getMinimum() {
-        return min;
-    }
-
-    /**
-     * <p>Returns the maximum number in this range.</p>
-     *
-     * @return the maximum number in this range
-     */
-    public Number getMaximum() {
-        return max;
-    }
-
-    /**
-     * <p>Tests whether the specified <code>number</code> occurs within
-     * this range using <code>double</code> comparison.</p>
-     *
-     * @param number the number to test
-     * @return <code>true</code> if the specified number occurs within this
-     *  range; otherwise, <code>false</code>
-     */
-    public boolean includesNumber(Number number) {
-        if (number == null) {
-            return false;
-        } else {
-            return !(min.doubleValue() > number.doubleValue()) &&
-                !(max.doubleValue() < number.doubleValue());
-        }
-    }
-
-    /**
-     * <p>Tests whether the specified range occurs entirely within this
-     * range using <code>double</code> comparison.</p>
-     *
-     * @param range the range to test
-     * @return <code>true</code> if the specified range occurs entirely within
-     *  this range; otherwise, <code>false</code>
-     */
-    public boolean includesRange(NumberRange range) {
-        if (range == null) {
-            return false;
-        } else {
-            return includesNumber(range.min) && includesNumber(range.max);
-        }
-    }
-
-    /**
-     * <p>Tests whether the specified range overlaps with this range
-     * using <code>double</code> comparison.</p>
-     *
-     * @param range the range to test
-     * @return <code>true</code> if the specified range overlaps with this
-     *  range; otherwise, <code>false</code>
-     */
-    public boolean overlaps(NumberRange range) {
-        if (range == null) {
-            return false;
-        } else {
-            return range.includesNumber(min) || range.includesNumber(max) || 
-                includesRange(range);
-        }
-    }
-
-    /**
-     * <p>Indicates whether some other <code>Object</code> is
-     * &quot;equal&quot; to this one.</p>
-     *
-     * @param obj the reference object with which to compare
-     * @return <code>true</code> if this object is the same as the obj
-     *  argument; <code>false</code> otherwise
-     */
-    public boolean equals(Object obj) {
-        if (obj == this) {
-            return true;
-        } else if (!(obj instanceof NumberRange)) {
-            return false;
-        } else {
-            NumberRange range = (NumberRange)obj;
-            return min.equals(range.min) && max.equals(range.max);
-        }
-    }
-
-    /**
-     * <p>Returns a hash code value for this object.</p>
-     *
-     * @return a hash code value for this object
-     */
-    public int hashCode() {
-        int result = 17;
-        result = 37 * result + min.hashCode();
-        result = 37 * result + max.hashCode();
-        return result;
-    }
-
-    /**
-     * <p>Returns the string representation of this range.</p>
-     *
-     * <p>This string is the string representation of the minimum and
-     * maximum numbers in the range, separated by a hyphen. If a number
-     * is negative, then it is enclosed in parentheses.</p>
-     *
-     * @return the string representation of this range
-     */
-    public String toString() {
-        StringBuffer sb = new StringBuffer();
-
-        if (min.doubleValue() < 0) {
-            sb.append('(')
-                .append(min)
-                .append(')');
-        } else {
-            sb.append(min);
-        }
-
-        sb.append('-');
-
-        if (max.doubleValue() < 0) {
-            sb.append('(')
-                .append(max)
-                .append(')');
-        } else {
-            sb.append(max);
-        }
-
-        return sb.toString();
-    }
-
-}
diff --git a/src/java/org/apache/commons/lang2/NumberUtils.java b/src/java/org/apache/commons/lang2/NumberUtils.java
deleted file mode 100644
index 19a203b..0000000
--- a/src/java/org/apache/commons/lang2/NumberUtils.java
+++ /dev/null
@@ -1,712 +0,0 @@
-/*
- * 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;
-
-import java.math.BigDecimal;
-import java.math.BigInteger;
-
-/**
- * <p>Provides extra functionality for Java Number classes.</p>
- *
- * @author <a href="mailto:rand_mcneely@yahoo.com">Rand McNeely</a>
- * @author Stephen Colebourne
- * @author <a href="mailto:steve.downey@netfolio.com">Steve Downey</a>
- * @author Eric Pugh
- * @author Phil Steitz
- * @since 1.0
- * @version $Id$
- * 
- * @deprecated Moved to org.apache.commons.lang2.math.
- *             Class will be removed in Commons Lang 3.0.
- */
-public final class NumberUtils {
-    // DEPRECATED CLASS !!!
-    
-    /**
-     * <p><code>NumberUtils</code> instances should NOT be constructed in standard programming.
-     * Instead, the class should be used as <code>NumberUtils.stringToInt("6");</code>.</p>
-     *
-     * <p>This constructor is public to permit tools that require a JavaBean instance
-     * to operate.</p>
-     */
-    public NumberUtils() {
-      super();
-    }
-
-    //--------------------------------------------------------------------
-    
-    /**
-     * <p>Convert a <code>String</code> to an <code>int</code>, returning
-     * <code>zero</code> if the conversion fails.</p>
-     * 
-     * @param str  the string to convert
-     * @return the int represented by the string, or <code>zero</code> if
-     *  conversion fails
-     */
-    public static int stringToInt(String str) {
-        return stringToInt(str, 0);
-    }
-
-    /**
-     * <p>Convert a <code>String</code> to an <code>int</code>, returning a
-     * default value if the conversion fails.</p>
-     * 
-     * @param str  the string to convert
-     * @param defaultValue  the default value
-     * @return the int represented by the string, or the default if conversion fails
-     */
-    public static int stringToInt(String str, int defaultValue) {
-        try {
-            return Integer.parseInt(str);
-        } catch (NumberFormatException nfe) {
-            return defaultValue;
-        }
-    }
-
-    //--------------------------------------------------------------------
-    
-    // must handle Long, Float, Integer, Float, Short,
-    //                  BigDecimal, BigInteger and Byte
-    // useful methods:
-    // Byte.decode(String)
-    // Byte.valueOf(String,int radix)
-    // Byte.valueOf(String)
-    // Double.valueOf(String)
-    // Float.valueOf(String)
-    // new Float(String)
-    // Integer.valueOf(String,int radix)
-    // Integer.valueOf(String)
-    // Integer.decode(String)
-    // Integer.getInteger(String)
-    // Integer.getInteger(String,int val)
-    // Integer.getInteger(String,Integer val)
-    // new Integer(String)
-    // new Double(String)
-    // new Byte(String)
-    // new Long(String)
-    // Long.getLong(String)
-    // Long.getLong(String,int)
-    // Long.getLong(String,Integer)
-    // Long.valueOf(String,int)
-    // Long.valueOf(String)
-    // new Short(String)
-    // Short.decode(String)
-    // Short.valueOf(String,int)
-    // Short.valueOf(String)
-    // new BigDecimal(String)
-    // new BigInteger(String)
-    // new BigInteger(String,int radix)
-    // Possible inputs:
-    // 45 45.5 45E7 4.5E7 Hex Oct Binary xxxF xxxD xxxf xxxd
-    // plus minus everything. Prolly more. A lot are not separable.
-
-    /**
-     * <p>Turns a string value into a java.lang.Number.</p>
-     *
-     * <p>First, the value is examined for a type qualifier on the end
-     * (<code>'f','F','d','D','l','L'</code>).  If it is found, it starts 
-     * trying to create successively larger types from the type specified
-     * until one is found that can hold the value.</p>
-     *
-     * <p>If a type specifier is not found, it will check for a decimal point
-     * and then try successively larger types from <code>Integer</code> to
-     * <code>BigInteger</code> and from <code>Float</code> to
-     * <code>BigDecimal</code>.</p>
-     *
-     * <p>If the string starts with <code>0x</code> or <code>-0x</code>, it
-     * will be interpreted as a hexadecimal integer.  Values with leading
-     * <code>0</code>'s will not be interpreted as octal.</p>
-     *
-     * @param val String containing a number
-     * @return Number created from the string
-     * @throws NumberFormatException if the value cannot be converted
-     */
-    public static Number createNumber(String val) throws NumberFormatException {
-        if (val == null) {
-            return null;
-        }
-        if (val.length() == 0) {
-            throw new NumberFormatException("\"\" is not a valid number.");
-        }
-        if (val.startsWith("--")) {
-            // this is protection for poorness in java.lang.BigDecimal.
-            // it accepts this as a legal value, but it does not appear 
-            // to be in specification of class. OS X Java parses it to 
-            // a wrong value.
-            return null;
-        }
-        if (val.startsWith("0x") || val.startsWith("-0x")) {
-            return createInteger(val);
-        }   
-        char lastChar = val.charAt(val.length() - 1);
-        String mant;
-        String dec;
-        String exp;
-        int decPos = val.indexOf('.');
-        int expPos = val.indexOf('e') + val.indexOf('E') + 1;
-
-        if (decPos > -1) {
-
-            if (expPos > -1) {
-                if (expPos < decPos) {
-                    throw new NumberFormatException(val + " is not a valid number.");
-                }
-                dec = val.substring(decPos + 1, expPos);
-            } else {
-                dec = val.substring(decPos + 1);
-            }
-            mant = val.substring(0, decPos);
-        } else {
-            if (expPos > -1) {
-                mant = val.substring(0, expPos);
-            } else {
-                mant = val;
-            }
-            dec = null;
-        }
-        if (!Character.isDigit(lastChar)) {
-            if (expPos > -1 && expPos < val.length() - 1) {
-                exp = val.substring(expPos + 1, val.length() - 1);
-            } else {
-                exp = null;
-            }
-            //Requesting a specific type..
-            String numeric = val.substring(0, val.length() - 1);
-            boolean allZeros = isAllZeros(mant) && isAllZeros(exp);
-            switch (lastChar) {
-                case 'l' :
-                case 'L' :
-                    if (dec == null
-                        && exp == null
-                        && (numeric.charAt(0) == '-' && isDigits(numeric.substring(1)) || isDigits(numeric))) {
-                        try {
-                            return createLong(numeric);
-                        } catch (NumberFormatException nfe) {
-                            //Too big for a long
-                        }
-                        return createBigInteger(numeric);
-
-                    }
-                    throw new NumberFormatException(val + " is not a valid number.");
-                case 'f' :
-                case 'F' :
-                    try {
-                        Float f = NumberUtils.createFloat(numeric);
-                        if (!(f.isInfinite() || (f.floatValue() == 0.0F && !allZeros))) {
-                            //If it's too big for a float or the float value = 0 and the string
-                            //has non-zeros in it, then float does not have the precision we want
-                            return f;
-                        }
-
-                    } catch (NumberFormatException e) {
-                        // ignore the bad number
-                    }
-                    //Fall through
-                case 'd' :
-                case 'D' :
-                    try {
-                        Double d = NumberUtils.createDouble(numeric);
-                        if (!(d.isInfinite() || (d.floatValue() == 0.0D && !allZeros))) {
-                            return d;
-                        }
-                    } catch (NumberFormatException nfe) {
-                        // empty catch
-                    }
-                    try {
-                        return createBigDecimal(numeric);
-                    } catch (NumberFormatException e) {
-                        // empty catch
-                    }
-                    //Fall through
-                default :
-                    throw new NumberFormatException(val + " is not a valid number.");
-
-            }
-        } else {
-            //User doesn't have a preference on the return type, so let's start
-            //small and go from there...
-            if (expPos > -1 && expPos < val.length() - 1) {
-                exp = val.substring(expPos + 1, val.length());
-            } else {
-                exp = null;
-            }
-            if (dec == null && exp == null) {
-                //Must be an int,long,bigint
-                try {
-                    return createInteger(val);
-                } catch (NumberFormatException nfe) {
-                    // empty catch
-                }
-                try {
-                    return createLong(val);
-                } catch (NumberFormatException nfe) {
-                    // empty catch
-                }
-                return createBigInteger(val);
-
-            } else {
-                //Must be a float,double,BigDec
-                boolean allZeros = isAllZeros(mant) && isAllZeros(exp);
-                try {
-                    Float f = createFloat(val);
-                    if (!(f.isInfinite() || (f.floatValue() == 0.0F && !allZeros))) {
-                        return f;
-                    }
-                } catch (NumberFormatException nfe) {
-                    // empty catch
-                }
-                try {
-                    Double d = createDouble(val);
-                    if (!(d.isInfinite() || (d.doubleValue() == 0.0D && !allZeros))) {
-                        return d;
-                    }
-                } catch (NumberFormatException nfe) {
-                    // empty catch
-                }
-
-                return createBigDecimal(val);
-
-            }
-
-        }
-    }
-
-    /**
-     * <p>Utility method for {@link #createNumber(java.lang.String)}.</p>
-     *
-     * <p>Returns <code>true</code> if s is <code>null</code>.</p>
-     * 
-     * @param s the String to check
-     * @return if it is all zeros or <code>null</code>
-     */
-    private static boolean isAllZeros(String s) {
-        if (s == null) {
-            return true;
-        }
-        for (int i = s.length() - 1; i >= 0; i--) {
-            if (s.charAt(i) != '0') {
-                return false;
-            }
-        }
-        return s.length() > 0;
-    }
-
-    //--------------------------------------------------------------------
-    
-    /**
-     * <p>Convert a <code>String</code> to a <code>Float</code>.</p>
-     * 
-     * @param val  a <code>String</code> to convert
-     * @return converted <code>Float</code>
-     * @throws NumberFormatException if the value cannot be converted
-     */
-    public static Float createFloat(String val) {
-        return Float.valueOf(val);
-    }
-
-    /**
-     * <p>Convert a <code>String</code> to a <code>Double</code>.</p>
-     * 
-     * @param val  a <code>String</code> to convert
-     * @return converted <code>Double</code>
-     * @throws NumberFormatException if the value cannot be converted
-     */
-    public static Double createDouble(String val) {
-        return Double.valueOf(val);
-    }
-
-    /**
-     * <p>Convert a <code>String</code> to a <code>Integer</code>, handling
-     * hex and octal notations.</p>
-     * 
-     * @param val  a <code>String</code> to convert
-     * @return converted <code>Integer</code>
-     * @throws NumberFormatException if the value cannot be converted
-     */
-    public static Integer createInteger(String val) {
-        // decode() handles 0xAABD and 0777 (hex and octal) as well.
-        return Integer.decode(val);
-    }
-
-    /**
-     * <p>Convert a <code>String</code> to a <code>Long</code>.</p>
-     * 
-     * @param val  a <code>String</code> to convert
-     * @return converted <code>Long</code>
-     * @throws NumberFormatException if the value cannot be converted
-     */
-    public static Long createLong(String val) {
-        return Long.valueOf(val);
-    }
-
-    /**
-     * <p>Convert a <code>String</code> to a <code>BigInteger</code>.</p>
-     * 
-     * @param val  a <code>String</code> to convert
-     * @return converted <code>BigInteger</code>
-     * @throws NumberFormatException if the value cannot be converted
-     */
-    public static BigInteger createBigInteger(String val) {
-        BigInteger bi = new BigInteger(val);
-        return bi;
-    }
-
-    /**
-     * <p>Convert a <code>String</code> to a <code>BigDecimal</code>.</p>
-     * 
-     * @param val  a <code>String</code> to convert
-     * @return converted <code>BigDecimal</code>
-     * @throws NumberFormatException if the value cannot be converted
-     */
-    public static BigDecimal createBigDecimal(String val) {
-        BigDecimal bd = new BigDecimal(val);
-        return bd;
-    }
-
-    //--------------------------------------------------------------------
-    
-    /**
-     * <p>Gets the minimum of three <code>long</code> values.</p>
-     * 
-     * @param a  value 1
-     * @param b  value 2
-     * @param c  value 3
-     * @return  the smallest of the values
-     */
-    public static long minimum(long a, long b, long c) {
-        if (b < a) {
-            a = b;
-        }
-        if (c < a) {
-            a = c;
-        }
-        return a;
-    }
-
-    /**
-     * <p>Gets the minimum of three <code>int</code> values.</p>
-     * 
-     * @param a  value 1
-     * @param b  value 2
-     * @param c  value 3
-     * @return  the smallest of the values
-     */
-    public static int minimum(int a, int b, int c) {
-        if (b < a) {
-            a = b;
-        }
-        if (c < a) {
-            a = c;
-        }
-        return a;
-    }
-
-    /**
-     * <p>Gets the maximum of three <code>long</code> values.</p>
-     * 
-     * @param a  value 1
-     * @param b  value 2
-     * @param c  value 3
-     * @return  the largest of the values
-     */
-    public static long maximum(long a, long b, long c) {
-        if (b > a) {
-            a = b;
-        }
-        if (c > a) {
-            a = c;
-        }
-        return a;
-    }
-
-    /**
-     * <p>Gets the maximum of three <code>int</code> values.</p>
-     * 
-     * @param a  value 1
-     * @param b  value 2
-     * @param c  value 3
-     * @return  the largest of the values
-     */
-    public static int maximum(int a, int b, int c) {
-        if (b > a) {
-            a = b;
-        }
-        if (c > a) {
-            a = c;
-        }
-        return a;
-    }
-
-    //--------------------------------------------------------------------
-    
-    /**
-     * <p>Compares two <code>doubles</code> for order.</p>
-     *
-     * <p>This method is more comprehensive than the standard Java greater
-     * than, less than and equals operators.</p>
-     * <ul>
-     *  <li>It returns <code>-1</code> if the first value is less than the second.
-     *  <li>It returns <code>+1</code> if the first value is greater than the second.
-     *  <li>It returns <code>0</code> if the values are equal.
-     * </ul>
-     *
-     * <p>
-     * The ordering is as follows, largest to smallest:
-     * <ul>
-     *  <li>NaN
-     *  <li>Positive infinity
-     *  <li>Maximum double
-     *  <li>Normal positive numbers
-     *  <li>+0.0
-     *  <li>-0.0
-     *  <li>Normal negative numbers
-     *  <li>Minimum double (-Double.MAX_VALUE)
-     *  <li>Negative infinity
-     * </ul>
-     * </p>
-     *
-     * <p>Comparing <code>NaN</code> with <code>NaN</code> will
-     * return <code>0</code>.</p>
-     * 
-     * @param lhs  the first <code>double</code>
-     * @param rhs  the second <code>double</code>
-     * @return <code>-1</code> if lhs is less, <code>+1</code> if greater,
-     *  <code>0</code> if equal to rhs
-     */
-    public static int compare(double lhs, double rhs) {
-        if (lhs < rhs) {
-            return -1;
-        }
-        if (lhs > rhs) {
-            return +1;
-        }
-        // Need to compare bits to handle 0.0 == -0.0 being true
-        // compare should put -0.0 < +0.0
-        // Two NaNs are also == for compare purposes
-        // where NaN == NaN is false
-        long lhsBits = Double.doubleToLongBits(lhs);
-        long rhsBits = Double.doubleToLongBits(rhs);
-        if (lhsBits == rhsBits) {
-            return 0;
-        }
-        // Something exotic! A comparison to NaN or 0.0 vs -0.0
-        // Fortunately NaN's long is > than everything else
-        // Also negzeros bits < poszero
-        // NAN: 9221120237041090560
-        // MAX: 9218868437227405311
-        // NEGZERO: -9223372036854775808
-        if (lhsBits < rhsBits) {
-            return -1;
-        } else {
-            return +1;
-        }
-    }
-    
-    /**
-     * <p>Compares two floats for order.</p>
-     *
-     * <p>This method is more comprehensive than the standard Java greater than,
-     * less than and equals operators.</p>
-     * <ul>
-     *  <li>It returns <code>-1</code> if the first value is less than the second.
-     *  <li>It returns <code>+1</code> if the first value is greater than the second.
-     *  <li>It returns <code>0</code> if the values are equal.
-     * </ul>
-     *
-     * <p> The ordering is as follows, largest to smallest:
-     * <ul>
-     * <li>NaN
-     * <li>Positive infinity
-     * <li>Maximum float
-     * <li>Normal positive numbers
-     * <li>+0.0
-     * <li>-0.0
-     * <li>Normal negative numbers
-     * <li>Minimum float (-Float.MAX_VALUE)
-     * <li>Negative infinity
-     * </ul>
-     *
-     * <p>Comparing <code>NaN</code> with <code>NaN</code> will return
-     * <code>0</code>.</p>
-     * 
-     * @param lhs  the first <code>float</code>
-     * @param rhs  the second <code>float</code>
-     * @return <code>-1</code> if lhs is less, <code>+1</code> if greater,
-     *  <code>0</code> if equal to rhs
-     */
-    public static int compare(float lhs, float rhs) {
-        if (lhs < rhs) {
-            return -1;
-        }
-        if (lhs > rhs) {
-            return +1;
-        }
-        //Need to compare bits to handle 0.0 == -0.0 being true
-        // compare should put -0.0 < +0.0
-        // Two NaNs are also == for compare purposes
-        // where NaN == NaN is false
-        int lhsBits = Float.floatToIntBits(lhs);
-        int rhsBits = Float.floatToIntBits(rhs);
-        if (lhsBits == rhsBits) {
-            return 0;
-        }
-        //Something exotic! A comparison to NaN or 0.0 vs -0.0
-        //Fortunately NaN's int is > than everything else
-        //Also negzeros bits < poszero
-        //NAN: 2143289344
-        //MAX: 2139095039
-        //NEGZERO: -2147483648
-        if (lhsBits < rhsBits) {
-            return -1;
-        } else {
-            return +1;
-        }
-    }
-    
-    //--------------------------------------------------------------------
-    
-    /**
-     * <p>Checks whether the <code>String</code> contains only
-     * digit characters.</p>
-     *
-     * <p><code>Null</code> and empty String will return
-     * <code>false</code>.</p>
-     *
-     * @param str  the <code>String</code> to check
-     * @return <code>true</code> if str contains only unicode numeric
-     */
-    public static boolean isDigits(String str) {
-        if ((str == null) || (str.length() == 0)) {
-            return false;
-        }
-        for (int i = 0; i < str.length(); i++) {
-            if (!Character.isDigit(str.charAt(i))) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    /**
-     * <p>Checks whether the String a valid Java number.</p>
-     *
-     * <p>Valid numbers include hexadecimal marked with the <code>0x</code>
-     * qualifier, scientific notation and numbers marked with a type
-     * qualifier (e.g. 123L).</p>
-     *
-     * <p><code>Null</code> and empty String will return
-     * <code>false</code>.</p>
-     *
-     * @param str  the <code>String</code> to check
-     * @return <code>true</code> if the string is a correctly formatted number
-     */
-    public static boolean isNumber(String str) {
-        if (StringUtils.isEmpty(str)) {
-            return false;
-        }
-        char[] chars = str.toCharArray();
-        int sz = chars.length;
-        boolean hasExp = false;
-        boolean hasDecPoint = false;
-        boolean allowSigns = false;
-        boolean foundDigit = false;
-        // deal with any possible sign up front
-        int start = (chars[0] == '-') ? 1 : 0;
-        if (sz > start + 1) {
-            if (chars[start] == '0' && chars[start + 1] == 'x') {
-                int i = start + 2;
-                if (i == sz) {
-                    return false; // str == "0x"
-                }
-                // checking hex (it can't be anything else)
-                for (; i < chars.length; i++) {
-                    if ((chars[i] < '0' || chars[i] > '9')
-                        && (chars[i] < 'a' || chars[i] > 'f')
-                        && (chars[i] < 'A' || chars[i] > 'F')) {
-                        return false;
-                    }
-                }
-                return true;
-            }
-        }
-        sz--; // don't want to loop to the last char, check it afterwords
-              // for type qualifiers
-        int i = start;
-        // loop to the next to last char or to the last char if we need another digit to
-        // make a valid number (e.g. chars[0..5] = "1234E")
-        while (i < sz || (i < sz + 1 && allowSigns && !foundDigit)) {
-            if (chars[i] >= '0' && chars[i] <= '9') {
-                foundDigit = true;
-                allowSigns = false;
-
-            } else if (chars[i] == '.') {
-                if (hasDecPoint || hasExp) {
-                    // two decimal points or dec in exponent   
-                    return false;
-                }
-                hasDecPoint = true;
-            } else if (chars[i] == 'e' || chars[i] == 'E') {
-                // we've already taken care of hex.
-                if (hasExp) {
-                    // two E's
-                    return false;
-                }
-                if (!foundDigit) {
-                    return false;
-                }
-                hasExp = true;
-                allowSigns = true;
-            } else if (chars[i] == '+' || chars[i] == '-') {
-                if (!allowSigns) {
-                    return false;
-                }
-                allowSigns = false;
-                foundDigit = false; // we need a digit after the E
-            } else {
-                return false;
-            }
-            i++;
-        }
-        if (i < chars.length) {
-            if (chars[i] >= '0' && chars[i] <= '9') {
-                // no type qualifier, OK
-                return true;
-            }
-            if (chars[i] == 'e' || chars[i] == 'E') {
-                // can't have an E at the last byte
-                return false;
-            }
-            if (!allowSigns
-                && (chars[i] == 'd'
-                    || chars[i] == 'D'
-                    || chars[i] == 'f'
-                    || chars[i] == 'F')) {
-                return foundDigit;
-            }
-            if (chars[i] == 'l'
-                || chars[i] == 'L') {
-                // not allowing L with an exponent
-                return foundDigit && !hasExp;
-            }
-            // last character is illegal
-            return false;
-        }
-        // allowSigns is true iff the val ends in 'E'
-        // found digit it to make sure weird stuff like '.' and '1E-' doesn't pass
-        return !allowSigns && foundDigit;
-    }
-}
diff --git a/src/test/org/apache/commons/lang2/LangTestSuite.java b/src/test/org/apache/commons/lang2/LangTestSuite.java
index 5f7357a..aaa0d27 100644
--- a/src/test/org/apache/commons/lang2/LangTestSuite.java
+++ b/src/test/org/apache/commons/lang2/LangTestSuite.java
@@ -69,8 +69,6 @@
         suite.addTest(LocaleUtilsTest.suite());
         suite.addTest(NotImplementedExceptionTest.suite());
         suite.addTest(NullArgumentExceptionTest.suite());
-        suite.addTest(NumberRangeTest.suite());
-        suite.addTest(NumberUtilsTest.suite());
         suite.addTest(ObjectUtilsTest.suite());
         suite.addTest(RandomStringUtilsTest.suite());
         suite.addTest(SerializationUtilsTest.suite());
diff --git a/src/test/org/apache/commons/lang2/NumberRangeTest.java b/src/test/org/apache/commons/lang2/NumberRangeTest.java
deleted file mode 100644
index 7c127c3..0000000
--- a/src/test/org/apache/commons/lang2/NumberRangeTest.java
+++ /dev/null
@@ -1,245 +0,0 @@
-/*
- * 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;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-/**
- * Test cases for the {@link NumberRange} class.
- *
- * @author <a href="mailto:chrise@esha.com">Christopher Elkins</a>
- * @author <a href="mailto:ridesmet@users.sourceforge.net">Ringo De Smet</a>
- * @author Tim O'Brien
- * @version $Revision$ $Date$
- */
-
-public final class NumberRangeTest extends TestCase {
-
-
-    private NumberRange tenToTwenty;
-    private NumberRange fifteenToTwentyFive;
-    private NumberRange fiveToNine;
-    private Number five;
-    private Number nine;
-    private Number ten;
-    private Number fifteen;
-    private Number twenty;
-    private Number twentyFive;
-
-    public NumberRangeTest(String name) {
-        super(name);
-    }
-
-    public void setUp() {
-        five       = new Integer(5);
-        nine      = new Double(9.0);
-        ten        = new Integer(10);
-        fifteen    = new Integer(15);
-        twenty     = new Integer(20);
-        twentyFive = new Integer(25);
-
-        tenToTwenty = new NumberRange(ten, twenty);
-        fifteenToTwentyFive = new NumberRange( fifteen, twentyFive);
-        fiveToNine = new NumberRange( five, nine );
-    }
-
-
-    public static Test suite() {
-        TestSuite suite = new TestSuite(NumberRangeTest.class);
-        suite.setName("NumberRange Tests");
-        return suite;
-    }
-
-    public void testMaxMin() {
-        boolean expected = true;
-        boolean result = tenToTwenty.getMaximum().equals(twenty);
-        assertEquals(expected, result);
-
-        expected = true;
-        result = tenToTwenty.getMinimum().equals(ten);
-        assertEquals(expected, result);
-    }
-
-    public void testEquals() {
-        boolean expected = false;
-        boolean result = tenToTwenty.equals(new NumberRange(five, ten));
-        assertEquals(expected, result);
-
-        expected = true;
-        result = tenToTwenty.equals(new NumberRange(ten, twenty));
-        assertEquals(expected, result);
-
-        expected = false;
-        result = tenToTwenty.equals(new NumberRange(ten, fifteen));
-        assertEquals(expected, result);
-
-        expected = false;
-        result = tenToTwenty.equals(new NumberRange(fifteen, twenty));
-        assertEquals(expected, result);
-    }
-    
-    public void testEqualsWithOtherObject() {
-        assertEquals( "A NumberRange should not equals a String object", false, fiveToNine.equals("TEST"));
-    }
-
-    public void testEqualsWithSameReference() {
-        assertEquals( "A NumberRange should equal itself", true, fiveToNine.equals(fiveToNine));
-    }
-
-    public void testEqualsNull() {
-        assertEquals( "A NumberRange should not equal null", false, fiveToNine.equals(null));
-    }
-
-    public void testHashCode() {
-        NumberRange nr = new NumberRange( new Integer(5), new Double(9.0));
-        assertEquals( "The hashCode of 5-9 should equals the hashcode of another NumberRange of the same min/max",
-                                fiveToNine.hashCode(), nr.hashCode());
-        assertTrue( "The hashCode of 10-20 should not equal the hashCode of 5-9", 
-                            fiveToNine.hashCode() != tenToTwenty.hashCode());                        
-    }
-
-    public void testIncludesNumber() {
-        boolean expected = false;
-        boolean result = tenToTwenty.includesNumber(five);
-        assertEquals(expected, result);
-
-        expected = true;
-        result = tenToTwenty.includesNumber(ten);
-        assertEquals(expected, result);
-
-        expected = true;
-        result = tenToTwenty.includesNumber(fifteen);
-        assertEquals(expected, result);
-
-        expected = true;
-        result = tenToTwenty.includesNumber(twenty);
-        assertEquals(expected, result);
-
-        expected = false;
-        result = tenToTwenty.includesNumber(twentyFive);
-        assertEquals(expected, result);
-    }
-
-    public void testIncludesNumberNull() {
-        boolean result = tenToTwenty.includesNumber(null);
-        assertEquals("Includes number should return false for null values", false, result);
-    }
-
-    public void testIncludesRange() {
-        boolean expected = false;
-        boolean result = tenToTwenty.includesRange(new NumberRange(five, ten));
-        assertEquals(expected, result);
-
-        expected = false;
-        result = tenToTwenty.includesRange(new NumberRange(five, fifteen));
-        assertEquals(expected, result);
-
-        expected = true;
-        result = tenToTwenty.includesRange(new NumberRange(ten, fifteen));
-        assertEquals(expected, result);
-
-        expected = true;
-        result = tenToTwenty.includesRange(new NumberRange(ten, twenty));
-        assertEquals(expected, result);
-
-        expected = true;
-        result = tenToTwenty.includesRange(new NumberRange(fifteen, twenty));
-        assertEquals(expected, result);
-
-        expected = false;
-        result = 
-            tenToTwenty.includesRange(new NumberRange(fifteen, twentyFive));
-        assertEquals(expected, result);
-
-        expected = false;
-        result = 
-            tenToTwenty.includesRange(new NumberRange(twenty, twentyFive));
-        assertEquals(expected, result);
-    }
-
-    public void testIncludesRangeNull() {
-        boolean result = tenToTwenty.includesRange(null);
-        assertEquals("Includes range should return false for null values", false, result);
-    }
-
-    public void testConstructor() {
-        NumberRange nr = new NumberRange( new Double(2.0));
-        assertEquals("Unexpected min on NumberRange", 2.0, nr.getMinimum().doubleValue(), Double.MIN_VALUE);
-        assertEquals("Unexpected max on NumberRange", 2.0, nr.getMaximum().doubleValue(), Double.MIN_VALUE);
-    }
-
-    public void testConstructorNullParameters() {
-        try {
-            NumberRange nr = new NumberRange(null);
-            fail("NumberRange(null) did not throw an exception.");
-        } catch (Exception e) {
-            assertTrue(    "NumberRange(null)", e instanceof NullPointerException);
-        }
-
-        try {
-            NumberRange nr = new NumberRange(five, null);
-            fail("NumberRange(five, null) did not throw an exception.");
-        } catch (Exception e) {
-            assertTrue("NumberRange(five, null)", e instanceof NullPointerException);
-        }
-
-        try {
-            NumberRange nr = new NumberRange(null, five);
-            fail("NumberRange(null, five) did not throw an exception.");
-        } catch (Exception e) {
-            assertTrue("NumberRange(null, five)", e instanceof NullPointerException);
-        }
-    }
-
-    public void testConstructorWithMaxLessThanMin() {
-        NumberRange nr = new NumberRange( new Double(2.0), new Double(1.0));
-        assertEquals("Unexpected min on NumberRange", 2.0, nr.getMinimum().doubleValue(), Double.MIN_VALUE);
-        assertEquals("Unexpected max on NumberRange", 2.0, nr.getMaximum().doubleValue(), Double.MIN_VALUE);
-    }
-
-    public void testOverlap() {
-        assertEquals( "5-9 should not overlap 10-20", false, fiveToNine.overlaps( tenToTwenty ));
-        assertEquals( "10-20 should overlap 15-25", true, tenToTwenty.overlaps( fifteenToTwentyFive ));
-    }
-
-    public void testOverlapNull() {
-        assertEquals( "5-9 should not overlap null", false, fiveToNine.overlaps( null ));
-    }
-
-    public void testToString() {
-        String expected = "10-20";
-        String result = tenToTwenty.toString();
-        assertEquals(expected, result);
-    }
-
-    public void testToStringWithNegatives() {
-        String expected = "(-20)-(-10)";
-        NumberRange nr = new NumberRange( new Integer(-20), new Integer(-10));
-        String result = nr.toString();
-        assertEquals(expected, result);
-
-        expected = "(-20)-10";
-        nr = new NumberRange( new Integer(-20), new Integer(10));
-        result = nr.toString();
-        assertEquals(expected, result);
-    }
-
-
-}
-
diff --git a/src/test/org/apache/commons/lang2/NumberUtilsTest.java b/src/test/org/apache/commons/lang2/NumberUtilsTest.java
deleted file mode 100644
index 35f0837..0000000
--- a/src/test/org/apache/commons/lang2/NumberUtilsTest.java
+++ /dev/null
@@ -1,524 +0,0 @@
-/*
- * 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;
-
-import java.math.BigDecimal;
-import java.math.BigInteger;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-/**
- * Unit tests {@link org.apache.commons.lang2.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
- * @version $Id$
- */
-public class NumberUtilsTest extends TestCase {
-
-    public NumberUtilsTest(String name) {
-        super(name);
-    }
-
-    public static Test suite() {
-        TestSuite suite = new TestSuite(NumberUtilsTest.class);
-        suite.setName("NumberUtils Tests");
-        return suite;
-    }
-
-    //---------------------------------------------------------------------
-
-    /**
-     * Test for int stringToInt(String)
-     */
-    public void testStringToIntString() {
-        assertTrue("stringToInt(String) 1 failed", NumberUtils.stringToInt("12345") == 12345);
-        assertTrue("stringToInt(String) 2 failed", NumberUtils.stringToInt("abc") == 0);
-    }
-
-    /**
-     * Test for int stringToInt(String, int)
-     */
-    public void testStringToIntStringI() {
-        assertTrue("stringToInt(String,int) 1 failed", NumberUtils.stringToInt("12345", 5) == 12345);
-        assertTrue("stringToInt(String,int) 2 failed", NumberUtils.stringToInt("1234.5", 5) == 5);
-    }
-
-    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) 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 BigInteger(Long.MAX_VALUE + "0"), NumberUtils.createNumber(Long.MAX_VALUE + "0L"));
-        assertEquals("createNumber(String) 7 failed", new Long(12345), NumberUtils.createNumber("12345L"));
-        assertEquals("createNumber(String) 8 failed", new Float("-1234.5"), NumberUtils.createNumber("-1234.5"));
-        assertEquals("createNumber(String) 9 failed", new Integer("-12345"), NumberUtils.createNumber("-12345"));
-        assertTrue("createNumber(String) 10 failed", 0xFADE == NumberUtils.createNumber("0xFADE").intValue());
-        assertTrue("createNumber(String) 11 failed", -0xFADE == NumberUtils.createNumber("-0xFADE").intValue());
-        assertEquals("createNumber(String) 12 failed", new Double("1.1E200"), NumberUtils.createNumber("1.1E200"));
-        assertEquals("createNumber(String) 13 failed", new Float("1.1E20"), NumberUtils.createNumber("1.1E20"));
-        assertEquals("createNumber(String) 14 failed", new Double("-1.1E200"), NumberUtils.createNumber("-1.1E200"));
-        assertEquals("createNumber(String) 15 failed", new Double("1.1E-200"), NumberUtils.createNumber("1.1E-200"));
-        assertEquals("createNumber(String) 16 failed", new Double("1.1E-200"), NumberUtils.createNumber("1.1E-200"));
-
-        // 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"));
-    }
-
-    public void testCreateDouble() {
-        assertEquals("createDouble(String) failed", new Double("1234.5"), NumberUtils.createDouble("1234.5"));
-    }
-
-    public void testCreateInteger() {
-        assertEquals("createInteger(String) failed", new Integer("12345"), NumberUtils.createInteger("12345"));
-    }
-
-    public void testCreateLong() {
-        assertEquals("createInteger(String) failed", new Long("12345"), NumberUtils.createLong("12345"));
-    }
-
-    public void testCreateBigInteger() {
-        assertEquals("createBigInteger(String) failed", new BigInteger("12345"), NumberUtils.createBigInteger("12345"));
-    }
-
-    public void testCreateBigDecimal() {
-        assertEquals("createBigDecimal(String) failed", new BigDecimal("1234.5"), NumberUtils.createBigDecimal("1234.5"));
-    }
-
-    public void testMinimumLong() {
-        assertEquals("minimum(long,long,long) 1 failed", 12345L, NumberUtils.minimum(12345L, 12345L + 1L, 12345L + 2L));
-        assertEquals("minimum(long,long,long) 2 failed", 12345L, NumberUtils.minimum(12345L + 1L, 12345L, 12345 + 2L));
-        assertEquals("minimum(long,long,long) 3 failed", 12345L, NumberUtils.minimum(12345L + 1L, 12345L + 2L, 12345L));
-        assertEquals("minimum(long,long,long) 4 failed", 12345L, NumberUtils.minimum(12345L + 1L, 12345L, 12345L));
-        assertEquals("minimum(long,long,long) 5 failed", 12345L, NumberUtils.minimum(12345L, 12345L, 12345L));
-
-    }
-
-    public void testMinimumInt() {
-        assertEquals("minimum(int,int,int) 1 failed", 12345, NumberUtils.minimum(12345, 12345 + 1, 12345 + 2));
-        assertEquals("minimum(int,int,int) 2 failed", 12345, NumberUtils.minimum(12345 + 1, 12345, 12345 + 2));
-        assertEquals("minimum(int,int,int) 3 failed", 12345, NumberUtils.minimum(12345 + 1, 12345 + 2, 12345));
-        assertEquals("minimum(int,int,int) 4 failed", 12345, NumberUtils.minimum(12345 + 1, 12345, 12345));
-        assertEquals("minimum(int,int,int) 5 failed", 12345, NumberUtils.minimum(12345, 12345, 12345));
-
-    }
-
-    public void testMaximumLong() {
-        assertEquals("maximum(long,long,long) 1 failed", 12345L, NumberUtils.maximum(12345L, 12345L - 1L, 12345L - 2L));
-        assertEquals("maximum(long,long,long) 2 failed", 12345L, NumberUtils.maximum(12345L - 1L, 12345L, 12345L - 2L));
-        assertEquals("maximum(long,long,long) 3 failed", 12345L, NumberUtils.maximum(12345L - 1L, 12345L - 2L, 12345L));
-        assertEquals("maximum(long,long,long) 4 failed", 12345L, NumberUtils.maximum(12345L - 1L, 12345L, 12345L));
-        assertEquals("maximum(long,long,long) 5 failed", 12345L, NumberUtils.maximum(12345L, 12345L, 12345L));
-
-    }
-
-    public void testMaximumInt() {
-        assertEquals("maximum(int,int,int) 1 failed", 12345, NumberUtils.maximum(12345, 12345 - 1, 12345 - 2));
-        assertEquals("maximum(int,int,int) 2 failed", 12345, NumberUtils.maximum(12345 - 1, 12345, 12345 - 2));
-        assertEquals("maximum(int,int,int) 3 failed", 12345, NumberUtils.maximum(12345 - 1, 12345 - 2, 12345));
-        assertEquals("maximum(int,int,int) 4 failed", 12345, NumberUtils.maximum(12345 - 1, 12345, 12345));
-        assertEquals("maximum(int,int,int) 5 failed", 12345, NumberUtils.maximum(12345, 12345, 12345));
-
-    }
-
-    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)); 
-
-    }
-    
-    public void testIsNumberInvalidInput() {
-        String val = "0x";
-        assertEquals("isNumber() with 0x wasn't false",  false, NumberUtils.isNumber(val));
-        val = "0x3x3";
-        assertEquals("isNumber() with 0x3x3 wasn't false",  false, NumberUtils.isNumber(val));
-        val = "20EE-3";
-        assertEquals("isNumber() with 20EE-3 wasn't false",  false, NumberUtils.isNumber(val));
-        val = "2435q";
-        assertEquals("isNumber() with 2435q wasn't false",  false, NumberUtils.isNumber(val));
-        val = ".";
-        assertEquals("isNumber() with . wasn't false",  false, NumberUtils.isNumber(val));
-
-    }
-
-    private boolean checkCreateNumber(String val) {
-        try {
-            Object obj = NumberUtils.createNumber(val);
-            if (obj == null) {
-                return false;
-            }
-            return true;
-        } catch (NumberFormatException e) {
-            return false;
-        } catch (NullPointerException e) {
-            return false;
-        }
-    }
-
-    public void testPublicNoArgConstructor() {
-        try {
-            NumberUtils nu = new NumberUtils();
-        } catch( Exception e ) {
-            fail( "Error calling public no-arg constructor" );
-        }
-    }
-    
-}