Allow cancellation of un-started jobs (#2777).
[dcpomatic.git] / test / job_manager_test.cc
index e11423575f48a18b91d70aa020fc0cb1fa6c54c0..4a2f8bde5f97e8849dfb0347d273c6a0edba63c8 100644 (file)
@@ -65,6 +65,7 @@ public:
                        if (finished ()) {
                                return;
                        }
+                       boost::this_thread::interruption_point();
                }
        }
 
@@ -139,3 +140,24 @@ BOOST_AUTO_TEST_CASE (job_manager_test2)
        BOOST_REQUIRE (!wait_for_jobs());
 }
 
+
+BOOST_AUTO_TEST_CASE(cancel_job_test)
+{
+       shared_ptr<Film> film;
+
+       vector<shared_ptr<TestJob>> jobs;
+       for (int i = 0; i < 2; ++i) {
+               auto job = make_shared<TestJob>(film);
+               jobs.push_back(job);
+               JobManager::instance()->add(job);
+       }
+
+       jobs[1]->cancel();
+       jobs[0]->cancel();
+
+       dcpomatic_sleep_seconds(1);
+
+       BOOST_CHECK(jobs[0]->finished_cancelled());
+       BOOST_CHECK(jobs[1]->finished_cancelled());
+}
+