1 16 17 package org.apache.commons.betwixt.strategy; 18 19 import junit.framework.Test; 20 import junit.framework.TestCase; 21 import junit.framework.TestSuite; 22 23 import org.apache.commons.beanutils.ConvertUtils; 24 import org.apache.commons.beanutils.Converter; 25 import org.apache.commons.betwixt.expression.Context; 26 27 33 public class TestObjectStringConverters extends TestCase 34 { 35 36 protected Context dummyContext = new Context(); 37 38 public static Test suite() { 39 return new TestSuite(TestObjectStringConverters.class); 40 } 41 42 public TestObjectStringConverters(String testName) { 43 super(testName); 44 } 45 46 public void testBaseConverter() { 47 Object test = new Object () { 48 public String toString() { 49 return "funciporcini"; 50 } 51 }; 52 53 ObjectStringConverter converter = new ObjectStringConverter(); 54 String stringFromObject = converter.objectToString( null, Object .class, "raspberry", dummyContext ); 55 assertEquals("Null should return empty string", "", stringFromObject); 56 stringFromObject = converter.objectToString( test, Object .class, "raspberry", dummyContext ); 57 assertEquals("Object should return toString", "funciporcini", stringFromObject); 58 59 Object objectFromString = converter.stringToObject( "Mungo Jerry", Object .class, "strawberry", dummyContext ); 60 assertEquals("String should return itself", "Mungo Jerry", objectFromString); 61 } 62 63 64 public void testConvertUtilsConverter() throws Exception { 65 ObjectStringConverter converter = new ConvertUtilsObjectStringConverter(); 66 commonTestForConvertUtilsConverters( converter ); 67 } 68 69 private void commonTestForConvertUtilsConverters(ObjectStringConverter objectStringConverter) { 70 Converter converter = new Converter() { 71 public Object convert(Class type, Object value) { 72 if ( type == SecurityManager .class) { 73 return "Life, The Universe And Everything"; 74 } 75 return "The answer is " + value.toString(); 76 } 77 }; 78 79 Long test = new Long (42); 80 81 ConvertUtils.register( converter, Object .class ); 82 ConvertUtils.register( converter, String .class ); 83 ConvertUtils.register( converter, SecurityManager .class ); 84 85 String stringFromObject = objectStringConverter.objectToString( null, Object .class, "gooseberry", dummyContext ); 86 assertEquals("Null should return empty string", "", stringFromObject); 87 stringFromObject = objectStringConverter.objectToString( test, Object .class, "logonberry", dummyContext ); 88 assertEquals("Normal object conversion (1)", "The answer is 42", stringFromObject); 89 90 91 Object objectFromString = objectStringConverter.stringToObject( 92 "Forty Two", Object .class, "damsen", dummyContext ); 93 assertEquals("Normal object conversion (2)", "The answer is Forty Two", objectFromString); 94 objectFromString = objectStringConverter.stringToObject( 95 "Trillian", SecurityManager .class, "cranberry", dummyContext ); 96 assertEquals("Special object conversion", "Life, The Universe And Everything", objectFromString); 97 98 ConvertUtils.deregister(); 99 } 100 101 public void testDefaultOSConverter() { 102 ObjectStringConverter converter = new DefaultObjectStringConverter(); 103 commonTestForConvertUtilsConverters( converter ); 104 } 105 106 public void testDefaultOSConverterDates() { 107 108 109 Converter converter = new Converter() { 110 public Object convert(Class type, Object value) { 111 return "Arthur Dent"; 112 } 113 }; 114 115 ConvertUtils.register( converter, java.sql.Date .class ); 116 117 converter = new Converter() { 118 public Object convert(Class type, Object value) { 119 return "Ford Prefect"; 120 } 121 }; 122 123 ConvertUtils.register( converter, String .class ); 124 125 converter = new Converter() { 126 public Object convert(Class type, Object value) { 127 return "Marvin"; 128 } 129 }; 130 131 ConvertUtils.register( converter, java.util.Date .class ); 132 133 java.util.Date utilNow = new java.util.Date (); 134 String nowAsString = utilNow.toString(); 135 java.sql.Date sqlNow = new java.sql.Date (System.currentTimeMillis()); 136 ObjectStringConverter objectStringConverter = new DefaultObjectStringConverter(); 137 138 String stringFromObject = objectStringConverter.objectToString( 139 utilNow, java.util.Date .class, "blackcurrent", dummyContext ); 140 assertEquals( "String output same as java.util.Date.toString() (1)", utilNow.toString(), stringFromObject ); 141 142 stringFromObject = objectStringConverter.objectToString( 143 sqlNow, java.util.Date .class, "redcurrent", dummyContext ); 144 assertEquals( "String output same as java.util.Date.toString() (2)", utilNow.toString(), stringFromObject ); 145 146 stringFromObject = objectStringConverter.objectToString( 147 utilNow, java.sql.Date .class, "whitecurrent", dummyContext ); 148 assertEquals( "Should use converter (2)", "Ford Prefect", stringFromObject ); 149 150 Object objectFromString = objectStringConverter.stringToObject( 151 nowAsString, java.sql.Date .class, "blackberry", dummyContext ); 152 assertEquals( "Should use converter (3)", "Ford Prefect", stringFromObject ); 153 objectFromString = objectStringConverter.stringToObject( 154 nowAsString, java.util.Date .class, "tayberry", dummyContext ); 155 assertTrue( "Date should be returned", objectFromString instanceof java.util.Date ); 156 assertEquals( "Date returned should be the same", nowAsString, objectFromString.toString()); 157 158 ConvertUtils.deregister(); 159 } 160 } 161 162 163 | Popular Tags |