2021-12-23 17:10:21 -06:00
|
|
|
#include <SFML/System/Clock.hpp>
|
2022-02-10 17:19:01 +00:00
|
|
|
#include <SFML/System/Time.hpp>
|
2021-12-23 17:10:21 -06:00
|
|
|
|
2023-01-17 21:51:08 -07:00
|
|
|
#include <catch2/catch_test_macros.hpp>
|
2021-12-23 17:10:21 -06:00
|
|
|
|
2022-07-04 11:20:58 -05:00
|
|
|
#include <SystemUtil.hpp>
|
|
|
|
#include <thread>
|
2022-07-25 00:36:05 -06:00
|
|
|
#include <type_traits>
|
|
|
|
|
2022-07-04 23:51:18 -06:00
|
|
|
TEST_CASE("[System] sf::Clock")
|
2021-12-23 17:10:21 -06:00
|
|
|
{
|
2022-07-20 14:40:45 +02:00
|
|
|
using namespace std::chrono_literals;
|
|
|
|
|
2023-01-17 21:51:08 -07:00
|
|
|
SECTION("Type traits")
|
|
|
|
{
|
2024-12-12 22:40:57 -07:00
|
|
|
STATIC_CHECK(std::is_trivially_copy_constructible_v<sf::Clock>);
|
|
|
|
STATIC_CHECK(std::is_trivially_copy_assignable_v<sf::Clock>);
|
2023-01-17 21:51:08 -07:00
|
|
|
STATIC_CHECK(std::is_nothrow_move_constructible_v<sf::Clock>);
|
|
|
|
STATIC_CHECK(std::is_nothrow_move_assignable_v<sf::Clock>);
|
|
|
|
}
|
|
|
|
|
2022-07-20 14:40:45 +02:00
|
|
|
SECTION("Construction")
|
|
|
|
{
|
|
|
|
const sf::Clock clock;
|
|
|
|
CHECK(clock.isRunning());
|
|
|
|
CHECK(clock.getElapsedTime() >= sf::microseconds(0));
|
|
|
|
}
|
|
|
|
|
2023-01-17 21:51:08 -07:00
|
|
|
SECTION("getElapsedTime()")
|
2021-12-23 17:10:21 -06:00
|
|
|
{
|
|
|
|
const sf::Clock clock;
|
|
|
|
CHECK(clock.getElapsedTime() >= sf::microseconds(0));
|
|
|
|
const auto elapsed = clock.getElapsedTime();
|
2022-07-20 14:40:45 +02:00
|
|
|
std::this_thread::sleep_for(1ms);
|
2021-12-23 17:10:21 -06:00
|
|
|
CHECK(clock.getElapsedTime() > elapsed);
|
|
|
|
}
|
|
|
|
|
2022-07-20 14:40:45 +02:00
|
|
|
SECTION("start/stop")
|
|
|
|
{
|
|
|
|
sf::Clock clock;
|
|
|
|
clock.stop();
|
|
|
|
CHECK(!clock.isRunning());
|
|
|
|
const auto elapsed = clock.getElapsedTime();
|
|
|
|
std::this_thread::sleep_for(1ms);
|
|
|
|
CHECK(elapsed == clock.getElapsedTime());
|
|
|
|
|
|
|
|
clock.start();
|
|
|
|
CHECK(clock.isRunning());
|
|
|
|
CHECK(clock.getElapsedTime() >= elapsed);
|
|
|
|
}
|
|
|
|
|
2023-01-17 21:51:08 -07:00
|
|
|
SECTION("restart()")
|
2021-12-23 17:10:21 -06:00
|
|
|
{
|
|
|
|
sf::Clock clock;
|
|
|
|
CHECK(clock.restart() >= sf::microseconds(0));
|
2022-07-20 14:40:45 +02:00
|
|
|
CHECK(clock.isRunning());
|
|
|
|
std::this_thread::sleep_for(1ms);
|
2021-12-23 17:10:21 -06:00
|
|
|
const auto elapsed = clock.restart();
|
|
|
|
CHECK(clock.restart() < elapsed);
|
|
|
|
}
|
2022-07-20 14:40:45 +02:00
|
|
|
|
|
|
|
SECTION("reset()")
|
|
|
|
{
|
|
|
|
sf::Clock clock;
|
|
|
|
CHECK(clock.reset() >= sf::microseconds(0));
|
|
|
|
CHECK(!clock.isRunning());
|
|
|
|
}
|
2021-12-23 17:10:21 -06:00
|
|
|
}
|