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