📄 dateconvertertestbase.java
字号:
// Invalid Values, expect default value
validConversion(converter, defaultValue, null);
validConversion(converter, defaultValue, "");
validConversion(converter, defaultValue, "2006-10-2X");
validConversion(converter, defaultValue, "2006/10/01");
validConversion(converter, defaultValue, "02/10/06");
validConversion(converter, defaultValue, new Integer(2));
}
/**
* Test Converter with no default value
*/
public void testPatternNullDefault() {
String pattern = "yyyy-MM-dd";
// Create & Configure the Converter
Object defaultValue = null;
DateTimeConverter converter = makeConverter(defaultValue);
converter.setPattern(pattern);
// Valid String --> Type Conversion
String testString = "2006-10-29";
Object expected = toType(testString, pattern, null);
validConversion(converter, expected, testString);
// Invalid Values, expect default --> null
validConversion(converter, defaultValue, null);
validConversion(converter, defaultValue, "");
validConversion(converter, defaultValue, "2006-10-2X");
validConversion(converter, defaultValue, "2006/10/01");
validConversion(converter, defaultValue, "02/10/06");
validConversion(converter, defaultValue, new Integer(2));
}
/**
* Test Converter with multiple patterns
*/
public void testMultiplePatterns() {
String testString = null;
Object expected = null;
// Create & Configure the Converter
String[] patterns = new String[] {"yyyy-MM-dd", "yyyy/MM/dd"};
DateTimeConverter converter = makeConverter();
converter.setPatterns(patterns);
// First Pattern
testString = "2006-10-28";
expected = toType(testString, patterns[0], null);
validConversion(converter, expected, testString);
// Second pattern
testString = "2006/10/18";
expected = toType(testString, patterns[1], null);
validConversion(converter, expected, testString);
// Invalid Conversion
invalidConversion(converter, "17/03/2006");
invalidConversion(converter, "17.03.2006");
}
/**
* Test Date Converter with no default value
*/
public void testLocale() {
// Re-set the default Locale to Locale.US
Locale defaultLocale = Locale.getDefault();
Locale.setDefault(Locale.US);
String pattern = "M/d/yy"; // SHORT style date format for US Locale
// Create & Configure the Converter
DateTimeConverter converter = makeConverter();
converter.setUseLocaleFormat(true);
// Valid String --> Type Conversion
String testString = "10/28/06";
Object expected = toType(testString, pattern, null);
validConversion(converter, expected, testString);
// Invalid Conversions
invalidConversion(converter, null);
invalidConversion(converter, "");
invalidConversion(converter, "2006-10-2X");
invalidConversion(converter, "10.28.06");
invalidConversion(converter, "10-28-06");
invalidConversion(converter, new Integer(2));
// Restore the default Locale
Locale.setDefault(defaultLocale);
}
/**
* Test Converter with types it can't handle
*/
public void testInvalidType() {
// Create & Configure the Converter
DateTimeConverter converter = makeConverter();
// Invalid Class Type
try {
converter.convert(Character.class, new Date());
fail("Requested Character.class conversion, expected ConversionException");
} catch (ConversionException e) {
// Expected result
}
}
/**
* Test Conversion to the required type
* @param converter The converter to use
* @param expected The expected result
* @param value The value to convert
*/
void validConversion(Converter converter, Object expected, Object value) {
String valueType = (value == null ? "null" : value.getClass().getName());
String msg = "Converting '" + valueType + "' value '" + value + "'";
try {
Object result = converter.convert(getExpectedType(), value);
Class resultType = (result == null ? null : result.getClass());
Class expectType = (expected == null ? null : expected.getClass());
assertEquals("TYPE " + msg, expectType, resultType);
assertEquals("VALUE " + msg, expected, result);
} catch (Exception ex) {
fail(msg + " threw " + ex.toString());
}
}
/**
* Test Conversion to String
* @param converter The converter to use
* @param expected The expected result
* @param value The value to convert
*/
void stringConversion(Converter converter, String expected, Object value) {
String valueType = (value == null ? "null" : value.getClass().getName());
String msg = "Converting '" + valueType + "' value '" + value + "' to String";
try {
Object result = converter.convert(String.class, value);
Class resultType = (result == null ? null : result.getClass());
Class expectType = (expected == null ? null : expected.getClass());
assertEquals("TYPE " + msg, expectType, resultType);
assertEquals("VALUE " + msg, expected, result);
} catch (Exception ex) {
fail(msg + " threw " + ex.toString());
}
}
/**
* Test Conversion Error
* @param converter The converter to use
* @param value The value to convert
*/
void invalidConversion(Converter converter, Object value) {
String valueType = (value == null ? "null" : value.getClass().getName());
String msg = "Converting '" + valueType + "' value '" + value + "'";
try {
Object result = converter.convert(getExpectedType(), value);
fail(msg + ", expected ConversionException, but result = '" + result + "'");
} catch (ConversionException ex) {
// Expected Result
}
}
/**
* Parse a String value to the required type
* @param value The String value to parse
* @param pattern The date pattern
* @param locale The locale to use (or null)
* @return parsed Calendar value
*/
Object toType(String value, String pattern, Locale locale) {
Calendar calendar = toCalendar(value, pattern, locale);
return toType(calendar);
}
/**
* Parse a String value to a Calendar
* @param value The String value to parse
* @param pattern The date pattern
* @param locale The locale to use (or null)
* @return parsed Calendar value
*/
Calendar toCalendar(String value, String pattern, Locale locale) {
Calendar calendar = null;
try {
DateFormat format = (locale == null)
? new SimpleDateFormat(pattern)
: new SimpleDateFormat(pattern, locale);
format.setLenient(false);
format.parse(value);
calendar = format.getCalendar();
} catch (Exception e) {
fail("Error creating Calendar value ='"
+ value + ", pattern='" + pattern + "' " + e.toString());
}
return calendar;
}
/**
* Convert a Calendar to a java.util.Date
* @param calendar The calendar object to convert
* @return The converted java.util.Date
*/
Date toDate(Calendar calendar) {
return calendar.getTime();
}
/**
* Convert a Calendar to a java.sql.Date
* @param calendar The calendar object to convert
* @return The converted java.sql.Date
*/
java.sql.Date toSqlDate(Calendar calendar) {
return new java.sql.Date(getTimeInMillis(calendar));
}
/**
* Convert a Calendar to a java.sql.Time
* @param calendar The calendar object to convert
* @return The converted java.sql.Time
*/
java.sql.Time toSqlTime(Calendar calendar) {
return new java.sql.Time(getTimeInMillis(calendar));
}
/**
* Convert a Calendar to a java.sql.Timestamp
* @param calendar The calendar object to convert
* @return The converted java.sql.Timestamp
*/
java.sql.Timestamp toSqlTimestamp(Calendar calendar) {
return new java.sql.Timestamp(getTimeInMillis(calendar));
}
/**
* Convert a Date or Calendar objects to the time in millisconds
* @param date The date or calendar object
* @return The time in milliseconds
*/
long getTimeInMillis(Object date) {
if (date instanceof java.sql.Timestamp) {
// ---------------------- JDK 1.3 Fix ----------------------
// N.B. Prior to JDK 1.4 the Timestamp's getTime() method
// didn't include the milliseconds. The following code
// ensures it works consistently accross JDK versions
java.sql.Timestamp timestamp = (java.sql.Timestamp)date;
long timeInMillis = ((timestamp.getTime() / 1000) * 1000);
timeInMillis += timestamp.getNanos() / 1000000;
return timeInMillis;
}
if (date instanceof Calendar) {
return ((Calendar)date).getTime().getTime();
} else {
return ((Date)date).getTime();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -