[Support] Allow multiple paired calls to {start,stop}Timer()
[oota-llvm.git] / unittests / Support / TimerTest.cpp
1 //===- unittests/TimerTest.cpp - Timer tests ------------------------------===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9
10 #include "llvm/Support/Timer.h"
11 #include "gtest/gtest.h"
12 #include <chrono>
13 #include <thread>
14
15 using namespace llvm;
16
17 namespace {
18
19 TEST(Timer, Additivity) {
20   Timer T1("T1");
21
22   EXPECT_TRUE(T1.isInitialized());
23
24   T1.startTimer();
25   T1.stopTimer();
26   auto TR1 = T1.getTotalTime();
27
28   T1.startTimer();
29   std::this_thread::sleep_for(std::chrono::milliseconds(1));
30   T1.stopTimer();
31   auto TR2 = T1.getTotalTime();
32
33   EXPECT_TRUE(TR1 < TR2);
34 }
35
36 TEST(Timer, CheckIfTriggered) {
37   Timer T1("T1");
38
39   EXPECT_FALSE(T1.hasTriggered());
40   T1.startTimer();
41   EXPECT_TRUE(T1.hasTriggered());
42   T1.stopTimer();
43   EXPECT_TRUE(T1.hasTriggered());
44
45   T1.clear();
46   EXPECT_FALSE(T1.hasTriggered());
47 }
48
49 } // end anon namespace