/* * $Id$ * * Copyright 2006, The jCoderZ.org Project. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials * provided with the distribution. * * Neither the name of the jCoderZ.org Project nor the names of * its contributors may be used to endorse or promote products * derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.jcoderz.commons.util; import junit.framework.TestCase; public class NumberUtilTest extends TestCase { public void testCountDigits () { checkNumberOfDigits(12345); } public void testCountDigitsNegative () { checkNumberOfDigits(-12345); } public void testCountDigitsZero () { assertEquals("Wrong number-of digits for '" + 0 + "'.", 1, NumberUtil.countDigits(1)); } public void testCountDigitsHigh () { checkNumberOfDigits(123452434); } public void testToStringLongInt () { checkToString(1000, 1, "100.0"); } public void testToStringLongIntZeroScale () { checkToString(1000, 0, "1000"); } public void testToStringLongIntScale2 () { checkToString(10, 2, "0.10"); } public void testToStringLongIntScale3 () { checkToString(10, 3, "0.010"); } public void testToStringLongIntHighScale () { checkToString(10, 5, "0.00010"); } public void testToStringLongIntHighScaleAndValue () { checkToString(987654321, 5, "9876.54321"); } public void testToStringLongIntErrorPattern () { checkToString(58000, 5, "0.58000"); } public void testToStringLongIntNegative () { checkToString(-58000, 5, "-0.58000"); } public void testToStringLongIntErrorPatternZero () { checkToString(0, 5, "0.00000"); } private void checkNumberOfDigits (long test) { final int result = 1 + (int) Math.log10(Math.abs(test)); assertEquals("Wrong number-of digits for '" + test + "'.", result, NumberUtil.countDigits(test)); } private void checkToString (int test, int scale, String string) { assertEquals("Wrong string digits for " + test + " with" + "scale " + scale + " .", string, NumberUtil.toString(test, scale)); } }