package in.partake.view;
import in.partake.base.DateTime;
import in.partake.view.util.Helper;
import java.util.Calendar;
import java.util.Locale;
import java.util.TimeZone;
import junit.framework.Assert;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public final class HelperTest {
private TimeZone defaultTimeZone;
@Before
public void setTimeZone() {
defaultTimeZone = TimeZone.getDefault();
TimeZone.setDefault(TimeZone.getTimeZone("Asia/Tokyo"));
}
@After
public void resetTimeZone() {
TimeZone.setDefault(defaultTimeZone);
}
// -----------------------------------------
// readableDate
@Test
public void testReadableDateAtMorning() {
DateTime date = createDate(2010, 1, 1, 9, 0);
Assert.assertEquals("2010年1月1日(金) 09:00", Helper.readableDate(date));
}
@Test
public void testReadableDateAtAfternoon() {
DateTime date = createDate(2010, 1, 1, 15, 0);
Assert.assertEquals("2010年1月1日(金) 15:00", Helper.readableDate(date));
}
@Test
public void testReadableDateAtMidnight() {
DateTime lastMin = createDate(2010, 1, 1, 23, 59);
Assert.assertEquals("2010年1月1日(金) 23:59", Helper.readableDate(lastMin));
DateTime midnight = createDate(2010, 1, 1, 24, 0);
Assert.assertEquals("2010年1月2日(土) 00:00", Helper.readableDate(midnight));
}
@Test
public void testZeroSuppressed() {
DateTime saturday = createDate(2010, 01, 01, 11, 22);
Assert.assertEquals("2010年1月1日(金) 11:22", Helper.readableDate(saturday));
}
@Test
public void testZeropaddinged() {
DateTime saturday = createDate(0001, 12, 23, 00, 00);
Assert.assertEquals("0001年12月23日(金) 00:00", Helper.readableDate(saturday));
}
@Test
public void testReadableDateAllDaysOfWeek() {
DateTime sunday = createDate(2010, 12, 26, 00, 00);
Assert.assertEquals("2010年12月26日(日) 00:00", Helper.readableDate(sunday));
DateTime monday = createDate(2010, 12, 27, 00, 00);
Assert.assertEquals("2010年12月27日(月) 00:00", Helper.readableDate(monday));
DateTime tuesday = createDate(2010, 12, 28, 00, 00);
Assert.assertEquals("2010年12月28日(火) 00:00", Helper.readableDate(tuesday));
DateTime wednesday = createDate(2010, 12, 29, 00, 00);
Assert.assertEquals("2010年12月29日(水) 00:00", Helper.readableDate(wednesday));
DateTime thursday = createDate(2010, 12, 30, 00, 00);
Assert.assertEquals("2010年12月30日(木) 00:00", Helper.readableDate(thursday));
DateTime friday = createDate(2010, 12, 31, 00, 00);
Assert.assertEquals("2010年12月31日(金) 00:00", Helper.readableDate(friday));
DateTime saturday = createDate(2011, 01, 01, 00, 00);
Assert.assertEquals("2011年1月1日(土) 00:00", Helper.readableDate(saturday));
}
// -----------------------------------------
// readableDuration
@Test
public void testReadableDuration1Day() {
DateTime beginDate = createDate(2010, 1, 1, 9, 0);
DateTime endDate = createDate(2010, 1, 1, 14, 0);
Assert.assertEquals("2010年1月1日(金) 09:00 - 14:00", Helper.readableDuration(beginDate, endDate));
}
@Test
public void testReadableDuration2Day() {
DateTime beginDate = createDate(2010, 1, 1, 20, 0);
DateTime endDate = createDate(2010, 1, 2, 05, 0);
Assert.assertEquals("2010年1月1日(金) 20:00 - 2010年1月2日(土) 05:00", Helper.readableDuration(beginDate, endDate));
}
@Test
public void testReadableDuration1Month() {
DateTime beginDate = createDate(2010, 1, 1, 20, 0);
DateTime endDate = createDate(2010, 2, 1, 20, 0);
Assert.assertEquals("2010年1月1日(金) 20:00 - 2010年2月1日(月) 20:00", Helper.readableDuration(beginDate, endDate));
}
@Test
public void testReadableDuration1Year() {
DateTime beginDate = createDate(2010, 1, 1, 20, 0);
DateTime endDate = createDate(2011, 1, 1, 20, 0);
Assert.assertEquals("2010年1月1日(金) 20:00 - 2011年1月1日(土) 20:00", Helper.readableDuration(beginDate, endDate));
}
private DateTime createDate(int year, int month, int day, int hour, int minute) {
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("JST"), Locale.JAPANESE);
calendar.clear();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, month - 1);
calendar.set(Calendar.DAY_OF_MONTH, day);
calendar.set(Calendar.HOUR_OF_DAY, hour);
calendar.set(Calendar.MINUTE, minute);
return new DateTime(calendar.getTime().getTime());
}
}