|
@@ -1,4 +1,5 @@
|
|
|
#include <functional>
|
|
#include <functional>
|
|
|
|
|
+#include <memory>
|
|
|
#include <utility>
|
|
#include <utility>
|
|
|
#include <gtest/gtest.h>
|
|
#include <gtest/gtest.h>
|
|
|
#include <entt/process/process.hpp>
|
|
#include <entt/process/process.hpp>
|
|
@@ -47,10 +48,14 @@ struct Scheduler: ::testing::Test {
|
|
|
|
|
|
|
|
TEST_F(Scheduler, Functionalities) {
|
|
TEST_F(Scheduler, Functionalities) {
|
|
|
entt::scheduler scheduler{};
|
|
entt::scheduler scheduler{};
|
|
|
|
|
+ entt::scheduler other{};
|
|
|
|
|
|
|
|
bool updated = false;
|
|
bool updated = false;
|
|
|
bool aborted = 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_EQ(scheduler.size(), 0u);
|
|
|
ASSERT_TRUE(scheduler.empty());
|
|
ASSERT_TRUE(scheduler.empty());
|
|
|
|
|
|
|
@@ -76,8 +81,35 @@ TEST_F(Scheduler, Functionalities) {
|
|
|
ASSERT_TRUE(scheduler.empty());
|
|
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) {
|
|
TEST_F(Scheduler, Then) {
|
|
|
- entt::scheduler scheduler;
|
|
|
|
|
|
|
+ entt::scheduler scheduler{};
|
|
|
|
|
|
|
|
scheduler
|
|
scheduler
|
|
|
// failing process with successor
|
|
// failing process with successor
|
|
@@ -105,7 +137,7 @@ TEST_F(Scheduler, Then) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
TEST_F(Scheduler, Functor) {
|
|
TEST_F(Scheduler, Functor) {
|
|
|
- entt::scheduler scheduler;
|
|
|
|
|
|
|
+ entt::scheduler scheduler{};
|
|
|
|
|
|
|
|
bool first_functor = false;
|
|
bool first_functor = false;
|
|
|
bool second_functor = false;
|
|
bool second_functor = false;
|
|
@@ -134,7 +166,7 @@ TEST_F(Scheduler, Functor) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
TEST_F(Scheduler, SpawningProcess) {
|
|
TEST_F(Scheduler, SpawningProcess) {
|
|
|
- entt::scheduler scheduler;
|
|
|
|
|
|
|
+ entt::scheduler scheduler{};
|
|
|
|
|
|
|
|
scheduler.attach([&scheduler](auto, void *, auto resolve, auto) {
|
|
scheduler.attach([&scheduler](auto, void *, auto resolve, auto) {
|
|
|
scheduler.attach<succeeded_process>().then<failed_process>();
|
|
scheduler.attach<succeeded_process>().then<failed_process>();
|
|
@@ -151,3 +183,16 @@ TEST_F(Scheduler, SpawningProcess) {
|
|
|
ASSERT_EQ(succeeded_process::invoked, 1u);
|
|
ASSERT_EQ(succeeded_process::invoked, 1u);
|
|
|
ASSERT_EQ(failed_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);
|
|
|
|
|
+}
|