#include #include #include #include #include using namespace mbgl::util; class TestThread { public: TestThread(WorkQueue* queue_) : queue(queue_) {} void send(std::function&& fn) { queue->push(std::move(fn)); } private: WorkQueue* queue; }; TEST(WorkQueue, push) { RunLoop loop; WorkQueue queue; Thread thread({"Test"}, &queue); uint8_t count = 0; auto endTest = [&]() { if (++count == 4) { loop.stop(); } }; thread.invoke(&TestThread::send, endTest); thread.invoke(&TestThread::send, endTest); thread.invoke(&TestThread::send, endTest); thread.invoke(&TestThread::send, endTest); loop.run(); } TEST(WorkQueue, cancel) { RunLoop loop; WorkQueue queue; auto work = [&]() { FAIL() << "Should never be called"; }; queue.push(work); queue.push(work); queue.push(work); queue.push(work); queue.push(work); }