001 package org.picocontainer.converters; 002 003 import org.junit.Test; 004 005 import javax.swing.JPanel; 006 import java.io.File; 007 import java.net.MalformedURLException; 008 import java.net.URL; 009 010 import static junit.framework.Assert.assertFalse; 011 import static junit.framework.Assert.assertTrue; 012 import static org.junit.Assert.assertEquals; 013 014 public class BuiltInConverterTestCase { 015 BuiltInConverters bic = new BuiltInConverters(); 016 017 @Test 018 public void canConvertAllPrimitiveTypes() { 019 assertTrue(bic.canConvert(Integer.class)); 020 assertTrue(bic.canConvert(Integer.TYPE)); 021 assertTrue(bic.canConvert(Long.class)); 022 assertTrue(bic.canConvert(Long.TYPE)); 023 assertTrue(bic.canConvert(Byte.class)); 024 assertTrue(bic.canConvert(Byte.TYPE)); 025 assertTrue(bic.canConvert(Double.class)); 026 assertTrue(bic.canConvert(Double.TYPE)); 027 assertTrue(bic.canConvert(Float.class)); 028 assertTrue(bic.canConvert(Float.TYPE)); 029 assertTrue(bic.canConvert(Character.class)); 030 assertTrue(bic.canConvert(Character.TYPE)); 031 assertTrue(bic.canConvert(Short.class)); 032 assertTrue(bic.canConvert(Short.TYPE)); 033 assertTrue(bic.canConvert(Boolean.class)); 034 assertTrue(bic.canConvert(Boolean.TYPE)); 035 036 assertEquals(12, bic.convert("12", Integer.class)); 037 assertEquals(12, bic.convert("12", Integer.TYPE)); 038 assertEquals(12345678901L, bic.convert("12345678901",Long.TYPE)); 039 assertEquals(12345678901L, bic.convert("12345678901",Long.class)); 040 assertEquals((byte)12, bic.convert("12", Byte.class)); 041 assertEquals((byte)12, bic.convert("12", Byte.TYPE)); 042 assertEquals(2.22, bic.convert("2.22", Double.class)); 043 assertEquals(2.22, bic.convert("2.22", Double.TYPE)); 044 assertEquals(1.11F, bic.convert("1.11", Float.class)); 045 assertEquals(1.11F, bic.convert("1.11", Float.TYPE)); 046 assertEquals('a', bic.convert("a", Character.class)); 047 assertEquals('a', bic.convert("a", Character.TYPE)); 048 assertEquals((short)12, bic.convert("12", Short.class)); 049 assertEquals((short)12, bic.convert("12", Short.TYPE)); 050 assertEquals(Boolean.TRUE, bic.convert("TRUE", Boolean.class)); 051 assertEquals(true, bic.convert("TRUE", Boolean.TYPE)); 052 } 053 054 055 @Test 056 public void canConvertFileAndURL() throws MalformedURLException { 057 assertTrue(bic.canConvert(File.class)); 058 assertTrue(bic.canConvert(URL.class)); 059 assertEquals(new File("c:\\foo"), bic.convert("c:\\foo", File.class)); 060 assertEquals(new URL("http://example.com"), bic.convert("http://example.com", URL.class)); 061 } 062 063 @Test 064 public void canAddCustomConverter() { 065 bic.addConverter(new JPanelConverter(), JPanel.class); 066 assertTrue(bic.convert("anything", JPanel.class) instanceof JPanel); 067 } 068 069 @SuppressWarnings("serial") 070 @Test 071 public void canSupplementBuiltInConverters() { 072 assertFalse(bic.canConvert(JPanel.class)); 073 074 BuiltInConverters bicWithJPanel = new BuiltInConverters() { 075 @Override 076 protected void addBuiltInConverters() { 077 super.addBuiltInConverters(); 078 super.addConverter(new JPanelConverter(), JPanel.class); 079 } 080 }; 081 assertEquals(Boolean.TRUE, bicWithJPanel.convert("TRUE", Boolean.class)); 082 assertTrue(bicWithJPanel.convert("anything", JPanel.class) instanceof JPanel); 083 084 } 085 086 private static class JPanelConverter implements Converter<JPanel> { 087 public JPanel convert(String paramValue) { 088 return new JPanel(); 089 } 090 } 091 092 093 }