// // Copyright 2016 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // // WorkerThread_unittest: // Simple tests for the worker thread class. #include #include #include "libANGLE/WorkerThread.h" using namespace angle; namespace { // Tests simple worker pool application. TEST(WorkerPoolTest, SimpleTask) { class TestTask : public Closure { public: void operator()() override { fired = true; } bool fired = false; }; std::array, 2> pools = { {WorkerThreadPool::Create(false), WorkerThreadPool::Create(true)}}; for (auto &pool : pools) { std::array, 4> tasks = { {std::make_shared(), std::make_shared(), std::make_shared(), std::make_shared()}}; std::array, 4> waitables = { {WorkerThreadPool::PostWorkerTask(pool, tasks[0]), WorkerThreadPool::PostWorkerTask(pool, tasks[1]), WorkerThreadPool::PostWorkerTask(pool, tasks[2]), WorkerThreadPool::PostWorkerTask(pool, tasks[3])}}; WaitableEvent::WaitMany(&waitables); for (const auto &task : tasks) { EXPECT_TRUE(task->fired); } } } } // anonymous namespace