Chromium Code Reviews| 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..c7ce00ef4ee7875e63e84b6b585f3fa22e1ba7bc 100644 |
| --- a/base/time/time_win_unittest.cc |
| +++ b/base/time/time_win_unittest.cc |
| @@ -241,3 +241,30 @@ 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)); |
|
jar (doing other things)
2014/08/01 04:55:32
nit: please add one more test, for *exactly* qpc_v
fmeawad
2014/08/05 22:20:09
Done.
|
| + EXPECT_EQ(expected_value, |
| + TimeTicks::FromQPCValue(qpc_value + 1)); |
| + expected_value = TimeTicks::FromInternalValue( |
| + QPCValueToMicrosecondsSafely(qpc_value - 1, ticks_per_second)); |
| + EXPECT_EQ(expected_value, |
| + TimeTicks::FromQPCValue(qpc_value - 1)); |
| +} |