package de.flower.rmt.util.prettytime;
import static org.testng.Assert.assertEquals;
import java.util.Locale;
import org.joda.time.DateTime;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.Test;
/**
* @author flowerrrr
*/
public class PrettyTimeTest {
private final static Logger log = LoggerFactory.getLogger(PrettyTimeTest.class);
@Test
public void testDateHandler() {
// use fixed date to reproduce test results
int hourOfDay = 22;
DateTime now = new DateTime(2012, 05, 1, hourOfDay, 0, 0);
testDH(AbstractDateHandler.JustNow.class, now.plusMillis(1), now);
testDH(AbstractDateHandler.Minute.class, now.minusMinutes(1), now);
testDH(AbstractDateHandler.Minute.class, now.minusMinutes(59), now);
testDH(AbstractDateHandler.Hour.class, now.minusMinutes(60), now);
testDH(AbstractDateHandler.Hour.class, now.minusHours(1), now);
testDH(AbstractDateHandler.Hour.class, now.minusHours(12), now);
testDH(AbstractDateHandler.Today.class, now.minusHours(13), now);
testDH(AbstractDateHandler.Today.class, now.minusHours(hourOfDay), now);
testDH(AbstractDateHandler.Yesterday.class, now.minusHours(24), now);
testDH(AbstractDateHandler.Yesterday.class, now.minusHours(24 + hourOfDay), now);
testDH(AbstractDateHandler.Week.class, now.minusHours(24 + hourOfDay + 1), now);
testDH(AbstractDateHandler.Week.class, now.minusDays(2), now);
testDH(AbstractDateHandler.Week.class, now.minusDays(6), now);
testDH(AbstractDateHandler.Default.class, now.minusDays(7), now);
}
private void testDH(Class<? extends IDateHandler> expectedClass, DateTime dateTime, DateTime reference) {
PrettyTime pt = new PrettyTime(reference.toDate());
assertEquals(pt.getDateHandler(dateTime.toDate()).getClass(), expectedClass);
}
@Test
public void testFormat() {
Locale.setDefault(Locale.GERMAN);
int hourOfDay = 22;
DateTime now = new DateTime(2012, 05, 1, hourOfDay, 0, 0); // tuesday
test("Soeben", now.plusMillis(1), now);
test("Vor 1 Minute", now.minusMinutes(1), now);
test("Vor 59 Minuten", now.minusMinutes(59), now);
test("Vor 1 Stunde", now.minusMinutes(60), now);
test("Vor 1 Stunde", now.minusHours(1), now);
test("Vor 12 Stunden", now.minusHours(12), now);
test("Heute um 09:00", now.minusHours(13), now);
test("Heute um 00:00", now.minusHours(hourOfDay), now);
test("Gestern um 22:00", now.minusHours(24), now);
test("Gestern um 00:00", now.minusHours(24 + hourOfDay), now);
test("Sonntag um 23:00", now.minusHours(24 + hourOfDay + 1), now);
test("Sonntag um 22:00", now.minusDays(2), now);
test("Mittwoch um 22:00", now.minusDays(6), now);
test("24. April 2012 um 22:00", now.minusDays(7), now);
}
private void test(String expected, DateTime dateTime, DateTime reference) {
PrettyTime pt = new PrettyTime(reference.toDate());
String sDate = pt.format(dateTime.toDate());
log.info(sDate);
assertEquals(sDate, expected);
}
}