process: added rejected state

This commit is contained in:
Michele Caini
2021-03-27 23:19:15 +01:00
parent 67f8bce1dd
commit a771f083a7
2 changed files with 32 additions and 10 deletions

View File

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

View File

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