| Index: base/time/time_win_unittest.cc
|
| diff --git a/base/time/time_win_unittest.cc b/base/time/time_win_unittest.cc
|
| index 46e256ead0cd6c84c571230ad8e7f0b8820b2cc3..c6bb66cffa53d741182596b6038722fb5446b18c 100644
|
| --- a/base/time/time_win_unittest.cc
|
| +++ b/base/time/time_win_unittest.cc
|
| @@ -241,3 +241,34 @@ TEST(TimeTicks, DISABLED_Drift) {
|
| printf("average time drift in microseconds: %lld\n",
|
| total_drift / kIterations);
|
| }
|
| +
|
| +int64 QPCValueToMicrosecondsSafely(LONGLONG qpc_value,
|
| + int64 ticks_per_second) {
|
| + int64 whole_seconds = qpc_value / ticks_per_second;
|
| + int64 leftover_ticks = qpc_value % ticks_per_second;
|
| + int64 microseconds = (whole_seconds * Time::kMicrosecondsPerSecond) +
|
| + ((leftover_ticks * Time::kMicrosecondsPerSecond) /
|
| + ticks_per_second);
|
| + return microseconds;
|
| +}
|
| +
|
| +TEST(TimeTicks, FromQPCValue) {
|
| + if (!TimeTicks::IsHighResClockWorking())
|
| + return;
|
| + LARGE_INTEGER frequency;
|
| + QueryPerformanceFrequency(&frequency);
|
| + int64 ticks_per_second = frequency.QuadPart;
|
| + LONGLONG qpc_value = Time::kQPCOverflowThreshold;
|
| + TimeTicks expected_value = TimeTicks::FromInternalValue(
|
| + QPCValueToMicrosecondsSafely(qpc_value + 1, ticks_per_second));
|
| + EXPECT_EQ(expected_value,
|
| + TimeTicks::FromQPCValue(qpc_value + 1));
|
| + expected_value = TimeTicks::FromInternalValue(
|
| + QPCValueToMicrosecondsSafely(qpc_value, ticks_per_second));
|
| + EXPECT_EQ(expected_value,
|
| + TimeTicks::FromQPCValue(qpc_value));
|
| + expected_value = TimeTicks::FromInternalValue(
|
| + QPCValueToMicrosecondsSafely(qpc_value - 1, ticks_per_second));
|
| + EXPECT_EQ(expected_value,
|
| + TimeTicks::FromQPCValue(qpc_value - 1));
|
| +}
|
|
|