summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/declarative/qperformancetimer/tst_qperformancetimer.cpp24
1 files changed, 21 insertions, 3 deletions
diff --git a/tests/auto/declarative/qperformancetimer/tst_qperformancetimer.cpp b/tests/auto/declarative/qperformancetimer/tst_qperformancetimer.cpp
index 28dd95ba..958fb1a2 100644
--- a/tests/auto/declarative/qperformancetimer/tst_qperformancetimer.cpp
+++ b/tests/auto/declarative/qperformancetimer/tst_qperformancetimer.cpp
@@ -58,9 +58,27 @@ void tst_qperformancetimer::units()
{
QPerformanceTimer timer;
timer.start();
- QTest::qWait(300);
- qint64 elapsed = timer.elapsed();
- QVERIFY(elapsed > 300000000 && elapsed < 310000000);
+ {
+ QTest::qWait(300);
+ qint64 elapsed = timer.elapsed();
+ QVERIFY(elapsed > 300000000 && elapsed < 310000000);
+ }
+ {
+ qint64 monotonic_time_in_far_future = 1000000000 * 60 * 60 * 24 * 365 * 10; /// 10 years uptime
+ qint64 elapsed = timer.elapsedToAbsoluteTime(time_in_far_future);
+ elapsed = elapsed - timer.elapsedToAbsoluteTime(time_in_far_future - 2000000);
+ QVERIFY(elapsed == 2000000);
+ }
+ {
+ qint64 elapsed = timer.elapsed();
+ qint64 elapsed2 = timer.elapsedToAbsoluteTime(elapsed);
+ qint64 monotonic_now = 2 * elapsed - elapsed2;
+ QTest::qWait(300);
+ elapsed = timer.elapsed();
+ elapsed2 = timer.elapsedToAbsoluteTime(monotonic_now + 300 * 1000000);
+ qint64 diff = elapsed - elapsed2;
+ QVERIFY(diff > -10000000 && diff < 10000000);
+ }
}
QTEST_MAIN(tst_qperformancetimer)