kokkos-execution 0.0.1
Loading...
Searching...
No Matches
test_starts_on.cpp
Go to the documentation of this file.
1#include "gtest/gtest.h"
2
4PRAGMA_DIAGNOSTIC_PUSH
6#include "exec/static_thread_pool.hpp"
7PRAGMA_DIAGNOSTIC_POP
8
10
21
22namespace Tests {
23
25 static_assert(!stdexec::__has_eptr_completion<decltype(stdexec::schedule(stdexec::inline_scheduler{}))>);
26
27 using chain_t = decltype(stdexec::just());
28 static_assert(!stdexec::__has_eptr_completion<chain_t>);
29
30 static_assert(
31 stdexec::dependent_sender<decltype(stdexec::starts_on(stdexec::inline_scheduler{}, std::declval<chain_t>()))>);
32
33 return true;
34}
35
43TEST(starts_on, is_dependent_if_sch_sender_and_child_do_not_have_eptr_completion) {
45}
46
48 using chain_t = decltype(stdexec::just() | stdexec::then([]() { }));
49 static_assert(stdexec::__has_eptr_completion<chain_t>);
50
51 static_assert(
52 !stdexec::dependent_sender<decltype(stdexec::starts_on(stdexec::inline_scheduler{}, std::declval<chain_t>()))>);
53
54 // The schedule sender of a static thread pool is dependent because it checks the environment
55 // for a stop token.
56 using pool_scheduler_t = decltype(std::declval<experimental::execution::static_thread_pool&>().get_scheduler());
57 static_assert(!stdexec::__has_eptr_completion<decltype(stdexec::schedule(std::declval<pool_scheduler_t>()))>);
58 static_assert(stdexec::dependent_sender<decltype(stdexec::schedule(std::declval<pool_scheduler_t>()))>);
59
60 static_assert(stdexec::dependent_sender<decltype(stdexec::starts_on(
61 std::declval<pool_scheduler_t>(), std::declval<chain_t>()))>);
62
63 return true;
64}
65
70TEST(starts_on, may_be_non_dependent_if_child_has_eptr_completion) {
72}
73
74} // namespace Tests
#define KOKKOS_EXECUTION_STDEXEC_PRAGMA_DIAGNOSTIC_IGNORED
Basic list of ignored diagnostics when including anything from stdexec.
consteval bool test_starts_on_is_dependent_if_sch_sender_and_child_do_not_have_eptr_completion()
consteval bool test_starts_on_may_be_non_dependent_if_child_has_eptr_completion()