blob: 796189cd282eabe24b44e04e0385cae55d6293cc [file] [log] [blame]
// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ui/message_center/views/relative_time_formatter.h"
#include "base/time/time.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/strings/grit/ui_strings.h"
namespace message_center {
namespace {
// In Android, DateUtils.YEAR_IN_MILLIS is 364 days (52 weeks * 7 days).
constexpr base::TimeDelta kYearTimeDelta = base::Days(364);
std::u16string GetRelativeTime(base::TimeDelta delta) {
std::u16string relative_time;
base::TimeDelta next_update;
GetRelativeTimeStringAndNextUpdateTime(delta, &relative_time, &next_update);
return relative_time;
}
base::TimeDelta GetNextUpdate(base::TimeDelta delta) {
std::u16string relative_time;
base::TimeDelta next_update;
GetRelativeTimeStringAndNextUpdateTime(delta, &relative_time, &next_update);
return next_update;
}
} // namespace
TEST(RelativeTimeFormatterTest, Format_Future_30Sec) {
std::u16string relative_time = GetRelativeTime(base::Seconds(30));
EXPECT_EQ(
l10n_util::GetStringUTF16(IDS_MESSAGE_NOTIFICATION_NOW_STRING_SHORTEST),
relative_time);
}
TEST(RelativeTimeFormatterTest, Format_Past_30Sec) {
std::u16string relative_time = GetRelativeTime(base::Seconds(-30));
EXPECT_EQ(
l10n_util::GetStringUTF16(IDS_MESSAGE_NOTIFICATION_NOW_STRING_SHORTEST),
relative_time);
}
TEST(RelativeTimeFormatterTest, Format_Future_60Sec) {
std::u16string relative_time = GetRelativeTime(base::Minutes(1));
EXPECT_EQ(l10n_util::GetPluralStringFUTF16(
IDS_MESSAGE_NOTIFICATION_DURATION_MINUTES_SHORTEST_FUTURE, 1),
relative_time);
}
TEST(RelativeTimeFormatterTest, Format_Past_60Sec) {
std::u16string relative_time = GetRelativeTime(base::Minutes(-1));
EXPECT_EQ(l10n_util::GetPluralStringFUTF16(
IDS_MESSAGE_NOTIFICATION_DURATION_MINUTES_SHORTEST, 1),
relative_time);
}
TEST(RelativeTimeFormatterTest, Format_Future_5Min) {
std::u16string relative_time = GetRelativeTime(base::Minutes(5));
EXPECT_EQ(l10n_util::GetPluralStringFUTF16(
IDS_MESSAGE_NOTIFICATION_DURATION_MINUTES_SHORTEST_FUTURE, 5),
relative_time);
}
TEST(RelativeTimeFormatterTest, Format_Past_5Min) {
std::u16string relative_time = GetRelativeTime(base::Minutes(-5));
EXPECT_EQ(l10n_util::GetPluralStringFUTF16(
IDS_MESSAGE_NOTIFICATION_DURATION_MINUTES_SHORTEST, 5),
relative_time);
}
TEST(RelativeTimeFormatterTest, Format_Future_60Min) {
std::u16string relative_time = GetRelativeTime(base::Hours(1));
EXPECT_EQ(l10n_util::GetPluralStringFUTF16(
IDS_MESSAGE_NOTIFICATION_DURATION_HOURS_SHORTEST_FUTURE, 1),
relative_time);
}
TEST(RelativeTimeFormatterTest, Format_Past_60Min) {
std::u16string relative_time = GetRelativeTime(base::Hours(-1));
EXPECT_EQ(l10n_util::GetPluralStringFUTF16(
IDS_MESSAGE_NOTIFICATION_DURATION_HOURS_SHORTEST, 1),
relative_time);
}
TEST(RelativeTimeFormatterTest, Format_Future_10Hrs) {
std::u16string relative_time = GetRelativeTime(base::Hours(10));
EXPECT_EQ(l10n_util::GetPluralStringFUTF16(
IDS_MESSAGE_NOTIFICATION_DURATION_HOURS_SHORTEST_FUTURE, 10),
relative_time);
}
TEST(RelativeTimeFormatterTest, Format_Past_10Hrs) {
std::u16string relative_time = GetRelativeTime(base::Hours(-10));
EXPECT_EQ(l10n_util::GetPluralStringFUTF16(
IDS_MESSAGE_NOTIFICATION_DURATION_HOURS_SHORTEST, 10),
relative_time);
}
TEST(RelativeTimeFormatterTest, Format_Future_24Hrs) {
std::u16string relative_time = GetRelativeTime(base::Days(1));
EXPECT_EQ(l10n_util::GetPluralStringFUTF16(
IDS_MESSAGE_NOTIFICATION_DURATION_DAYS_SHORTEST_FUTURE, 1),
relative_time);
}
TEST(RelativeTimeFormatterTest, Format_Past_24Hrs) {
std::u16string relative_time = GetRelativeTime(base::Days(-1));
EXPECT_EQ(l10n_util::GetPluralStringFUTF16(
IDS_MESSAGE_NOTIFICATION_DURATION_DAYS_SHORTEST, 1),
relative_time);
}
TEST(RelativeTimeFormatterTest, Format_Future_1Year) {
std::u16string relative_time = GetRelativeTime(kYearTimeDelta);
EXPECT_EQ(l10n_util::GetPluralStringFUTF16(
IDS_MESSAGE_NOTIFICATION_DURATION_YEARS_SHORTEST_FUTURE, 1),
relative_time);
}
TEST(RelativeTimeFormatterTest, Format_Past_1Year) {
std::u16string relative_time = GetRelativeTime(-kYearTimeDelta);
EXPECT_EQ(l10n_util::GetPluralStringFUTF16(
IDS_MESSAGE_NOTIFICATION_DURATION_YEARS_SHORTEST, 1),
relative_time);
}
TEST(RelativeTimeFormatterTest, Format_Future_10Years) {
std::u16string relative_time = GetRelativeTime(kYearTimeDelta * 10);
EXPECT_EQ(l10n_util::GetPluralStringFUTF16(
IDS_MESSAGE_NOTIFICATION_DURATION_YEARS_SHORTEST_FUTURE, 10),
relative_time);
}
TEST(RelativeTimeFormatterTest, Format_Past_10Years) {
std::u16string relative_time = GetRelativeTime(-kYearTimeDelta * 10);
EXPECT_EQ(l10n_util::GetPluralStringFUTF16(
IDS_MESSAGE_NOTIFICATION_DURATION_YEARS_SHORTEST, 10),
relative_time);
}
TEST(RelativeTimeFormatterTest, Update_Future_Year) {
base::TimeDelta next_update =
GetNextUpdate(kYearTimeDelta * 2 - base::Milliseconds(1));
EXPECT_EQ(kYearTimeDelta, next_update);
}
TEST(RelativeTimeFormatterTest, Update_Future_Day) {
base::TimeDelta next_update =
GetNextUpdate(base::Days(2) - base::Milliseconds(1));
EXPECT_EQ(base::Days(1), next_update);
}
TEST(RelativeTimeFormatterTest, Update_Future_Hour) {
base::TimeDelta next_update =
GetNextUpdate(base::Hours(2) - base::Milliseconds(1));
EXPECT_EQ(base::Hours(1), next_update);
}
TEST(RelativeTimeFormatterTest, Update_Future_Minute) {
base::TimeDelta next_update =
GetNextUpdate(base::Minutes(2) - base::Milliseconds(1));
EXPECT_EQ(base::Minutes(1), next_update);
}
TEST(RelativeTimeFormatterTest, Update_Future_Now) {
base::TimeDelta next_update = GetNextUpdate(base::Seconds(30));
EXPECT_EQ(base::Seconds(90), next_update);
}
TEST(RelativeTimeFormatterTest, Update_Past_Now) {
base::TimeDelta next_update = GetNextUpdate(base::Seconds(-30));
EXPECT_EQ(base::Seconds(30), next_update);
}
TEST(RelativeTimeFormatterTest, Update_Past_Minute) {
base::TimeDelta next_update = GetNextUpdate(base::Minutes(-1));
EXPECT_EQ(base::Minutes(1), next_update);
}
TEST(RelativeTimeFormatterTest, Update_Past_Hour) {
base::TimeDelta next_update = GetNextUpdate(base::Hours(-1));
EXPECT_EQ(base::Hours(1), next_update);
}
TEST(RelativeTimeFormatterTest, Update_Past_Day) {
base::TimeDelta next_update = GetNextUpdate(base::Days(-1));
EXPECT_EQ(base::Days(1), next_update);
}
TEST(RelativeTimeFormatterTest, Update_Past_Year) {
base::TimeDelta next_update = GetNextUpdate(-kYearTimeDelta);
EXPECT_EQ(kYearTimeDelta, next_update);
}
} // namespace message_center