diff --git a/test/entt/process/scheduler.cpp b/test/entt/process/scheduler.cpp index 6f45df697..c21c09b3d 100644 --- a/test/entt/process/scheduler.cpp +++ b/test/entt/process/scheduler.cpp @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -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().then(); @@ -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 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); +}