/* * Copyright (c) 2016, grossmann * 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 jo-widgets.org 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 COPYRIGHT HOLDERS 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 jo-widgets.org 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.jowidgets.impl.convert; import java.util.Locale; import org.jowidgets.api.convert.IConverter; import org.junit.Test; import junit.framework.Assert; public class FloatingNumberConverterTest { public static final DefaultConverterProvider CONVERTER_PROVIDER = new DefaultConverterProvider(); @Test public void testDoubleNumberConverterGerman() { final IConverter<Double> converter = CONVERTER_PROVIDER.getConverterFromLocale(Locale.GERMANY, Double.class); Assert.assertEquals(13.1834d, converter.convertToObject("13,1834")); Assert.assertEquals(-13.1834d, converter.convertToObject("-13,1834")); Assert.assertEquals(32234234.1834d, converter.convertToObject("32.234.234,1834")); Assert.assertEquals(null, converter.convertToObject("13,18,3")); Assert.assertEquals(0.18d, converter.convertToObject(",18")); Assert.assertEquals(0.1856d, converter.convertToObject("..,18..56")); Assert.assertEquals(1.23E123d, converter.convertToObject("1,23E123")); Assert.assertEquals(1.223E123d, converter.convertToObject("12,23E122")); Assert.assertEquals(null, converter.convertToObject("1,23E")); } @Test public void testDoubleNumberConverterUS() { final IConverter<Double> converter = CONVERTER_PROVIDER.getConverterFromLocale(Locale.US, Double.class); Assert.assertEquals(13.1834d, converter.convertToObject("13.1834")); Assert.assertEquals(-13.1834d, converter.convertToObject("-13.1834")); Assert.assertEquals(32234234.1834d, converter.convertToObject("32,234,234.1834")); Assert.assertEquals(null, converter.convertToObject("13.18.3")); Assert.assertEquals(0.18d, converter.convertToObject(".18")); Assert.assertEquals(0.1856d, converter.convertToObject(",,.18,,56")); Assert.assertEquals(1.23E123d, converter.convertToObject("1.23E123")); Assert.assertEquals(1.223E123d, converter.convertToObject("12.23E122")); Assert.assertEquals(null, converter.convertToObject("1.23E")); } @Test public void testDoubleNumberConverterValidationGerman() { final IConverter<Double> converter = CONVERTER_PROVIDER.getConverterFromLocale(Locale.GERMANY, Double.class); Assert.assertTrue(converter.getStringValidator().validate("13,1834").isValid()); Assert.assertTrue(converter.getStringValidator().validate("-13,1834").isValid()); Assert.assertTrue(converter.getStringValidator().validate("32.234.234,1834").isValid()); Assert.assertFalse(converter.getStringValidator().validate("13,18,3").isValid()); Assert.assertTrue(converter.getStringValidator().validate(",18").isValid()); Assert.assertTrue(converter.getStringValidator().validate("..,18..56").isValid()); Assert.assertFalse(converter.getStringValidator().validate("1,23E").isValid()); } @Test public void testDoubleNumberConverterValidationUS() { final IConverter<Double> converter = CONVERTER_PROVIDER.getConverterFromLocale(Locale.US, Double.class); Assert.assertTrue(converter.getStringValidator().validate("13.1834").isValid()); Assert.assertTrue(converter.getStringValidator().validate("-13.1834").isValid()); Assert.assertTrue(converter.getStringValidator().validate("32,234,234.1834").isValid()); Assert.assertFalse(converter.getStringValidator().validate("13.18.3").isValid()); Assert.assertTrue(converter.getStringValidator().validate(".18").isValid()); Assert.assertTrue(converter.getStringValidator().validate(",,.18,,56").isValid()); Assert.assertFalse(converter.getStringValidator().validate("1.23E").isValid()); } @Test public void testDoubleNumberConverterVerifyGerman() { final IConverter<Double> converter = CONVERTER_PROVIDER.getConverterFromLocale(Locale.GERMANY, Double.class); final String acceptingRegExp = converter.getAcceptingRegExp(); Assert.assertTrue("13,1834".matches(acceptingRegExp)); Assert.assertTrue("-13,1834".matches(acceptingRegExp)); Assert.assertTrue("32.234.234,1834".matches(acceptingRegExp)); Assert.assertTrue("13,18,3".matches(acceptingRegExp)); Assert.assertTrue(",18".matches(acceptingRegExp)); Assert.assertTrue("..,18..56".matches(acceptingRegExp)); Assert.assertTrue("1,23E123".matches(acceptingRegExp)); Assert.assertFalse("1,23e123".matches(acceptingRegExp)); } @Test public void testDoubleNumberConverterVerifyUS() { final IConverter<Double> converter = CONVERTER_PROVIDER.getConverterFromLocale(Locale.GERMANY, Double.class); final String acceptingRegExp = converter.getAcceptingRegExp(); Assert.assertTrue("13.1834".matches(acceptingRegExp)); Assert.assertTrue("-13.1834".matches(acceptingRegExp)); Assert.assertTrue("32,234,234.1834".matches(acceptingRegExp)); Assert.assertTrue("13.18.3".matches(acceptingRegExp)); Assert.assertTrue(".18".matches(acceptingRegExp)); Assert.assertTrue(",,.18,,56".matches(acceptingRegExp)); Assert.assertTrue("1.23E123".matches(acceptingRegExp)); Assert.assertFalse("1.23e123".matches(acceptingRegExp)); } }