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