| Index: base/time/time_unittest.cc
|
| diff --git a/base/time/time_unittest.cc b/base/time/time_unittest.cc
|
| index 27f71b46a60b6aad84ebb041ec56d9ad7ee4b789..fdac59dae1f281b985d0e18a4eb38a0975680e36 100644
|
| --- a/base/time/time_unittest.cc
|
| +++ b/base/time/time_unittest.cc
|
| @@ -715,6 +715,62 @@ TEST(TimeTicks, NowFromSystemTraceTime) {
|
| HighResClockTest(&TimeTicks::NowFromSystemTraceTime);
|
| }
|
|
|
| +TEST(TimeTicks, SnappedToNextTickBasic) {
|
| + base::TimeTicks phase = base::TimeTicks::FromInternalValue(4000);
|
| + base::TimeDelta interval = base::TimeDelta::FromInternalValue(1000);
|
| + base::TimeTicks timestamp;
|
| +
|
| + // Timestamp in previous interval.
|
| + timestamp = base::TimeTicks::FromInternalValue(3500);
|
| + EXPECT_EQ(4000,
|
| + timestamp.SnappedToNextTick(phase, interval).ToInternalValue());
|
| +
|
| + // Timestamp in next interval.
|
| + timestamp = base::TimeTicks::FromInternalValue(4500);
|
| + EXPECT_EQ(5000,
|
| + timestamp.SnappedToNextTick(phase, interval).ToInternalValue());
|
| +
|
| + // Timestamp multiple intervals before.
|
| + timestamp = base::TimeTicks::FromInternalValue(2500);
|
| + EXPECT_EQ(3000,
|
| + timestamp.SnappedToNextTick(phase, interval).ToInternalValue());
|
| +
|
| + // Timestamp multiple intervals after.
|
| + timestamp = base::TimeTicks::FromInternalValue(6500);
|
| + EXPECT_EQ(7000,
|
| + timestamp.SnappedToNextTick(phase, interval).ToInternalValue());
|
| +
|
| + // Timestamp on previous interval.
|
| + timestamp = base::TimeTicks::FromInternalValue(3000);
|
| + EXPECT_EQ(3000,
|
| + timestamp.SnappedToNextTick(phase, interval).ToInternalValue());
|
| +
|
| + // Timestamp on next interval.
|
| + timestamp = base::TimeTicks::FromInternalValue(5000);
|
| + EXPECT_EQ(5000,
|
| + timestamp.SnappedToNextTick(phase, interval).ToInternalValue());
|
| +
|
| + // Timestamp equal to phase.
|
| + timestamp = base::TimeTicks::FromInternalValue(4000);
|
| + EXPECT_EQ(4000,
|
| + timestamp.SnappedToNextTick(phase, interval).ToInternalValue());
|
| +}
|
| +
|
| +TEST(TimeTicks, SnappedToNextTickOverflow) {
|
| + // int(big_timestamp / interval) < 0, so this causes a crash if the number of
|
| + // intervals elapsed is attempted to be stored in an int.
|
| + base::TimeTicks phase = base::TimeTicks::FromInternalValue(0);
|
| + base::TimeDelta interval = base::TimeDelta::FromInternalValue(4000);
|
| + base::TimeTicks big_timestamp =
|
| + base::TimeTicks::FromInternalValue(8635916564000);
|
| +
|
| + EXPECT_EQ(8635916564000,
|
| + big_timestamp.SnappedToNextTick(phase, interval).ToInternalValue());
|
| + EXPECT_EQ(8635916564000,
|
| + big_timestamp.SnappedToNextTick(big_timestamp, interval)
|
| + .ToInternalValue());
|
| +}
|
| +
|
| TEST(TimeDelta, FromAndIn) {
|
| EXPECT_TRUE(TimeDelta::FromDays(2) == TimeDelta::FromHours(48));
|
| EXPECT_TRUE(TimeDelta::FromHours(3) == TimeDelta::FromMinutes(180));
|
|
|