Jelajahi Sumber

process: added rejected state

Michele Caini 5 tahun lalu
induk
melakukan
a771f083a7
2 mengubah file dengan 32 tambahan dan 10 penghapusan
  1. 5 7
      src/entt/process/process.hpp
  2. 27 3
      test/entt/process/process.cpp

+ 5 - 7
src/entt/process/process.hpp

@@ -78,7 +78,8 @@ class process {
         SUCCEEDED,
         FAILED,
         ABORTED,
-        FINISHED
+        FINISHED,
+        REJECTED
     };
 
     template<typename Target = Derived>
@@ -218,7 +219,7 @@ public:
      * @return True if the process terminated with errors, false otherwise.
      */
     [[nodiscard]] bool rejected() const ENTT_NOEXCEPT {
-        return stopped;
+        return current == state::REJECTED;
     }
 
     /**
@@ -248,13 +249,11 @@ public:
             break;
         case state::FAILED:
             next(std::integral_constant<state, state::FAILED>{});
-            current = state::FINISHED;
-            stopped = true;
+            current = state::REJECTED;
             break;
         case state::ABORTED:
             next(std::integral_constant<state, state::ABORTED>{});
-            current = state::FINISHED;
-            stopped = true;
+            current = state::REJECTED;
             break;
         default:
             // suppress warnings
@@ -264,7 +263,6 @@ public:
 
 private:
     state current{state::UNINITIALIZED};
-    bool stopped{false};
 };
 
 

+ 27 - 3
test/entt/process/process.cpp

@@ -48,6 +48,7 @@ TEST(Process, Basics) {
     ASSERT_FALSE(process.alive());
     ASSERT_FALSE(process.dead());
     ASSERT_FALSE(process.paused());
+    ASSERT_FALSE(process.rejected());
 
     process.succeed();
     process.fail();
@@ -58,24 +59,42 @@ TEST(Process, Basics) {
     ASSERT_FALSE(process.alive());
     ASSERT_FALSE(process.dead());
     ASSERT_FALSE(process.paused());
+    ASSERT_FALSE(process.rejected());
 
     process.tick(0);
 
     ASSERT_TRUE(process.alive());
     ASSERT_FALSE(process.dead());
     ASSERT_FALSE(process.paused());
+    ASSERT_FALSE(process.rejected());
 
     process.pause();
 
     ASSERT_TRUE(process.alive());
     ASSERT_FALSE(process.dead());
     ASSERT_TRUE(process.paused());
+    ASSERT_FALSE(process.rejected());
 
     process.unpause();
 
     ASSERT_TRUE(process.alive());
     ASSERT_FALSE(process.dead());
     ASSERT_FALSE(process.paused());
+    ASSERT_FALSE(process.rejected());
+
+    process.fail();
+
+    ASSERT_FALSE(process.alive());
+    ASSERT_FALSE(process.dead());
+    ASSERT_FALSE(process.paused());
+    ASSERT_FALSE(process.rejected());
+
+    process.tick(0);
+
+    ASSERT_FALSE(process.alive());
+    ASSERT_FALSE(process.dead());
+    ASSERT_FALSE(process.paused());
+    ASSERT_TRUE(process.rejected());
 }
 
 TEST(Process, Succeeded) {
@@ -89,6 +108,7 @@ TEST(Process, Succeeded) {
     ASSERT_FALSE(process.alive());
     ASSERT_TRUE(process.dead());
     ASSERT_FALSE(process.paused());
+    ASSERT_FALSE(process.rejected());
 
     ASSERT_TRUE(process.init_invoked);
     ASSERT_TRUE(process.update_invoked);
@@ -106,8 +126,9 @@ TEST(Process, Fail) {
     process.tick(0);
 
     ASSERT_FALSE(process.alive());
-    ASSERT_TRUE(process.dead());
+    ASSERT_FALSE(process.dead());
     ASSERT_FALSE(process.paused());
+    ASSERT_TRUE(process.rejected());
 
     ASSERT_TRUE(process.init_invoked);
     ASSERT_TRUE(process.update_invoked);
@@ -128,6 +149,7 @@ TEST(Process, Data) {
     ASSERT_FALSE(process.alive());
     ASSERT_TRUE(process.dead());
     ASSERT_FALSE(process.paused());
+    ASSERT_FALSE(process.rejected());
 
     ASSERT_EQ(value, 1);
     ASSERT_TRUE(process.init_invoked);
@@ -145,8 +167,9 @@ TEST(Process, AbortNextTick) {
     process.tick(0);
 
     ASSERT_FALSE(process.alive());
-    ASSERT_TRUE(process.dead());
+    ASSERT_FALSE(process.dead());
     ASSERT_FALSE(process.paused());
+    ASSERT_TRUE(process.rejected());
 
     ASSERT_TRUE(process.init_invoked);
     ASSERT_FALSE(process.update_invoked);
@@ -162,8 +185,9 @@ TEST(Process, AbortImmediately) {
     process.abort(true);
 
     ASSERT_FALSE(process.alive());
-    ASSERT_TRUE(process.dead());
+    ASSERT_FALSE(process.dead());
     ASSERT_FALSE(process.paused());
+    ASSERT_TRUE(process.rejected());
 
     ASSERT_TRUE(process.init_invoked);
     ASSERT_FALSE(process.update_invoked);