#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN #include #include class CustomWorkerBehavior : public tf::WorkerInterface { public: CustomWorkerBehavior(std::atomic& counter, std::vector& ids) : _counter {counter}, _ids {ids} { } void scheduler_prologue(tf::Worker& wv) override { _counter++; std::scoped_lock lock(_mutex); _ids.push_back(wv.id()); } void scheduler_epilogue(tf::Worker&, std::exception_ptr) override { _counter++; } std::atomic& _counter; std::vector& _ids; std::mutex _mutex; }; void worker_interface_basics(unsigned W) { std::atomic counter{0}; std::vector ids; { tf::Executor executor(W, tf::make_worker_interface(counter, ids)); } REQUIRE(counter == W*2); REQUIRE(ids.size() == W); std::sort(ids.begin(), ids.end()); for(size_t i=0; i