//===----------- TaskDispatchTest.cpp - Test TaskDispatch APIs ------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #include "llvm/ExecutionEngine/Orc/TaskDispatch.h" #include "llvm/Config/llvm-config.h" // for LLVM_ENABLE_THREADS #include "gtest/gtest.h" #include using namespace llvm; using namespace llvm::orc; TEST(InPlaceTaskDispatchTest, GenericNamedTask) { auto D = std::make_unique(); bool B = false; D->dispatch(makeGenericNamedTask([&]() { B = true; })); EXPECT_TRUE(B); D->shutdown(); } #if LLVM_ENABLE_THREADS TEST(DynamicThreadPoolDispatchTest, GenericNamedTask) { auto D = std::make_unique(std::nullopt); std::promise P; auto F = P.get_future(); D->dispatch(makeGenericNamedTask( [P = std::move(P)]() mutable { P.set_value(true); })); EXPECT_TRUE(F.get()); D->shutdown(); } #endif