/*
* Copyright 2009 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.orangesignal.csv.bean;
import static org.hamcrest.core.Is.is;
import static org.hamcrest.core.IsNull.notNullValue;
import static org.hamcrest.core.IsNull.nullValue;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThat;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import org.junit.Test;
import com.orangesignal.csv.handlers.SampleType;
/**
* {@link CsvValueConverter} クラスの単体テストです。
*
* @author Koji Sugisawa
*/
public class SimpleCsvValueConverterTest {
@Test
public void testGetDateFormat() {
final SimpleCsvValueConverter c = new SimpleCsvValueConverter();
assertThat(c.getDateFormat(), nullValue());
}
@Test
public void testSetDateFormat() {
final SimpleCsvValueConverter c = new SimpleCsvValueConverter();
c.setDateFormat(new SimpleDateFormat("yyyy/MM/dd"));
assertThat(c.getDateFormat(), notNullValue());
}
@Test
public void testConvertStringClassOfQ() {
final SimpleCsvValueConverter c = new SimpleCsvValueConverter();
// boolean
assertThat(((Boolean) c.convert(null, Boolean.TYPE)).booleanValue(), is(false));
assertThat(((Boolean) c.convert("0", Boolean.TYPE)).booleanValue(), is(false));
assertThat(((Boolean) c.convert("1", Boolean.TYPE)).booleanValue(), is(true));
assertThat(((Boolean) c.convert("false", Boolean.TYPE)).booleanValue(), is(false));
assertThat(((Boolean) c.convert("true", Boolean.TYPE)).booleanValue(), is(true));
assertThat(((Boolean) c.convert("FALSE", Boolean.TYPE)).booleanValue(), is(false));
assertThat(((Boolean) c.convert("TRUE", Boolean.TYPE)).booleanValue(), is(true));
assertThat(((Boolean) c.convert("f", Boolean.TYPE)).booleanValue(), is(false));
assertThat(((Boolean) c.convert("t", Boolean.TYPE)).booleanValue(), is(true));
assertThat(((Boolean) c.convert("F", Boolean.TYPE)).booleanValue(), is(false));
assertThat(((Boolean) c.convert("T", Boolean.TYPE)).booleanValue(), is(true));
assertThat(((Boolean) c.convert("no", Boolean.TYPE)).booleanValue(), is(false));
assertThat(((Boolean) c.convert("yes", Boolean.TYPE)).booleanValue(), is(true));
assertThat(((Boolean) c.convert("NO", Boolean.TYPE)).booleanValue(), is(false));
assertThat(((Boolean) c.convert("YES", Boolean.TYPE)).booleanValue(), is(true));
assertThat(((Boolean) c.convert("n", Boolean.TYPE)).booleanValue(), is(false));
assertThat(((Boolean) c.convert("y", Boolean.TYPE)).booleanValue(), is(true));
assertThat(((Boolean) c.convert("N", Boolean.TYPE)).booleanValue(), is(false));
assertThat(((Boolean) c.convert("Y", Boolean.TYPE)).booleanValue(), is(true));
assertThat(((Boolean) c.convert("off", Boolean.TYPE)).booleanValue(), is(false));
assertThat(((Boolean) c.convert("on", Boolean.TYPE)).booleanValue(), is(true));
assertThat(((Boolean) c.convert("OFF", Boolean.TYPE)).booleanValue(), is(false));
assertThat(((Boolean) c.convert("ON", Boolean.TYPE)).booleanValue(), is(true));
assertThat(((Boolean) c.convert("x", Boolean.TYPE)).booleanValue(), is(false));
assertThat(((Boolean) c.convert("o", Boolean.TYPE)).booleanValue(), is(true));
assertThat(((Boolean) c.convert("X", Boolean.TYPE)).booleanValue(), is(false));
assertThat(((Boolean) c.convert("O", Boolean.TYPE)).booleanValue(), is(true));
// Boolean
assertNull(c.convert(null, Boolean.class));
assertThat((Boolean) c.convert("0", Boolean.class), is(Boolean.FALSE));
assertThat((Boolean) c.convert("1", Boolean.class), is(Boolean.TRUE));
assertThat((Boolean) c.convert("false", Boolean.class), is(Boolean.FALSE));
assertThat((Boolean) c.convert("true", Boolean.class), is(Boolean.TRUE));
assertThat((Boolean) c.convert("FALSE", Boolean.class), is(Boolean.FALSE));
assertThat((Boolean) c.convert("TRUE", Boolean.class), is(Boolean.TRUE));
assertThat((Boolean) c.convert("f", Boolean.class), is(Boolean.FALSE));
assertThat((Boolean) c.convert("t", Boolean.class), is(Boolean.TRUE));
assertThat((Boolean) c.convert("F", Boolean.class), is(Boolean.FALSE));
assertThat((Boolean) c.convert("T", Boolean.class), is(Boolean.TRUE));
assertThat((Boolean) c.convert("no", Boolean.class), is(Boolean.FALSE));
assertThat((Boolean) c.convert("yes", Boolean.class), is(Boolean.TRUE));
assertThat((Boolean) c.convert("NO", Boolean.class), is(Boolean.FALSE));
assertThat((Boolean) c.convert("YES", Boolean.class), is(Boolean.TRUE));
assertThat((Boolean) c.convert("n", Boolean.class), is(Boolean.FALSE));
assertThat((Boolean) c.convert("y", Boolean.class), is(Boolean.TRUE));
assertThat((Boolean) c.convert("N", Boolean.class), is(Boolean.FALSE));
assertThat((Boolean) c.convert("Y", Boolean.class), is(Boolean.TRUE));
assertThat((Boolean) c.convert("off", Boolean.class), is(Boolean.FALSE));
assertThat((Boolean) c.convert("on", Boolean.class), is(Boolean.TRUE));
assertThat((Boolean) c.convert("OFF", Boolean.class), is(Boolean.FALSE));
assertThat((Boolean) c.convert("ON", Boolean.class), is(Boolean.TRUE));
assertThat((Boolean) c.convert("x", Boolean.class), is(Boolean.FALSE));
assertThat((Boolean) c.convert("o", Boolean.class), is(Boolean.TRUE));
assertThat((Boolean) c.convert("X", Boolean.class), is(Boolean.FALSE));
assertThat((Boolean) c.convert("O", Boolean.class), is(Boolean.TRUE));
// int / Integer
assertThat(((Integer) c.convert(null, Integer.TYPE)).intValue(), is(0));
assertThat(((Integer) c.convert("100", Integer.TYPE)).intValue(), is(100));
assertNull(c.convert(null, Integer.class));
assertThat(((Integer) c.convert("100", Integer.class)), is(Integer.valueOf(100)));
// Number
assertNull(c.convert(null, Number.class));
assertThat(((Number) c.convert("100", Number.class)).intValue(), is(100));
// java.util.Date
DateFormat df = new SimpleDateFormat("yyyy/MM/dd");
c.setDateFormat((DateFormat) df.clone());
assertNull(c.convert(null, java.util.Date.class));
assertThat(df.format((java.util.Date) c.convert("2009/10/21", java.util.Date.class)), is("2009/10/21"));
// java.sql.Date
assertNull(c.convert(null, java.sql.Date.class));
assertThat(df.format((java.sql.Date) c.convert("2009/10/21", java.sql.Date.class)), is("2009/10/21"));
// java.sql.Time
df = new SimpleDateFormat("HH:mm:ss");
c.setDateFormat((DateFormat) df.clone());
assertNull(c.convert(null, java.sql.Time.class));
assertThat(df.format((java.sql.Time) c.convert("12:34:56", java.sql.Time.class)), is("12:34:56"));
// java.sql.Timestamp
df = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS");
c.setDateFormat((DateFormat) df.clone());
assertNull(c.convert(null, java.sql.Timestamp.class));
assertThat(df.format((java.sql.Timestamp) c.convert("2009/10/21 12:34:56.789", java.sql.Timestamp.class)), is("2009/10/21 12:34:56.789"));
// String
assertNull(c.convert(null, String.class));
assertThat(((String) c.convert("test", String.class)), is("test"));
// Enum
assertNull(c.convert(null, SampleType.class));
assertThat(((SampleType) c.convert("A", SampleType.class)), is(SampleType.A));
assertThat(((SampleType) c.convert("B", SampleType.class)), is(SampleType.B));
assertThat(((SampleType) c.convert("C", SampleType.class)), is(SampleType.C));
}
@Test
public void testConvertObject() throws ParseException {
final SimpleCsvValueConverter c = new SimpleCsvValueConverter();
assertNull(c.convert(null));
assertThat(c.convert(Boolean.FALSE), is("false"));
assertThat(c.convert(Boolean.TRUE), is("true"));
assertThat(c.convert(100), is("100"));
assertThat(c.convert(10.05), is("10.05"));
assertThat(c.convert("test"), is("test"));
assertThat(c.convert(SampleType.A), is("A"));
DateFormat df = new SimpleDateFormat("yyyy/MM/dd");
c.setDateFormat((DateFormat) df.clone());
assertThat(c.convert(df.parse("2009/10/21")), is("2009/10/21"));
}
}