You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ga...@apache.org on 2009/04/14 19:27:05 UTC

svn commit: r764890 - /geronimo/sandbox/blueprint/org.apache.felix.blueprint/src/test/java/org/apache/felix/blueprint/convert/ConversionServiceImplTest.java

Author: gawor
Date: Tue Apr 14 17:27:05 2009
New Revision: 764890

URL: http://svn.apache.org/viewvc?rev=764890&view=rev
Log:
merge additional conversion service tests

Modified:
    geronimo/sandbox/blueprint/org.apache.felix.blueprint/src/test/java/org/apache/felix/blueprint/convert/ConversionServiceImplTest.java

Modified: geronimo/sandbox/blueprint/org.apache.felix.blueprint/src/test/java/org/apache/felix/blueprint/convert/ConversionServiceImplTest.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/blueprint/org.apache.felix.blueprint/src/test/java/org/apache/felix/blueprint/convert/ConversionServiceImplTest.java?rev=764890&r1=764889&r2=764890&view=diff
==============================================================================
--- geronimo/sandbox/blueprint/org.apache.felix.blueprint/src/test/java/org/apache/felix/blueprint/convert/ConversionServiceImplTest.java (original)
+++ geronimo/sandbox/blueprint/org.apache.felix.blueprint/src/test/java/org/apache/felix/blueprint/convert/ConversionServiceImplTest.java Tue Apr 14 17:27:05 2009
@@ -21,11 +21,13 @@
 import java.net.URI;
 import java.net.URL;
 import java.math.BigInteger;
+import java.util.Locale;
 import java.util.Properties;
 import java.io.ByteArrayOutputStream;
 
 import junit.framework.TestCase;
 import org.osgi.service.blueprint.convert.ConversionService;
+import org.osgi.service.blueprint.convert.Converter;
 
 public class ConversionServiceImplTest extends TestCase {
 
@@ -85,9 +87,8 @@
 
     public void testConvertOther() throws Exception {
         assertEquals(URI.create("urn:test"), service.convert("urn:test", URI.class));
-        assertEquals(new URL("file://test"), service.convert("file://test", URL.class));
+        assertEquals(new URL("file:/test"), service.convert("file:/test", URL.class));
         assertEquals(new BigInteger("12345"), service.convert("12345", BigInteger.class));
-
     }
 
     public void testConvertProperties() throws Exception {
@@ -101,6 +102,82 @@
     }
 
     public void testConvertLocale() throws Exception {
-        // TODO
+        Object result;
+        result = service.convert("en", Locale.class);
+        assertTrue(result instanceof Locale);
+        assertEquals(new Locale("en"), result);
+        
+        result = service.convert("de_DE", Locale.class);
+        assertTrue(result instanceof Locale);
+        assertEquals(new Locale("de", "DE"), result);
+        
+        result = service.convert("_GB", Locale.class);
+        assertTrue(result instanceof Locale);
+        assertEquals(new Locale("", "GB"), result);
+        
+        result = service.convert("en_US_WIN", Locale.class);
+        assertTrue(result instanceof Locale);
+        assertEquals(new Locale("en", "US", "WIN"), result);
+        
+        result = service.convert("de__POSIX", Locale.class);
+        assertTrue(result instanceof Locale);
+        assertEquals(new Locale("de", "", "POSIX"), result);
+    }
+    
+    public void testCustom() throws Exception {
+        ConversionServiceImpl s = new ConversionServiceImpl();
+        s.registerConverter(new RegionConverter());
+        s.registerConverter(new EuRegionConverter());
+        
+        // lookup on a specific registered converter type
+        Object result;
+        result = s.convert(null, Region.class);
+        assertTrue(result instanceof Region);
+        assertFalse(result instanceof EuRegion);
+                
+        result = s.convert(null, EuRegion.class);
+        assertTrue(result instanceof EuRegion);
+        
+        // find first converter that matches the type
+        s = new ConversionServiceImpl();
+        s.registerConverter(new AsianRegionConverter());
+        s.registerConverter(new EuRegionConverter());
+        
+        result = s.convert(null, Region.class);
+        assertTrue(result instanceof AsianRegion || result instanceof EuRegion);
+    }
+    
+    private interface Region {} 
+    
+    private interface EuRegion extends Region {}
+    
+    private interface AsianRegion extends Region {}
+    
+    private static class RegionConverter implements Converter {
+        public Object convert(Object source) throws Exception {
+            return new Region() {} ;
+        }
+        public Class getTargetClass() {
+            return Region.class;
+        }       
+    }
+    
+    private static class EuRegionConverter implements Converter {
+        public Object convert(Object source) throws Exception {
+            return new EuRegion() {} ;
+        }
+        public Class getTargetClass() {
+            return EuRegion.class;
+        }       
+    }
+    
+    private static class AsianRegionConverter implements Converter {
+        public Object convert(Object source) throws Exception {
+            return new AsianRegion() {} ;
+        }
+        public Class getTargetClass() {
+            return AsianRegion.class;
+        }       
     }
+
 }