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