kokkos-execution
0.0.1
Toggle main menu visibility
Loading...
Searching...
No Matches
test_starts_on.cpp
Go to the documentation of this file.
1
#include "gtest/gtest.h"
2
3
#include "
kokkos-execution/utils/ignore_warnings.hpp
"
4
PRAGMA_DIAGNOSTIC_PUSH
5
KOKKOS_EXECUTION_STDEXEC_PRAGMA_DIAGNOSTIC_IGNORED
6
#include "exec/static_thread_pool.hpp"
7
PRAGMA_DIAGNOSTIC_POP
8
9
#include "
kokkos-execution/stdexec.hpp
"
10
21
22
namespace
Tests
{
23
24
consteval
bool
test_starts_on_is_dependent_if_sch_sender_and_child_do_not_have_eptr_completion
() {
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
43
TEST(starts_on, is_dependent_if_sch_sender_and_child_do_not_have_eptr_completion) {
44
static_assert
(
test_starts_on_is_dependent_if_sch_sender_and_child_do_not_have_eptr_completion
());
45
}
46
47
consteval
bool
test_starts_on_may_be_non_dependent_if_child_has_eptr_completion
() {
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
70
TEST(starts_on, may_be_non_dependent_if_child_has_eptr_completion) {
71
static_assert
(
test_starts_on_may_be_non_dependent_if_child_has_eptr_completion
());
72
}
73
74
}
// namespace Tests
ignore_warnings.hpp
KOKKOS_EXECUTION_STDEXEC_PRAGMA_DIAGNOSTIC_IGNORED
#define KOKKOS_EXECUTION_STDEXEC_PRAGMA_DIAGNOSTIC_IGNORED
Basic list of ignored diagnostics when including anything from stdexec.
Definition
ignore_warnings.hpp:38
stdexec.hpp
Tests
Definition
test_any_sender.cpp:39
Tests::test_starts_on_is_dependent_if_sch_sender_and_child_do_not_have_eptr_completion
consteval bool test_starts_on_is_dependent_if_sch_sender_and_child_do_not_have_eptr_completion()
Definition
test_starts_on.cpp:24
Tests::test_starts_on_may_be_non_dependent_if_child_has_eptr_completion
consteval bool test_starts_on_may_be_non_dependent_if_child_has_eptr_completion()
Definition
test_starts_on.cpp:47
tests
stdexec
test_starts_on.cpp
Generated on
for kokkos-execution by
1.18.0