37 lines · cpp
1//===----------- TaskDispatchTest.cpp - Test TaskDispatch APIs ------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "llvm/ExecutionEngine/Orc/TaskDispatch.h"10#include "llvm/Config/llvm-config.h" // for LLVM_ENABLE_THREADS11#include "gtest/gtest.h"12 13#include <future>14 15using namespace llvm;16using namespace llvm::orc;17 18TEST(InPlaceTaskDispatchTest, GenericNamedTask) {19 auto D = std::make_unique<InPlaceTaskDispatcher>();20 bool B = false;21 D->dispatch(makeGenericNamedTask([&]() { B = true; }));22 EXPECT_TRUE(B);23 D->shutdown();24}25 26#if LLVM_ENABLE_THREADS27TEST(DynamicThreadPoolDispatchTest, GenericNamedTask) {28 auto D = std::make_unique<DynamicThreadPoolTaskDispatcher>(std::nullopt);29 std::promise<bool> P;30 auto F = P.get_future();31 D->dispatch(makeGenericNamedTask(32 [P = std::move(P)]() mutable { P.set_value(true); }));33 EXPECT_TRUE(F.get());34 D->shutdown();35}36#endif37