Add tests for sf::sleep

This commit is contained in:
Chris Thrasher 2023-04-19 11:49:41 -06:00
parent cbfa9cbb65
commit 1c5c8ad700
2 changed files with 41 additions and 0 deletions

View File

@ -36,6 +36,7 @@ set(SYSTEM_SRC
System/Err.test.cpp
System/FileInputStream.test.cpp
System/MemoryInputStream.test.cpp
System/Sleep.test.cpp
System/String.test.cpp
System/Time.test.cpp
System/Vector2.test.cpp

View File

@ -0,0 +1,40 @@
#include <SFML/System/Sleep.hpp>
// Other 1st party headers
#include <SFML/System/Time.hpp>
#include <doctest/doctest.h>
#include <chrono>
using namespace std::chrono_literals;
// Specialize StringMaker for std::chrono::duration specializations
// https://github.com/doctest/doctest/blob/master/doc/markdown/stringification.md#docteststringmakert-specialisation
namespace doctest
{
template <typename Rep, typename Period>
struct StringMaker<std::chrono::duration<Rep, Period>>
{
static String convert(const std::chrono::duration<Rep, Period>& duration)
{
return toString(std::chrono::nanoseconds(duration).count()) + "ns";
}
};
} // namespace doctest
#define CHECK_SLEEP_DURATION(duration) \
do \
{ \
const auto startTime = std::chrono::steady_clock::now(); \
sf::sleep((duration)); \
const auto elapsed = std::chrono::steady_clock::now() - startTime; \
CHECK(elapsed >= (duration)); \
} while (false)
TEST_CASE("[System] sf::sleep")
{
CHECK_SLEEP_DURATION(1ms);
CHECK_SLEEP_DURATION(10ms);
CHECK_SLEEP_DURATION(100ms);
}