test: code coverage for scheduler class

This commit is contained in:
Michele Caini
2023-11-16 11:03:56 +01:00
parent 16d43d2975
commit 2ce6317c9a

View File

@@ -1,4 +1,5 @@
#include <functional>
#include <memory>
#include <utility>
#include <gtest/gtest.h>
#include <entt/process/process.hpp>
@@ -47,10 +48,14 @@ struct Scheduler: ::testing::Test {
TEST_F(Scheduler, Functionalities) {
entt::scheduler scheduler{};
entt::scheduler other{};
bool updated = false;
bool aborted = false;
ASSERT_NO_FATAL_FAILURE(entt::scheduler{std::move(scheduler)});
ASSERT_NO_FATAL_FAILURE(scheduler = std::move(other));
ASSERT_EQ(scheduler.size(), 0u);
ASSERT_TRUE(scheduler.empty());
@@ -76,8 +81,35 @@ TEST_F(Scheduler, Functionalities) {
ASSERT_TRUE(scheduler.empty());
}
TEST_F(Scheduler, Swap) {
entt::scheduler scheduler{};
entt::scheduler other{};
int counter{};
scheduler.attach([&counter](auto &&...) { ++counter; });
ASSERT_EQ(scheduler.size(), 1u);
ASSERT_EQ(other.size(), 0u);
ASSERT_EQ(counter, 0);
scheduler.update({});
ASSERT_EQ(counter, 1);
scheduler.swap(other);
scheduler.update({});
ASSERT_EQ(scheduler.size(), 0u);
ASSERT_EQ(other.size(), 1u);
ASSERT_EQ(counter, 1);
other.update({});
ASSERT_EQ(counter, 2);
}
TEST_F(Scheduler, Then) {
entt::scheduler scheduler;
entt::scheduler scheduler{};
scheduler
// failing process with successor
@@ -105,7 +137,7 @@ TEST_F(Scheduler, Then) {
}
TEST_F(Scheduler, Functor) {
entt::scheduler scheduler;
entt::scheduler scheduler{};
bool first_functor = false;
bool second_functor = false;
@@ -134,7 +166,7 @@ TEST_F(Scheduler, Functor) {
}
TEST_F(Scheduler, SpawningProcess) {
entt::scheduler scheduler;
entt::scheduler scheduler{};
scheduler.attach([&scheduler](auto, void *, auto resolve, auto) {
scheduler.attach<succeeded_process>().then<failed_process>();
@@ -151,3 +183,16 @@ TEST_F(Scheduler, SpawningProcess) {
ASSERT_EQ(succeeded_process::invoked, 1u);
ASSERT_EQ(failed_process::invoked, 1u);
}
TEST_F(Scheduler, CustomAllocator) {
std::allocator<void> allocator{};
entt::scheduler scheduler{allocator};
ASSERT_EQ(scheduler.get_allocator(), allocator);
ASSERT_FALSE(scheduler.get_allocator() != allocator);
scheduler.attach([](auto &&...) {});
decltype(scheduler) other{std::move(scheduler), allocator};
ASSERT_EQ(other.size(), 1u);
}