package humanize;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class TestHumanizeParse
{
private Locale defaultLocale;
@Test(threadPoolSize = 10, invocationCount = 10)
public void parseBase64()
{
byte[] decoded = Humanize.parseBase64("R3JlZW4gb3ZlciBibGFjay4=");
String msg = new String(decoded);
Assert.assertEquals(msg, "Green over black.");
}
@Test(threadPoolSize = 10, invocationCount = 10)
public void parseDate()
{
Date target = newDate(2011, 8, 14, 15, 22, 1);
Date date = Humanize.parseISODateTime("2011-09-14T15:22:01Z");
Assert.assertEquals(date, target);
date = Humanize.parseISODate("2011-09-14T15:22:01Z");
Assert.assertEquals(date, target);
target = newTime(15, 22, 1);
date = Humanize.parseISOTime("15:22:01Z");
Assert.assertEquals(date, target);
}
@Test(threadPoolSize = 10, invocationCount = 10)
public void parseSmartDate()
{
Date target = newDate(2012, 1, 1, 0, 0, 0, TimeZone.getDefault());
String dates[] = new String[] { "1.2.12", "01.02.2012", "2012.02.01", "01-02-12", "1 2 2012" };
for (String ds : dates)
{
Date date = Humanize.parseSmartDate(ds, "dd/MM/yy", "yyyy/MM/dd", "dd/MM/yyyy");
Assert.assertEquals(date, target);
}
for (String ds : dates)
{
Date date = Humanize.parseSmartDate(ds, "dd/MM/yy,yyyy/MM/dd,dd/MM/yyyy".split(","));
Assert.assertEquals(date, target);
}
for (String ds : "1$2$12,01$02$2012,2012$02$01".split(","))
{
Date date = Humanize.parseSmartDateWithSeparator(ds, "\\$+", "dd/MM/yy,yyyy/MM/dd,dd/MM/yyyy".split(","));
Assert.assertEquals(date, target);
}
}
@AfterClass
void after()
{
Locale.setDefault(defaultLocale);
}
@BeforeClass
void before()
{
defaultLocale = Locale.getDefault();
Locale.setDefault(Locale.ENGLISH);
}
private Date newDate(int year, int month, int day, int hour, int minute, int second)
{
return newDate(year, month, day, hour, minute, second, TimeZone.getTimeZone("GMT+00:00"));
}
private Date newDate(int year, int month, int day, int hour, int minute, int second, TimeZone tz)
{
Calendar cal = Calendar.getInstance(tz);
cal.set(year, month, day, hour, minute, second);
cal.set(Calendar.MILLISECOND, 0);
return cal.getTime();
}
private Date newTime(int hour, int minute, int second)
{
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+00:00"));
cal.setTimeInMillis(0);
cal.set(Calendar.HOUR, hour);
cal.set(Calendar.MINUTE, minute);
cal.set(Calendar.SECOND, second);
return cal.getTime();
}
}