From 452a6c7181e2aeef01e8215413bce8250750ee9a Mon Sep 17 00:00:00 2001 From: Povilas Kanapickas Date: Fri, 16 Nov 2018 16:55:11 +0200 Subject: [PATCH] Add "default" empty implementation for Timer and SleepMs() --- CMakeLists.txt | 4 ++- UnitTest++/Default/TimeHelpers.cpp | 25 +++++++++++++++++ UnitTest++/Default/TimeHelpers.h | 25 +++++++++++++++++ UnitTest++/Posix/TimeHelpers.cpp | 10 ++++--- UnitTest++/Posix/TimeHelpers.h | 18 +++++------- UnitTest++/TimeHelpers.h | 44 +++++++++++++++++++++++++++++- UnitTest++/Win32/TimeHelpers.cpp | 12 ++++---- UnitTest++/Win32/TimeHelpers.h | 17 +++++------- 8 files changed, 123 insertions(+), 32 deletions(-) create mode 100644 UnitTest++/Default/TimeHelpers.cpp create mode 100644 UnitTest++/Default/TimeHelpers.h diff --git a/CMakeLists.txt b/CMakeLists.txt index a683ea1..90484f7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -54,8 +54,10 @@ source_group("" FILES ${headers_} ${sources_}) if (WIN32) add_definitions(-D_CRT_SECURE_NO_DEPRECATE) set(platformDir_ Win32) -else() +elseif(UNIX) set(platformDir_ Posix) +else() + set(platformDir_ Default) endif(WIN32) file(GLOB platformHeaders_ RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} UnitTest++/${platformDir_}/*.h) diff --git a/UnitTest++/Default/TimeHelpers.cpp b/UnitTest++/Default/TimeHelpers.cpp new file mode 100644 index 0000000..bf3fe2e --- /dev/null +++ b/UnitTest++/Default/TimeHelpers.cpp @@ -0,0 +1,25 @@ +#include "TimeHelpers.h" +#include + +namespace UnitTest { +namespace Detail { + + TimerImplDefault::TimerImplDefault() + { + } + + void TimerImplDefault::Start() + { + } + + double TimerImplDefault::GetTimeInMs() const + { + return 0; + } + + void SleepMsImplDefault(int ms) + { + } + +} +} diff --git a/UnitTest++/Default/TimeHelpers.h b/UnitTest++/Default/TimeHelpers.h new file mode 100644 index 0000000..0abc914 --- /dev/null +++ b/UnitTest++/Default/TimeHelpers.h @@ -0,0 +1,25 @@ +#ifndef UNITTEST_DEFAULT_TIMEHELPERS_H +#define UNITTEST_DEFAULT_TIMEHELPERS_H + +#include + +// An implementation on platforms that are not supported + +namespace UnitTest { +namespace Detail { + + class TimerImplDefault + { + public: + TimerImplDefault(); + void Start(); + double GetTimeInMs() const; + + private: + }; + + void SleepMsImplDefault(int ms); +} +} + +#endif diff --git a/UnitTest++/Posix/TimeHelpers.cpp b/UnitTest++/Posix/TimeHelpers.cpp index d9a78eb..9f6667f 100644 --- a/UnitTest++/Posix/TimeHelpers.cpp +++ b/UnitTest++/Posix/TimeHelpers.cpp @@ -2,19 +2,20 @@ #include namespace UnitTest { +namespace Detail { - Timer::Timer() + TimerImplPosix::TimerImplPosix() { m_startTime.tv_sec = 0; m_startTime.tv_usec = 0; } - void Timer::Start() + void TimerImplPosix::Start() { gettimeofday(&m_startTime, 0); } - double Timer::GetTimeInMs() const + double TimerImplPosix::GetTimeInMs() const { struct timeval currentTime; gettimeofday(¤tTime, 0); @@ -25,9 +26,10 @@ namespace UnitTest { return (dsecs * 1000.0) + (dus / 1000.0); } - void TimeHelpers::SleepMs(int ms) + void SleepMsImplPosix(int ms) { usleep(static_cast(ms * 1000)); } } +} diff --git a/UnitTest++/Posix/TimeHelpers.h b/UnitTest++/Posix/TimeHelpers.h index 630260d..3411381 100644 --- a/UnitTest++/Posix/TimeHelpers.h +++ b/UnitTest++/Posix/TimeHelpers.h @@ -1,14 +1,15 @@ -#ifndef UNITTEST_TIMEHELPERS_H -#define UNITTEST_TIMEHELPERS_H +#ifndef UNITTEST_POSIX_TIMEHELPERS_H +#define UNITTEST_POSIX_TIMEHELPERS_H #include namespace UnitTest { +namespace Detail { - class Timer + class TimerImplPosix { public: - Timer(); + TimerImplPosix(); void Start(); double GetTimeInMs() const; @@ -16,13 +17,8 @@ namespace UnitTest { struct timeval m_startTime; }; - - namespace TimeHelpers - { - void SleepMs(int ms); - } - - + void SleepMsImplPosix(int ms); +} } #endif diff --git a/UnitTest++/TimeHelpers.h b/UnitTest++/TimeHelpers.h index 2f186ff..d1d2a00 100644 --- a/UnitTest++/TimeHelpers.h +++ b/UnitTest++/TimeHelpers.h @@ -1,7 +1,49 @@ +#ifndef UNITTEST_TIMEHELPERS_H +#define UNITTEST_TIMEHELPERS_H + #include "Config.h" #if defined UNITTEST_POSIX #include "Posix/TimeHelpers.h" -#else +#elif defined UNITTEST_WIN32 #include "Win32/TimeHelpers.h" +#else + #include "Default/TimeHelpers.h" +#endif + +namespace UnitTest { + + class Timer + { +#if defined UNITTEST_POSIX + typedef UnitTest::Detail::TimerImplPosix TimerImpl; +#elif defined UNITTEST_WIN32 + typedef UnitTest::Detail::TimerImplWin32 TimerImpl; +#else + typedef UnitTest::Detail::TimerImplDefault TimerImpl; +#endif + + public: + Timer() {} + void Start() { m_timer.Start(); } + double GetTimeInMs() const { return m_timer.GetTimeInMs(); } + + private: + TimerImpl m_timer; + }; + + namespace TimeHelpers { + static inline void SleepMs(int ms) + { +#if defined UNITTEST_POSIX + UnitTest::Detail::SleepMsImplPosix(ms); +#elif defined UNITTEST_WIN32 + UnitTest::Detail::SleepMsImplWin32(ms); +#else + UnitTest::Detail::SleepMsImplDefault(ms); +#endif + } + } +} + #endif diff --git a/UnitTest++/Win32/TimeHelpers.cpp b/UnitTest++/Win32/TimeHelpers.cpp index 684ffdf..7d0ad90 100644 --- a/UnitTest++/Win32/TimeHelpers.cpp +++ b/UnitTest++/Win32/TimeHelpers.cpp @@ -4,8 +4,9 @@ #include namespace UnitTest { +namespace Detail { - Timer::Timer() + TimerImplWin32::TimerImplWin32() : m_threadHandle(::GetCurrentThread()) , m_startTime(0) { @@ -20,19 +21,19 @@ namespace UnitTest { ::SetThreadAffinityMask(m_threadHandle, m_processAffinityMask); } - void Timer::Start() + void TimerImplWin32::Start() { m_startTime = GetTime(); } - double Timer::GetTimeInMs() const + double TimerImplWin32::GetTimeInMs() const { __int64 const elapsedTime = GetTime() - m_startTime; double const seconds = double(elapsedTime) / double(m_frequency); return seconds * 1000.0; } - __int64 Timer::GetTime() const + __int64 TimerImplWin32::GetTime() const { LARGE_INTEGER curTime; ::SetThreadAffinityMask(m_threadHandle, 1); @@ -41,9 +42,10 @@ namespace UnitTest { return curTime.QuadPart; } - void TimeHelpers::SleepMs(int ms) + void SleepMsImplWin32(int ms) { ::Sleep(ms); } } +} diff --git a/UnitTest++/Win32/TimeHelpers.h b/UnitTest++/Win32/TimeHelpers.h index 11d4352..be7882a 100644 --- a/UnitTest++/Win32/TimeHelpers.h +++ b/UnitTest++/Win32/TimeHelpers.h @@ -1,5 +1,5 @@ -#ifndef UNITTEST_TIMEHELPERS_H -#define UNITTEST_TIMEHELPERS_H +#ifndef UNITTEST_WIN32_TIMEHELPERS_H +#define UNITTEST_WIN32_TIMEHELPERS_H #include "../Config.h" #include "../HelperMacros.h" @@ -11,11 +11,12 @@ #endif namespace UnitTest { +namespace Detail { - class UNITTEST_LINKAGE Timer + class UNITTEST_LINKAGE TimerImplWin32 { public: - Timer(); + TimerImplWin32(); void Start(); double GetTimeInMs() const; @@ -34,12 +35,8 @@ namespace UnitTest { __int64 m_frequency; }; - - namespace TimeHelpers - { - UNITTEST_LINKAGE void SleepMs(int ms); - } - + UNITTEST_LINKAGE void SleepMsImplWin32(int ms); +} } #endif