1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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 /***
28 * Test harness for ObjectStringConverter implementations
29 *
30 * @author <a href="mailto:rdonkin at apache.org">Robert Burrell Donkin</a>
31 * @version $Id: TestObjectStringConverters.java 155402 2005-02-26 12:52:00Z dirkv $
32 */
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