1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.beanutils.converters;
19
20 import java.sql.Timestamp;
21 import java.text.DateFormat;
22 import java.util.Calendar;
23 import java.util.Date;
24 import java.util.Locale;
25
26 import junit.framework.TestSuite;
27
28
29
30
31
32
33
34 public class SqlTimestampConverterTestCase extends DateConverterTestBase {
35
36
37
38
39
40 public SqlTimestampConverterTestCase(final String name) {
41 super(name);
42 }
43
44
45
46
47
48
49
50 public static TestSuite suite() {
51 return new TestSuite(SqlTimestampConverterTestCase.class);
52 }
53
54
55
56 private boolean isUSFormatWithComma() {
57
58
59 DateFormat loc = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, Locale.US);
60 return loc.format(new Date()).contains(",");
61 }
62
63
64
65
66 @Override
67 public void testLocale() {
68
69
70 final Locale defaultLocale = Locale.getDefault();
71 Locale.setDefault(Locale.US);
72 isUSFormatWithComma();
73
74
75
76 final DateTimeConverter converter = makeConverter();
77 converter.setUseLocaleFormat(true);
78
79 String pattern;
80 String testString;
81 if (isUSFormatWithComma()) {
82 pattern = "M/d/yy, h:mm a";
83 testString = "3/21/06, 3:06 PM";
84 } else {
85
86 pattern = "M/d/yy h:mm a";
87 testString = "3/21/06 3:06 PM";
88 }
89
90
91
92 final Object expected = toType(testString, pattern, null);
93 validConversion(converter, expected, testString);
94
95
96 invalidConversion(converter, null);
97 invalidConversion(converter, "");
98 invalidConversion(converter, "13:05 pm");
99 invalidConversion(converter, "11:05 p");
100 invalidConversion(converter, "11.05 pm");
101 invalidConversion(converter, new Integer(2));
102
103
104 Locale.setDefault(defaultLocale);
105
106 }
107
108
109
110
111 @Override
112 public void testDefaultStringToTypeConvert() {
113
114
115 final DateTimeConverter converter = makeConverter();
116 converter.setUseLocaleFormat(false);
117
118
119 final String testString = "2006-10-23 15:36:01.0";
120 final Object expected = toType(testString, "yyyy-MM-dd HH:mm:ss.S", null);
121 validConversion(converter, expected, testString);
122
123
124 invalidConversion(converter, "2006/09/21 15:36:01.0");
125 invalidConversion(converter, "2006-10-22");
126 invalidConversion(converter, "15:36:01");
127
128 }
129
130
131
132
133
134 @Override
135 protected DateTimeConverter makeConverter() {
136 return new SqlTimestampConverter();
137 }
138
139
140
141
142
143
144 @Override
145 protected DateTimeConverter makeConverter(final Object defaultValue) {
146 return new SqlTimestampConverter(defaultValue);
147 }
148
149
150
151
152
153 @Override
154 protected Class<?> getExpectedType() {
155 return Timestamp.class;
156 }
157
158
159
160
161
162
163
164 @Override
165 protected Object toType(final Calendar value) {
166 return new Timestamp(getTimeInMillis(value));
167 }
168
169 }