TimerTest.cpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. #include "llvm/Support/Timer.h"
  10. #include "gtest/gtest.h"
  11. #if LLVM_ON_WIN32
  12. #include <windows.h>
  13. #else
  14. #include <time.h>
  15. #endif
  16. using namespace llvm;
  17. namespace {
  18. // FIXME: Put this somewhere in Support, it's also used in LockFileManager.
  19. void SleepMS() {
  20. #if LLVM_ON_WIN32
  21. Sleep(1);
  22. #else
  23. struct timespec Interval;
  24. Interval.tv_sec = 0;
  25. Interval.tv_nsec = 1000000;
  26. nanosleep(&Interval, nullptr);
  27. #endif
  28. }
  29. TEST(Timer, Additivity) {
  30. Timer T1("T1", "T1");
  31. EXPECT_TRUE(T1.isInitialized());
  32. T1.startTimer();
  33. T1.stopTimer();
  34. auto TR1 = T1.getTotalTime();
  35. T1.startTimer();
  36. SleepMS();
  37. T1.stopTimer();
  38. auto TR2 = T1.getTotalTime();
  39. EXPECT_TRUE(TR1 < TR2);
  40. }
  41. TEST(Timer, CheckIfTriggered) {
  42. Timer T1("T1", "T1");
  43. EXPECT_FALSE(T1.hasTriggered());
  44. T1.startTimer();
  45. EXPECT_TRUE(T1.hasTriggered());
  46. T1.stopTimer();
  47. EXPECT_TRUE(T1.hasTriggered());
  48. T1.clear();
  49. EXPECT_FALSE(T1.hasTriggered());
  50. }
  51. } // end anon namespace