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" 10f3411616SLang Hames #include "gtest/gtest.h" 11f3411616SLang Hames 12f3411616SLang Hames #include <future> 13f3411616SLang Hames 14f3411616SLang Hames using namespace llvm; 15f3411616SLang Hames using namespace llvm::orc; 16f3411616SLang Hames TEST(InPlaceTaskDispatchTest,GenericNamedTask)17f3411616SLang HamesTEST(InPlaceTaskDispatchTest, GenericNamedTask) { 18f3411616SLang Hames auto D = std::make_unique<InPlaceTaskDispatcher>(); 19f3411616SLang Hames bool B = false; 20f3411616SLang Hames D->dispatch(makeGenericNamedTask([&]() { B = true; })); 21f3411616SLang Hames EXPECT_TRUE(B); 22*c59ebe4cSLang Hames D->shutdown(); 23f3411616SLang Hames } 24f3411616SLang Hames 25f3411616SLang Hames #if LLVM_ENABLE_THREADS TEST(DynamicThreadPoolDispatchTest,GenericNamedTask)26f3411616SLang HamesTEST(DynamicThreadPoolDispatchTest, GenericNamedTask) { 27f3411616SLang Hames auto D = std::make_unique<DynamicThreadPoolTaskDispatcher>(); 28f3411616SLang Hames std::promise<bool> P; 29f3411616SLang Hames auto F = P.get_future(); 30f3411616SLang Hames D->dispatch(makeGenericNamedTask( 31f3411616SLang Hames [P = std::move(P)]() mutable { P.set_value(true); })); 32f3411616SLang Hames EXPECT_TRUE(F.get()); 33*c59ebe4cSLang Hames D->shutdown(); 34f3411616SLang Hames } 35f3411616SLang Hames #endif 36