package net.sourceforge.cruisecontrol.dashboard.utils;
import junit.framework.TestCase;
import org.apache.commons.lang.StringUtils;
import org.joda.time.DateTime;
public class TimeConverterTest extends TestCase {
private TimeConverter timeConverter;
protected void setUp() throws Exception {
this.timeConverter = new TimeConverter();
}
public void testShouldReturn() {
DateTime now = new DateTime();
DateTime yesterday = now.minusDays(1);
assertEquals(CCDateFormatter.getDateStringInHumanBeingReadingStyle(now), timeConverter
.getConvertedTime(now.toDate(), yesterday.toDate()));
}
public void testShouldReportLessThanOneMinutesFor0To29Seconds() {
assertEquals(TimeConverter.LESS_THAN_A_MINUTE, timeConverter.getConvertedTime(29));
}
public void testShouldReportOneMinuteFor30Seconds() {
assertEquals(TimeConverter.FROM_1_MINUTE, timeConverter.getConvertedTime(30));
}
public void testShouldReportOneMinuteFor89Seconds() {
assertEquals(TimeConverter.FROM_1_MINUTE, timeConverter.getConvertedTime(89));
}
public void testShouldReport2To44MinutesFor90Seconds() {
assertEquals(StringUtils.replace(TimeConverter.FROM_2_TO_44_MINUTES, "$time", "2"), timeConverter
.getConvertedTime(1 * 60 + 30));
}
public void testShouldReport1DayFor45Mintues() {
assertEquals(TimeConverter.ABOUT_1_HOUR, timeConverter.getConvertedTime(45 * 60));
}
public void testShouldReport44MinutesFor44Minutes29Seconds() throws Exception {
assertEquals(StringUtils.replace(TimeConverter.FROM_2_TO_44_MINUTES, "$time", "44"), timeConverter
.getConvertedTime(44 * 60 + 29));
}
public void testShouldReportAbout1HourFor44Minutes30Seconds() throws Exception {
assertEquals(TimeConverter.ABOUT_1_HOUR, timeConverter.getConvertedTime(44 * 60 + 30));
}
public void testShouldReportAbout1HourFor89Minutes29Seconds() throws Exception {
assertEquals(TimeConverter.ABOUT_1_HOUR, timeConverter.getConvertedTime(89 * 60 + 29));
}
public void testShouldReportAbout2HoursHourFor89Minutes30Seconds() throws Exception {
assertEquals(StringUtils.replace(TimeConverter.ABOUT_2_TO_24_HOURS, "$time", "2"), timeConverter
.getConvertedTime(1 * TimeConverter.HOUR_IN_SECONDS + 29 * 60 + 30));
}
public void testShouldReport23HoursFor23Hours59Minutes29Seconds() throws Exception {
assertEquals(StringUtils.replace(TimeConverter.ABOUT_2_TO_24_HOURS, "$time", "23"), timeConverter
.getConvertedTime(24 * TimeConverter.HOUR_IN_SECONDS - 31));
}
public void testShouldReportAbout1DayFor23Hours59Minutes30Seconds() throws Exception {
assertEquals(TimeConverter.ABOUT_1_DAY, timeConverter.getConvertedTime(23 * 60 * 60 + 59 * 60 + 30));
}
public void testShouldReportAbout1DayFor47Hours59Minutes29Seconds() throws Exception {
assertEquals(TimeConverter.ABOUT_1_DAY, timeConverter.getConvertedTime(47 * 60 * 60 + 59 * 60 + 29));
}
public void testShouldReport2DaysFor47Hours59Minutes29Seconds() throws Exception {
assertEquals(StringUtils.replace(TimeConverter.FROM_2_TO_29_DAYS, "$time", "2"), timeConverter
.getConvertedTime(2 * TimeConverter.DAY_IN_SECONDS - 30));
}
public void testShouldReport29DaysFor29Days23Hours59Minutes29Seconds() throws Exception {
assertEquals(StringUtils.replace(TimeConverter.FROM_2_TO_29_DAYS, "$time", "29"), timeConverter
.getConvertedTime(30 * TimeConverter.DAY_IN_SECONDS - 31));
}
public void testShouldReportAbout1MonthFor29Days23Hours59Minutes30Seconds() throws Exception {
assertEquals(TimeConverter.ABOUT_1_MONTH, timeConverter.getConvertedTime(29
* TimeConverter.DAY_IN_SECONDS + 23 * 60 * 60 + 59 * 60 + 30));
}
public void testShouldReportAbout1MonthFor59Days23Hours59Minutes29Seconds() throws Exception {
assertEquals(TimeConverter.ABOUT_1_MONTH, timeConverter.getConvertedTime(59
* TimeConverter.DAY_IN_SECONDS + 23 * 60 * 60 + 59 * 60 + 29));
}
public void testShouldReport2MonthsFor59Days23Hours59Minutes30Seconds() throws Exception {
assertEquals(StringUtils.replace(TimeConverter.FROM_2_TO_12_MONTHS, "$time", "2"), timeConverter
.getConvertedTime(60 * TimeConverter.DAY_IN_SECONDS - 30));
}
public void testShouldReport12MonthsFor59Days23Hours59Minutes30Seconds() throws Exception {
assertEquals(StringUtils.replace(TimeConverter.FROM_2_TO_12_MONTHS, "$time", "12"), timeConverter
.getConvertedTime(365 * TimeConverter.DAY_IN_SECONDS - 31));
}
public void testShouldReportAbout1YearFor1YearMinus30Seconds() throws Exception {
assertEquals(TimeConverter.ABOUT_1_YEAR, timeConverter
.getConvertedTime(365 * TimeConverter.DAY_IN_SECONDS - 30));
}
public void testShouldReportAbout1YearFor2YearsMinus31Seconds() throws Exception {
assertEquals(TimeConverter.ABOUT_1_YEAR, timeConverter
.getConvertedTime(2 * 365 * TimeConverter.DAY_IN_SECONDS - 31));
}
public void testShouldReturnTimeUnitAsYearsWhenDurationIsLargerThan2Years() throws Exception {
assertEquals(StringUtils.replace(TimeConverter.OVER_2_YEARS, "$time", "2"), timeConverter
.getConvertedTime(2 * 365 * TimeConverter.DAY_IN_SECONDS - 30));
}
public void testShouldReturnTimeUnitAsYearsWhenDurationIsLargerThan3Years() throws Exception {
assertEquals(StringUtils.replace(TimeConverter.OVER_2_YEARS, "$time", "3"), timeConverter
.getConvertedTime(3 * 365 * TimeConverter.DAY_IN_SECONDS + 2 * TimeConverter.DAY_IN_SECONDS));
}
}