X-Git-Url: https://main.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=test%2Fjob_test.cc;h=7fb240843b884a9ebfa324cb464485cc5db3994d;hp=86c6dc9e342d45648ae92793be10f029d9d07eea;hb=07b21bb92a8d54c6c03de9aadc63ab93b65d9bc5;hpb=89115db77729a2c99f1a09ff6a461720e16f889e diff --git a/test/job_test.cc b/test/job_test.cc index 86c6dc9e3..7fb240843 100644 --- a/test/job_test.cc +++ b/test/job_test.cc @@ -1,31 +1,55 @@ /* - Copyright (C) 2012 Carl Hetherington + Copyright (C) 2012-2021 Carl Hetherington - This program is free software; you can redistribute it and/or modify + This file is part of DCP-o-matic. + + DCP-o-matic is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, + DCP-o-matic is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + along with DCP-o-matic. If not, see . */ + +/** @file test/job_test.cc + * @brief Test Job and JobManager. + * @ingroup selfcontained + */ + + +#include "lib/cross.h" +#include "lib/job.h" +#include "lib/job_manager.h" +#include + + +using std::make_shared; +using std::shared_ptr; +using std::string; + + class TestJob : public Job { public: - TestJob (shared_ptr f) - : Job (f) + explicit TestJob (shared_ptr film) + : Job (film) { } + ~TestJob () + { + stop_thread (); + } + void set_finished_ok () { set_state (FINISHED_OK); } @@ -36,7 +60,7 @@ public: void run () { - while (1) { + while (true) { if (finished ()) { return; } @@ -46,19 +70,24 @@ public: string name () const { return ""; } + + string json_name () const { + return ""; + } }; + BOOST_AUTO_TEST_CASE (job_manager_test) { - shared_ptr f; + shared_ptr film; /* Single job */ - shared_ptr a (new TestJob (f)); + auto a = make_shared(film); JobManager::instance()->add (a); - dcpomatic_sleep (1); + dcpomatic_sleep_seconds (1); BOOST_CHECK_EQUAL (a->running (), true); a->set_finished_ok (); - dcpomatic_sleep (2); + dcpomatic_sleep_seconds (2); BOOST_CHECK_EQUAL (a->finished_ok(), true); }