@@ -83,21 +83,21 @@ TEST(TaskTest, SlowTask_WithInt32Vector_ThrowsOnTimeout) {
8383 {
8484 std::vector<int32_t > in (20 , 1 );
8585 ppc::test::FakeSlowTask<std::vector<int32_t >, int32_t > test_task (in);
86+ test_task.ExpectIncompleteLifecycle (); // Task may not complete due to timeout
8687 ASSERT_EQ (test_task.Validation (), true );
8788 test_task.PreProcessing ();
8889 test_task.Run ();
8990 ASSERT_ANY_THROW (test_task.PostProcessing ());
9091 }
91- ppc::util::DestructorFailureFlag::Unset ();
9292}
9393
9494TEST (TaskTest, TestTask_WithEmptyInput_ValidationFails) {
9595 {
9696 std::vector<int32_t > in;
9797 ppc::test::TestTask<std::vector<int32_t >, int32_t > test_task (in);
98+ test_task.ExpectIncompleteLifecycle (); // Task fails validation so won't complete
9899 ASSERT_EQ (test_task.Validation (), false );
99100 }
100- ppc::util::DestructorFailureFlag::Unset ();
101101}
102102
103103TEST (TaskTest, TestTask_WithDoubleVector_CompletesSuccessfully) {
@@ -124,30 +124,30 @@ TEST(TaskTest, TestTask_WithWrongExecutionOrder_ThrowsRuntimeError) {
124124 {
125125 std::vector<float > in (20 , 1 );
126126 ppc::test::TestTask<std::vector<float >, float > test_task (in);
127+ test_task.ExpectIncompleteLifecycle (); // Task has wrong execution order
127128 ASSERT_EQ (test_task.Validation (), true );
128129 test_task.PreProcessing ();
129130 EXPECT_THROW (test_task.PostProcessing (), std::runtime_error);
130131 }
131- ppc::util::DestructorFailureFlag::Unset ();
132132}
133133
134134TEST (TaskTest, TestTask_WithPrematurePostProcessingNoSteps_ThrowsRuntimeError) {
135135 {
136136 std::vector<float > in (20 , 1 );
137137 ppc::test::TestTask<std::vector<float >, float > test_task (in);
138+ test_task.ExpectIncompleteLifecycle (); // Task throws exception so won't complete
138139 EXPECT_THROW (test_task.PostProcessing (), std::runtime_error);
139140 }
140- ppc::util::DestructorFailureFlag::Unset ();
141141}
142142
143143TEST (TaskTest, TestTask_WithPrematurePostProcessingAfterPreProcessing_ThrowsRuntimeError) {
144144 {
145145 std::vector<float > in (20 , 1 );
146146 ppc::test::TestTask<std::vector<float >, float > test_task (in);
147+ test_task.ExpectIncompleteLifecycle (); // Task throws exceptions so won't complete
147148 EXPECT_THROW (test_task.PreProcessing (), std::runtime_error);
148149 EXPECT_THROW (test_task.PostProcessing (), std::runtime_error);
149150 }
150- ppc::util::DestructorFailureFlag::Unset ();
151151}
152152
153153TEST (TaskTest, GetStringTaskStatus_WithDisabledStatus_ReturnsDisabled) {
@@ -228,10 +228,10 @@ TEST(TaskTest, TaskDestructor_WithIncompleteStage_SetsDestructorFailureFlag) {
228228 bool RunImpl () override { return true ; }
229229 bool PostProcessingImpl () override { return true ; }
230230 } task (in);
231+ task.ExpectIncompleteLifecycle (); // Mark this task as expected to be incomplete
231232 task.Validation ();
232233 }
233- EXPECT_TRUE (ppc::util::DestructorFailureFlag::Get ());
234- ppc::util::DestructorFailureFlag::Unset ();
234+ // No need to check global flag - task handles its own validation
235235}
236236
237237TEST (TaskTest, TaskDestructor_WithEmptyTask_SetsDestructorFailureFlag) {
@@ -244,9 +244,9 @@ TEST(TaskTest, TaskDestructor_WithEmptyTask_SetsDestructorFailureFlag) {
244244 bool RunImpl () override { return true ; }
245245 bool PostProcessingImpl () override { return true ; }
246246 } task (in);
247+ task.ExpectIncompleteLifecycle (); // Mark this task as expected to be incomplete
247248 }
248- EXPECT_TRUE (ppc::util::DestructorFailureFlag::Get ());
249- ppc::util::DestructorFailureFlag::Unset ();
249+ // No need to check global flag - task handles its own validation
250250}
251251
252252TEST (TaskTest, InternalTimeTest_WithTimeoutExceeded_ThrowsRuntimeError) {
@@ -264,13 +264,13 @@ TEST(TaskTest, InternalTimeTest_WithTimeoutExceeded_ThrowsRuntimeError) {
264264 {
265265 std::vector<int32_t > in (20 , 1 );
266266 SlowTask task (in);
267+ task.ExpectIncompleteLifecycle (); // Task throws timeout exception
267268 task.GetStateOfTesting () = StateOfTesting::kFunc ;
268269 task.Validation ();
269270 EXPECT_NO_THROW (task.PreProcessing ());
270271 task.Run ();
271272 EXPECT_THROW (task.PostProcessing (), std::runtime_error);
272273 }
273- ppc::util::DestructorFailureFlag::Unset ();
274274}
275275
276276class DummyTask : public Task <int , int > {
@@ -285,36 +285,36 @@ class DummyTask : public Task<int, int> {
285285TEST (TaskTest, Validation_WhenCalledTwice_ThrowsRuntimeError) {
286286 {
287287 auto task = std::make_shared<DummyTask>();
288+ task->ExpectIncompleteLifecycle (); // Task throws exception so won't complete
288289 task->Validation ();
289290 EXPECT_THROW (task->Validation (), std::runtime_error);
290291 }
291- ppc::util::DestructorFailureFlag::Unset ();
292292}
293293
294294TEST (TaskTest, PreProcessing_WhenCalledBeforeValidation_ThrowsRuntimeError) {
295295 {
296296 auto task = std::make_shared<DummyTask>();
297+ task->ExpectIncompleteLifecycle (); // Task throws exception so won't complete
297298 EXPECT_THROW (task->PreProcessing (), std::runtime_error);
298299 }
299- ppc::util::DestructorFailureFlag::Unset ();
300300}
301301
302302TEST (TaskTest, Run_WhenCalledBeforePreProcessing_ThrowsRuntimeError) {
303303 {
304304 auto task = std::make_shared<DummyTask>();
305+ task->ExpectIncompleteLifecycle (); // Task throws exception so won't complete
305306 EXPECT_THROW (task->Run (), std::runtime_error);
306307 }
307- ppc::util::DestructorFailureFlag::Unset ();
308308}
309309
310310TEST (TaskTest, PostProcessing_WhenCalledBeforeRun_ThrowsRuntimeError) {
311311 {
312312 auto task = std::make_shared<DummyTask>();
313+ task->ExpectIncompleteLifecycle (); // Task throws exception so won't complete
313314 task->Validation ();
314315 task->PreProcessing ();
315316 EXPECT_THROW (task->PostProcessing (), std::runtime_error);
316317 }
317- ppc::util::DestructorFailureFlag::Unset ();
318318}
319319
320320int main (int argc, char ** argv) { return ppc::runners::SimpleInit (argc, argv); }
0 commit comments