package nl.ipo.cds.etl.operations.transform;
import static org.junit.Assert.*;
import java.sql.Date;
import java.util.Calendar;
import org.junit.Before;
import org.junit.Test;
public class TestToDateTransform {
private ToDateTransform toDate;
@Before
public void createToDateTransform () {
toDate = new ToDateTransform ();
}
@Test
public void testNull () {
assertNull (toDate.execute (null));
}
@Test
public void testEmptyString () {
assertNull (toDate.execute (""));
assertNull (toDate.execute (" "));
}
@Test
public void testInvalidFormat () {
assertNull (toDate.execute ("Hello, world!"));
}
@Test
public void testConvertDate () {
assertDate (2013, 1, 2, parseDate ("2013-01-02"));
assertDate (2013, 1, 2, parseDate ("2013/01/02"));
assertDate (2014, 6, 18, parseDate ("18-06-2014"));
assertDate (2015, 7, 19, parseDate ("19-07-2015"));
}
@Test
public void testConvertDateInvalid () {
assertDate (2013, 2, 1, parseDate ("2013-01-32"));
}
private Calendar parseDate (final String dateString) {
final Date date = toDate.execute (dateString);
if (date == null) {
return null;
}
final Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis (date.getTime ());
return calendar;
}
private static void assertDate (final int year, final int month, final int day, final Calendar calendar) {
assertEquals (year, calendar.get (Calendar.YEAR));
assertEquals (month - 1, calendar.get (Calendar.MONTH));
assertEquals (day, calendar.get (Calendar.DAY_OF_MONTH));
}
}