Author: skitching
Date: Sat May 28 16:34:52 2005
New Revision: 178904

URL: http://svn.apache.org/viewcvs?rev=178904&view=rev
Log:
Added test method to check that Locale-aware converters can happily be
registered with the non-locale-aware ConvertUtils class.

Modified:
    
jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/locale/LocaleBeanificationTestCase.java

Modified: 
jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/locale/LocaleBeanificationTestCase.java
URL: 
http://svn.apache.org/viewcvs/jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/locale/LocaleBeanificationTestCase.java?rev=178904&r1=178903&r2=178904&view=diff
==============================================================================
--- 
jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/locale/LocaleBeanificationTestCase.java
 (original)
+++ 
jakarta/commons/proper/beanutils/trunk/src/test/org/apache/commons/beanutils/locale/LocaleBeanificationTestCase.java
 Sat May 28 16:34:52 2005
@@ -30,6 +30,13 @@
 
 import org.apache.commons.beanutils.ContextClassLoaderLocal;
 import org.apache.commons.beanutils.PrimitiveBean;
+import org.apache.commons.beanutils.BeanUtilsBean;
+import org.apache.commons.beanutils.Converter;
+import org.apache.commons.beanutils.ConvertUtils;
+import org.apache.commons.beanutils.ConversionException;
+import org.apache.commons.beanutils.locale.converters.LongLocaleConverter;
+
+import java.util.Locale;
 
 /**
  * <p>
@@ -457,6 +464,52 @@
         assertEquals("Start thread gets right instance", beanOne, ccll.get()); 
         ccll.unset();
         assertTrue("Unset works", !beanOne.equals(ccll.get())); 
+    }
+    
+    /** 
+     * Test registering a locale-aware converter with the standard 
ConvertUtils.
+     */
+    public void testLocaleAwareConverterInConvertUtils() throws Exception {
+        try {
+            // first use the default non-locale-aware converter
+            try {
+                Long data = (Long) ConvertUtils.convert("777", Long.class);
+                assertEquals("Standard format long converted ok", 777, 
data.longValue());
+            }
+            catch(ConversionException ex) {
+                fail("Unable to convert non-locale-aware number 777");
+            }
+
+            // now try default converter with special delimiters
+            try {
+                // This conversion will cause an error. But the default
+                // Long converter is set up to return a default value of
+                // zero on error.
+                Long data = (Long) ConvertUtils.convert("1.000.000", 
Long.class);
+                assertEquals("Standard format behaved as expected", 0, 
data.longValue());
+            }
+            catch(ConversionException ex) {
+                fail("Unexpected exception from standard Long converter.");
+            }
+            
+            // Now try using a locale-aware converter together with 
+            // locale-specific input string. Note that in the german locale, 
+            // large numbers can be split up into groups of three digits 
+            // using a dot character (and comma is the decimal-point 
indicator).
+            try {
+                
+                Locale germanLocale = Locale.GERMAN;
+                LongLocaleConverter longLocaleConverter = new 
LongLocaleConverter(germanLocale);
+                ConvertUtils.register(longLocaleConverter, Long.class);
+
+                Long data = (Long) ConvertUtils.convert("1.000.000", 
Long.class);
+                assertEquals("German-format long converted ok", 1000000, 
data.longValue());
+            } catch(ConversionException ex) {
+                fail("Unable to convert german-format number");
+            }
+        } finally {
+            ConvertUtils.deregister();
+        }
     }
     
     private boolean isPre14JVM() {



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to