On 7/12/07, Paul Benedict <[EMAIL PROTECTED]> wrote:
This is trivial, but supplied is spelled wrong. Needs two P's.
Thanks, fixed :) Niall
On 7/11/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > > Author: niallp > Date: Wed Jul 11 21:53:26 2007 > New Revision: 555489 > > URL: http://svn.apache.org/viewvc?view=rev&rev=555489 > Log: > BEANUTILS-44 FloatLocaleConverter cannot parse negative values - reported > by Paul Jenkins > > Modified: > > jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/locale/converters/FloatLocaleConverter.java > > jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/locale/converters/FloatLocaleConverterTestCase.java > > Modified: > jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/locale/converters/FloatLocaleConverter.java > URL: > http://svn.apache.org/viewvc/jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/locale/converters/FloatLocaleConverter.java?view=diff&rev=555489&r1=555488&r2=555489 > > ============================================================================== > --- > jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/locale/converters/FloatLocaleConverter.java > (original) > +++ > jakarta/commons/proper/beanutils/trunk/src/java/org/apache/commons/beanutils/locale/converters/FloatLocaleConverter.java > Wed Jul 11 21:53:26 2007 > @@ -214,8 +214,10 @@ > */ > protected Object parse(Object value, String pattern) throws > ParseException { > final Number parsed = (Number) super.parse(value, pattern); > - if( Math.abs(parsed.doubleValue() - parsed.floatValue()) > > parsed.floatValue() * 0.00001 ) { > - throw new ConversionException("Suplied number is not of type > Float: "+parsed.longValue()); > + double doubleValue = parsed.doubleValue(); > + double posDouble = (doubleValue >= (double)0) ? doubleValue : > (doubleValue * (double)-1); > + if (posDouble < Float.MIN_VALUE || posDouble > Float.MAX_VALUE) { > + throw new ConversionException("Suplied number is not of type > Float: "+parsed); > } > return new Float(parsed.floatValue()); // unlike superclass it > returns Float type > } > > Modified: > jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/locale/converters/FloatLocaleConverterTestCase.java > URL: > http://svn.apache.org/viewvc/jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/locale/converters/FloatLocaleConverterTestCase.java?view=diff&rev=555489&r1=555488&r2=555489 > > ============================================================================== > --- > jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/locale/converters/FloatLocaleConverterTestCase.java > (original) > +++ > jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/locale/converters/FloatLocaleConverterTestCase.java > Wed Jul 11 21:53:26 2007 > @@ -17,6 +17,8 @@ > > package org.apache.commons.beanutils.locale.converters; > > +import java.text.DecimalFormat; > +import org.apache.commons.beanutils.ConversionException; > > /** > * Test Case for the FloatLocaleConverter class. > @@ -256,6 +258,49 @@ > convertInvalid(converter, defaultValue); > convertNull(converter, defaultValue); > > + } > + > + /** > + * Test Float limits > + */ > + public void testFloatLimits() { > + > + converter = new FloatLocaleConverter(defaultLocale, > defaultDecimalPattern); > + DecimalFormat fmt = new > DecimalFormat("#.#############################################################"); > + > + assertEquals(new Float(-0.12), converter.convert("-0.12")); > + assertEquals("Positive Float.MAX_VALUE", new Float( > Float.MAX_VALUE), converter.convert(fmt.format(Float.MAX_VALUE))); > + assertEquals("Positive Float.MIN_VALUE", new Float( > Float.MIN_VALUE), converter.convert(fmt.format(Float.MIN_VALUE))); > + > + assertEquals("Negative Float.MAX_VALUE", new Float( > Float.MAX_VALUE * -1), converter.convert(fmt.format(Float.MAX_VALUE * > -1))); > + assertEquals("Negative Float.MIN_VALUE", new Float( > Float.MIN_VALUE * -1), converter.convert(fmt.format(Float.MIN_VALUE * > -1))); > + > + > + try { > + converter.convert(fmt.format((double)Float.MAX_VALUE * > (double)10)); > + fail("Positive Too Large should throw ConversionException"); > + } catch (ConversionException e) { > + // expected result > + } > + try { > + converter.convert(fmt.format((double)Float.MAX_VALUE * > (double)-10)); > + fail("Negative Too Large should throw ConversionException"); > + } catch (ConversionException e) { > + // expected result > + } > + > + try { > + converter.convert(fmt.format((double)Float.MIN_VALUE / > (double)10)); > + fail("Positive Too Small should throw ConversionException"); > + } catch (ConversionException e) { > + // expected result > + } > + try { > + converter.convert(fmt.format((double)Float.MIN_VALUE / > (double)-10)); > + fail("Negative Too Small should throw ConversionException"); > + } catch (ConversionException e) { > + // expected result > + } > } > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > >
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]