@@ -190,6 +190,50 @@ TEST(TaskTest, InternalTimeTest_ThrowsIfTimeoutExceeded) {
190190 EXPECT_THROW (task.PostProcessing (), std::runtime_error);
191191}
192192
193+ class DummyTask : public ppc ::core::Task<int , int > {
194+ public:
195+ using Task::Task;
196+ bool ValidationImpl () override { return true ; }
197+ bool PreProcessingImpl () override { return true ; }
198+ bool RunImpl () override { return true ; }
199+ bool PostProcessingImpl () override { return true ; }
200+ };
201+
202+ TEST (TaskTest, ValidationThrowsIfCalledTwice) {
203+ auto test_func = [&] {
204+ auto task = std::make_shared<DummyTask>();
205+ task->Validation ();
206+ EXPECT_THROW (task->Validation (), std::runtime_error);
207+ };
208+ EXPECT_DEATH_IF_SUPPORTED ({ test_func (); }, " ORDER OF FUNCTIONS IS NOT RIGHT" );
209+ }
210+
211+ TEST (TaskTest, PreProcessingThrowsIfCalledBeforeValidation) {
212+ auto test_func = [&] {
213+ auto task = std::make_shared<DummyTask>();
214+ EXPECT_THROW (task->PreProcessing (), std::runtime_error);
215+ };
216+ EXPECT_DEATH_IF_SUPPORTED ({ test_func (); }, " ORDER OF FUNCTIONS IS NOT RIGHT" );
217+ }
218+
219+ TEST (TaskTest, RunThrowsIfCalledBeforePreProcessing) {
220+ auto test_func = [&] {
221+ auto task = std::make_shared<DummyTask>();
222+ EXPECT_THROW (task->Run (), std::runtime_error);
223+ };
224+ EXPECT_DEATH_IF_SUPPORTED ({ test_func (); }, " ORDER OF FUNCTIONS IS NOT RIGHT" );
225+ }
226+
227+ TEST (TaskTest, PostProcessingThrowsIfCalledBeforeRun) {
228+ auto test_func = [&] {
229+ auto task = std::make_shared<DummyTask>();
230+ task->Validation ();
231+ task->PreProcessing ();
232+ EXPECT_THROW (task->PostProcessing (), std::runtime_error);
233+ };
234+ EXPECT_DEATH_IF_SUPPORTED ({ test_func (); }, " ORDER OF FUNCTIONS IS NOT RIGHT" );
235+ }
236+
193237int main (int argc, char ** argv) {
194238 testing::InitGoogleTest (&argc, argv);
195239 return RUN_ALL_TESTS ();
0 commit comments