package org.rhq.enterprise.gui.legacy.util; import java.text.SimpleDateFormat; import java.util.Date; import java.util.TimeZone; import org.testng.AssertJUnit; import org.testng.annotations.Test; import org.rhq.enterprise.gui.common.time.converter.RelativeDurationConverter; @Test public class DurationConvertersTest extends AssertJUnit { private final long millisInMinute = (60 * 1000L); private final long millisInHour = (60 * millisInMinute); private final long millisInDay = (24 * millisInHour); @Test public void testRelativeDurationConverter() { // exhaustive test of RelativeDurationConverter converter across all timezones for (String tz : TimeZone.getAvailableIDs()) { convert(tz); } } private void convert(String timeZoneId) { // bootstrap the Converter properly RelativeDurationConverter.tz = TimeZone.getTimeZone(timeZoneId); //System.out.println(RelativeDurationConverter.tz); SimpleDateFormat formatter = new SimpleDateFormat("hh:mm aaa z"); // hh:mm aaa z Date nowDate = new Date(System.currentTimeMillis()); String simpleFormatted = formatter.format(nowDate); String converterFormatted = RelativeDurationConverter.format(nowDate.getTime()); assertEqualsAndPrint(simpleFormatted, converterFormatted); // Yesterday, hh:mm aaa z nowDate = new Date(System.currentTimeMillis() - days(1)); simpleFormatted = formatter.format(nowDate); converterFormatted = RelativeDurationConverter.format(nowDate.getTime()); assertEqualsAndPrint("Yesterday, " + simpleFormatted, converterFormatted); // X days nowDate = new Date(System.currentTimeMillis() - days(2)); converterFormatted = RelativeDurationConverter.format(nowDate.getTime()); assertEqualsAndPrint("2 days ago", converterFormatted); // X days, Y hours nowDate = new Date(System.currentTimeMillis() - days(2) - hours(5)); converterFormatted = RelativeDurationConverter.format(nowDate.getTime()); assertEqualsAndPrint("2 days, 5 hours ago", converterFormatted); // X days, Z minutes nowDate = new Date(System.currentTimeMillis() - days(2) - mins(10)); converterFormatted = RelativeDurationConverter.format(nowDate.getTime()); assertEqualsAndPrint("2 days, 10 minutes ago", converterFormatted); // X days, Y hours (Z minutes suppressed) nowDate = new Date(System.currentTimeMillis() - days(2) - hours(3) - mins(10)); converterFormatted = RelativeDurationConverter.format(nowDate.getTime()); assertEqualsAndPrint("2 days, 3 hours ago", converterFormatted); } private void assertEqualsAndPrint(String arg1, String arg2) { // uncomment printlns if there are test failures //System.out.println("First: " + arg1); //System.out.println("Second: " + arg1); assertEquals(arg1, arg2); } private long days(int count) { return count * millisInDay; } private long hours(int count) { return count * millisInHour; } private long mins(int count) { return count * millisInMinute; } }