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 }