Browse Source

test: code coverage for scheduler class

Michele Caini 2 years ago
parent
commit
2ce6317c9a
1 changed files with 48 additions and 3 deletions
  1. 48 3
      test/entt/process/scheduler.cpp

+ 48 - 3
test/entt/process/scheduler.cpp

@@ -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);
+}