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 pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy