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
30
31
32
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
71
72
73
74 public void testConvertUtilsObjectStringConverter() throws Exception {
75 ConvertUtilsObjectStringConverter converter = new ConvertUtilsObjectStringConverter();
76 assertEquals("", converter.stringToObject(null,null, null, null));
77 }
78
79 private void commonTestForConvertUtilsConverters(ObjectStringConverter objectStringConverter) {
80 Converter converter = new Converter() {
81 public Object convert(Class type, Object value) {
82 if ( type == SecurityManager.class) {
83 return "Life, The Universe And Everything";
84 }
85 return "The answer is " + value.toString();
86 }
87 };
88
89 Long test = new Long(42);
90
91 ConvertUtils.register( converter, Object.class );
92 ConvertUtils.register( converter, String.class );
93 ConvertUtils.register( converter, SecurityManager.class );
94
95 String stringFromObject = objectStringConverter.objectToString( null, Object.class, "gooseberry", dummyContext );
96 assertEquals("Null should return empty string", "", stringFromObject);
97 stringFromObject = objectStringConverter.objectToString( test, Object.class, "logonberry", dummyContext );
98 assertEquals("Normal object conversion (1)", "The answer is 42", stringFromObject);
99
100
101 Object objectFromString = objectStringConverter.stringToObject(
102 "Forty Two", Object.class, "damsen", dummyContext );
103 assertEquals("Normal object conversion (2)", "The answer is Forty Two", objectFromString);
104 objectFromString = objectStringConverter.stringToObject(
105 "Trillian", SecurityManager.class, "cranberry", dummyContext );
106 assertEquals("Special object conversion", "Life, The Universe And Everything", objectFromString);
107
108 ConvertUtils.deregister();
109 }
110
111 public void testDefaultOSConverter() {
112 ObjectStringConverter converter = new DefaultObjectStringConverter();
113 commonTestForConvertUtilsConverters( converter );
114 }
115
116 public void testDefaultOSConverterDates() {
117
118
119 Converter converter = new Converter() {
120 public Object convert(Class type, Object value) {
121 return "Arthur Dent";
122 }
123 };
124
125 ConvertUtils.register( converter, java.sql.Date.class );
126
127 converter = new Converter() {
128 public Object convert(Class type, Object value) {
129 return "Ford Prefect";
130 }
131 };
132
133 ConvertUtils.register( converter, String.class );
134
135 converter = new Converter() {
136 public Object convert(Class type, Object value) {
137 return "Marvin";
138 }
139 };
140
141 ConvertUtils.register( converter, java.util.Date.class );
142
143 java.util.Date utilNow = new java.util.Date();
144 String nowAsString = utilNow.toString();
145 java.sql.Date sqlNow = new java.sql.Date(System.currentTimeMillis());
146 ObjectStringConverter objectStringConverter = new DefaultObjectStringConverter();
147
148 String stringFromObject = objectStringConverter.objectToString(
149 utilNow, java.util.Date.class, "blackcurrent", dummyContext );
150 assertEquals( "String output same as java.util.Date.toString() (1)", utilNow.toString(), stringFromObject );
151
152 stringFromObject = objectStringConverter.objectToString(
153 sqlNow, java.util.Date.class, "redcurrent", dummyContext );
154 assertEquals( "String output same as java.util.Date.toString() (2)", utilNow.toString(), stringFromObject );
155
156 stringFromObject = objectStringConverter.objectToString(
157 utilNow, java.sql.Date.class, "whitecurrent", dummyContext );
158 assertEquals( "Should use converter (2)", "Ford Prefect", stringFromObject );
159
160 Object objectFromString = objectStringConverter.stringToObject(
161 nowAsString, java.sql.Date.class, "blackberry", dummyContext );
162 assertEquals( "Should use converter (3)", "Ford Prefect", stringFromObject );
163 objectFromString = objectStringConverter.stringToObject(
164 nowAsString, java.util.Date.class, "tayberry", dummyContext );
165 assertTrue( "Date should be returned", objectFromString instanceof java.util.Date);
166 assertEquals( "Date returned should be the same", nowAsString, objectFromString.toString());
167
168 ConvertUtils.deregister();
169 }
170 }
171
172