blob: 6915ba749aaabadb1e4ee3adcf35327f4ea22dff [file] [log] [blame]
// Copyright (C) 2013 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.client;
import static com.google.gerrit.client.RelativeDateFormatter.DAY_IN_MILLIS;
import static com.google.gerrit.client.RelativeDateFormatter.HOUR_IN_MILLIS;
import static com.google.gerrit.client.RelativeDateFormatter.MINUTE_IN_MILLIS;
import static com.google.gerrit.client.RelativeDateFormatter.SECOND_IN_MILLIS;
import static com.google.gerrit.client.RelativeDateFormatter.YEAR_IN_MILLIS;
import static org.junit.Assert.assertEquals;
import java.util.Date;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
public class RelativeDateFormatterTest {
@BeforeClass
public static void setConstants() {
Constants c = new Constants();
RelativeDateFormatter.setConstants(c, c);
}
@AfterClass
public static void unsetConstants() {
RelativeDateFormatter.setConstants(null, null);
}
private static void assertFormat(long ageFromNow, long timeUnit, String expectedFormat) {
Date d = new Date(System.currentTimeMillis() - ageFromNow * timeUnit);
String s = RelativeDateFormatter.format(d);
assertEquals(expectedFormat, s);
}
@Test
public void future() {
assertFormat(-100, YEAR_IN_MILLIS, "in the future");
assertFormat(-1, SECOND_IN_MILLIS, "in the future");
}
@Test
public void formatSeconds() {
assertFormat(1, SECOND_IN_MILLIS, "1 second ago");
assertFormat(89, SECOND_IN_MILLIS, "89 seconds ago");
}
@Test
public void formatMinutes() {
assertFormat(90, SECOND_IN_MILLIS, "2 minutes ago");
assertFormat(3, MINUTE_IN_MILLIS, "3 minutes ago");
assertFormat(60, MINUTE_IN_MILLIS, "60 minutes ago");
assertFormat(89, MINUTE_IN_MILLIS, "89 minutes ago");
}
@Test
public void formatHours() {
assertFormat(90, MINUTE_IN_MILLIS, "2 hours ago");
assertFormat(149, MINUTE_IN_MILLIS, "2 hours ago");
assertFormat(35, HOUR_IN_MILLIS, "35 hours ago");
}
@Test
public void formatDays() {
assertFormat(36, HOUR_IN_MILLIS, "2 days ago");
assertFormat(13, DAY_IN_MILLIS, "13 days ago");
}
@Test
public void formatWeeks() {
assertFormat(14, DAY_IN_MILLIS, "2 weeks ago");
assertFormat(69, DAY_IN_MILLIS, "10 weeks ago");
}
@Test
public void formatMonths() {
assertFormat(70, DAY_IN_MILLIS, "2 months ago");
assertFormat(75, DAY_IN_MILLIS, "3 months ago");
assertFormat(364, DAY_IN_MILLIS, "12 months ago");
}
@Test
public void formatYearsMonths() {
assertFormat(366, DAY_IN_MILLIS, "1 year ago");
assertFormat(380, DAY_IN_MILLIS, "1 year, 1 month ago");
assertFormat(410, DAY_IN_MILLIS, "1 year, 2 months ago");
assertFormat(2, YEAR_IN_MILLIS, "2 years ago");
assertFormat(1824, DAY_IN_MILLIS, "5 years ago");
assertFormat(2 * 365 - 10, DAY_IN_MILLIS, "2 years ago");
}
@Test
public void formatYears() {
assertFormat(5, YEAR_IN_MILLIS, "5 years ago");
assertFormat(60, YEAR_IN_MILLIS, "60 years ago");
}
private static class Constants implements CommonConstants, CommonMessages {
@Override
public String inTheFuture() {
return "in the future";
}
@Override
public String month() {
return "month";
}
@Override
public String months() {
return "months";
}
@Override
public String year() {
return "year";
}
@Override
public String years() {
return "years";
}
@Override
public String oneSecondAgo() {
return "1 second ago";
}
@Override
public String oneMinuteAgo() {
return "1 minute ago";
}
@Override
public String oneHourAgo() {
return "1 hour ago";
}
@Override
public String oneDayAgo() {
return "1 day ago";
}
@Override
public String oneWeekAgo() {
return "1 week ago";
}
@Override
public String oneMonthAgo() {
return "1 month ago";
}
@Override
public String oneYearAgo() {
return "1 year ago";
}
@Override
public String secondsAgo(long seconds) {
return seconds + " seconds ago";
}
@Override
public String minutesAgo(long minutes) {
return minutes + " minutes ago";
}
@Override
public String hoursAgo(long hours) {
return hours + " hours ago";
}
@Override
public String daysAgo(long days) {
return days + " days ago";
}
@Override
public String weeksAgo(long weeks) {
return weeks + " weeks ago";
}
@Override
public String monthsAgo(long months) {
return months + " months ago";
}
@Override
public String yearsAgo(long years) {
return years + " years ago";
}
@Override
public String years0MonthsAgo(long years, String yearLabel) {
return years + " " + yearLabel + " ago";
}
@Override
public String yearsMonthsAgo(long years, String yearLabel, long months, String monthLabel) {
return years + " " + yearLabel + ", " + months + " " + monthLabel + " ago";
}
}
}