Skip to content

Commit 9dda21c

Browse files
committed
Uncomment and adjust tests.
1 parent daf12bc commit 9dda21c

File tree

1 file changed

+115
-119
lines changed

1 file changed

+115
-119
lines changed

test/stdexec/concepts/test_concepts_receiver.cpp

Lines changed: 115 additions & 119 deletions
Original file line numberDiff line numberDiff line change
@@ -14,136 +14,132 @@
1414
// * limitations under the License.
1515
// */
1616

17-
// #include <catch2/catch.hpp>
18-
// #include <stdexec/execution.hpp>
19-
// #include <test_common/receivers.hpp>
17+
#include <catch2/catch.hpp>
18+
#include <stdexec/execution.hpp>
19+
#include <test_common/receivers.hpp>
2020

21-
// namespace ex = stdexec;
21+
namespace ex = stdexec;
2222

23-
// struct recv_no_set_value {
24-
// friend void tag_invoke(ex::set_stopped_t, recv_no_set_value) noexcept {}
25-
// friend void tag_invoke(ex::set_error_t, recv_no_set_value, std::exception_ptr) noexcept {}
26-
// friend ex::env<> tag_invoke(ex::get_env_t, const recv_no_set_value&) noexcept {
27-
// return {};
28-
// }
29-
// };
23+
struct recv_no_set_value {
24+
friend void tag_invoke(ex::set_stopped_t, recv_no_set_value) noexcept {}
25+
friend void tag_invoke(ex::set_error_t, recv_no_set_value, std::exception_ptr) noexcept {}
26+
friend ex::env<> tag_invoke(ex::get_env_t, const recv_no_set_value&) noexcept {
27+
return {};
28+
}
29+
};
3030

31-
// struct recv_set_value_except {
32-
// friend void tag_invoke(ex::set_value_t, recv_set_value_except) {}
33-
// friend void tag_invoke(ex::set_stopped_t, recv_set_value_except) noexcept {}
34-
// friend void tag_invoke(ex::set_error_t, recv_set_value_except, std::exception_ptr) noexcept {}
35-
// friend ex::env<> tag_invoke(ex::get_env_t, const recv_set_value_except&) noexcept {
36-
// return {};
37-
// }
38-
// };
31+
struct recv_set_value_except {
32+
friend void tag_invoke(ex::set_value_t, recv_set_value_except) {}
33+
friend void tag_invoke(ex::set_stopped_t, recv_set_value_except) noexcept {}
34+
friend void tag_invoke(ex::set_error_t, recv_set_value_except, std::exception_ptr) noexcept {}
35+
friend ex::env<> tag_invoke(ex::get_env_t, const recv_set_value_except&) noexcept {
36+
return {};
37+
}
38+
};
3939

40-
// struct recv_set_value_noexcept {
41-
// friend void tag_invoke(ex::set_value_t, recv_set_value_noexcept) noexcept {}
42-
// friend void tag_invoke(ex::set_stopped_t, recv_set_value_noexcept) noexcept {}
43-
// friend void tag_invoke(ex::set_error_t, recv_set_value_noexcept, std::exception_ptr) noexcept
44-
// {} friend ex::env<> tag_invoke(ex::get_env_t, const recv_set_value_noexcept&) noexcept {
45-
// return {};
46-
// }
47-
// };
40+
struct recv_set_value_noexcept {
41+
friend void tag_invoke(ex::set_value_t, recv_set_value_noexcept) noexcept {}
42+
friend void tag_invoke(ex::set_stopped_t, recv_set_value_noexcept) noexcept {}
43+
friend void tag_invoke(ex::set_error_t, recv_set_value_noexcept, std::exception_ptr) noexcept
44+
{} friend ex::env<> tag_invoke(ex::get_env_t, const recv_set_value_noexcept&) noexcept {
45+
return {};
46+
}
47+
};
4848

49-
// struct recv_set_error_except {
50-
// friend void tag_invoke(ex::set_value_t, recv_set_error_except) noexcept {}
51-
// friend void tag_invoke(ex::set_stopped_t, recv_set_error_except) noexcept {}
52-
// friend void tag_invoke(ex::set_error_t, recv_set_error_except, std::exception_ptr) {
53-
// throw std::logic_error{"err"};
54-
// }
55-
// friend ex::env<> tag_invoke(ex::get_env_t, const recv_set_error_except&) noexcept {
56-
// return {};
57-
// }
58-
// };
59-
// struct recv_set_stopped_except {
60-
// friend void tag_invoke(ex::set_value_t, recv_set_stopped_except) noexcept {}
61-
// friend void tag_invoke(ex::set_stopped_t, recv_set_stopped_except) { throw
62-
// std::logic_error{"err"}; } friend void tag_invoke(ex::set_error_t, recv_set_stopped_except,
63-
// std::exception_ptr) noexcept {} friend ex::env<> tag_invoke(ex::get_env_t, const
64-
// recv_set_stopped_except&) noexcept {
65-
// return {};
66-
// }
67-
// };
49+
struct recv_set_error_except {
50+
friend void tag_invoke(ex::set_value_t, recv_set_error_except) noexcept {}
51+
friend void tag_invoke(ex::set_stopped_t, recv_set_error_except) noexcept {}
52+
friend void tag_invoke(ex::set_error_t, recv_set_error_except, std::exception_ptr) {
53+
throw std::logic_error{"err"};
54+
}
55+
friend ex::env<> tag_invoke(ex::get_env_t, const recv_set_error_except&) noexcept {
56+
return {};
57+
}
58+
};
59+
struct recv_set_stopped_except {
60+
friend void tag_invoke(ex::set_value_t, recv_set_stopped_except) noexcept {}
61+
friend void tag_invoke(ex::set_stopped_t, recv_set_stopped_except) { throw
62+
std::logic_error{"err"}; } friend void tag_invoke(ex::set_error_t, recv_set_stopped_except,
63+
std::exception_ptr) noexcept {} friend ex::env<> tag_invoke(ex::get_env_t, const
64+
recv_set_stopped_except&) noexcept {
65+
return {};
66+
}
67+
};
6868

69-
// struct recv_non_movable {
70-
// recv_non_movable() = default;
71-
// ~recv_non_movable() = default;
72-
// recv_non_movable(recv_non_movable&&) = delete;
73-
// recv_non_movable& operator=(recv_non_movable&&) = delete;
74-
// recv_non_movable(const recv_non_movable&) = default;
75-
// recv_non_movable& operator=(const recv_non_movable&) = default;
69+
struct recv_non_movable {
70+
recv_non_movable() = default;
71+
~recv_non_movable() = default;
72+
recv_non_movable(recv_non_movable&&) = delete;
73+
recv_non_movable& operator=(recv_non_movable&&) = delete;
74+
recv_non_movable(const recv_non_movable&) = default;
75+
recv_non_movable& operator=(const recv_non_movable&) = default;
7676

77-
// friend void tag_invoke(ex::set_value_t, recv_non_movable) noexcept {}
78-
// friend void tag_invoke(ex::set_stopped_t, recv_non_movable) noexcept {}
79-
// friend void tag_invoke(ex::set_error_t, recv_non_movable, std::exception_ptr) noexcept {}
80-
// friend ex::env<> tag_invoke(ex::get_env_t, const recv_non_movable&) noexcept {
81-
// return {};
82-
// }
83-
// };
77+
friend void tag_invoke(ex::set_value_t, recv_non_movable) noexcept {}
78+
friend void tag_invoke(ex::set_stopped_t, recv_non_movable) noexcept {}
79+
friend void tag_invoke(ex::set_error_t, recv_non_movable, std::exception_ptr) noexcept {}
80+
friend ex::env<> tag_invoke(ex::get_env_t, const recv_non_movable&) noexcept {
81+
return {};
82+
}
83+
};
8484

85-
// TEST_CASE("receiver types satisfy the receiver concept", "[concepts][receiver]") {
86-
// using namespace empty_recv;
85+
TEST_CASE("receiver types satisfy the receiver concept", "[concepts][receiver]") {
86+
using namespace empty_recv;
8787

88-
// REQUIRE(ex::receiver<recv0>);
89-
// REQUIRE(ex::receiver<recv_int>);
90-
// REQUIRE(ex::receiver<recv0_ec>);
91-
// REQUIRE(ex::receiver<recv_int_ec>);
92-
// REQUIRE(ex::receiver<recv0_ec, std::error_code>);
93-
// REQUIRE(ex::receiver<recv_int_ec, std::error_code>);
94-
// REQUIRE(ex::receiver<expect_void_receiver>);
95-
// REQUIRE(ex::receiver<expect_void_receiver_ex>);
96-
// REQUIRE(ex::receiver<expect_value_receiver<ex::env<>, int>>);
97-
// REQUIRE(ex::receiver<expect_value_receiver<ex::env<>, double>>);
98-
// REQUIRE(ex::receiver<expect_stopped_receiver>);
99-
// REQUIRE(ex::receiver<expect_stopped_receiver_ex>);
100-
// REQUIRE(ex::receiver<expect_error_receiver>);
101-
// REQUIRE(ex::receiver<expect_error_receiver_ex>);
102-
// REQUIRE(ex::receiver<logging_receiver>);
103-
// }
88+
REQUIRE(ex::receiver<recv0>);
89+
REQUIRE(ex::receiver<recv_int>);
90+
REQUIRE(ex::receiver<recv0_ec>);
91+
REQUIRE(ex::receiver<recv_int_ec>);
92+
REQUIRE(ex::receiver<expect_void_receiver<>>);
93+
REQUIRE(ex::receiver<expect_void_receiver_ex>);
94+
REQUIRE(ex::receiver<expect_value_receiver<ex::env<>, int>>);
95+
REQUIRE(ex::receiver<expect_value_receiver<ex::env<>, double>>);
96+
REQUIRE(ex::receiver<expect_stopped_receiver<>>);
97+
REQUIRE(ex::receiver<expect_stopped_receiver_ex<>>);
98+
REQUIRE(ex::receiver<expect_error_receiver<>>);
99+
REQUIRE(ex::receiver<expect_error_receiver_ex<std::error_code>>);
100+
REQUIRE(ex::receiver<logging_receiver>);
101+
}
104102

105-
// TEST_CASE("receiver types satisfy the receiver_of concept", "[concepts][receiver]") {
106-
// using namespace empty_recv;
103+
TEST_CASE("receiver types satisfy the receiver_of concept", "[concepts][receiver]") {
104+
using namespace empty_recv;
107105

108-
// REQUIRE(ex::receiver_of<recv0>);
109-
// REQUIRE(ex::receiver_of<recv_int, int>);
110-
// REQUIRE(ex::receiver_of<recv0_ec>);
111-
// REQUIRE(ex::receiver_of<recv_int_ec, int>);
112-
// REQUIRE(ex::receiver_of<expect_void_receiver>);
113-
// REQUIRE(ex::receiver_of<expect_void_receiver_ex>);
114-
// REQUIRE(ex::receiver_of<expect_value_receiver<ex::env<>, int>, int>);
115-
// REQUIRE(ex::receiver_of<expect_value_receiver<ex::env<>, double>, double>);
116-
// REQUIRE(ex::receiver_of<expect_stopped_receiver, char>);
117-
// REQUIRE(ex::receiver_of<expect_stopped_receiver_ex, char>);
118-
// REQUIRE(ex::receiver_of<expect_error_receiver, char>);
119-
// REQUIRE(ex::receiver_of<expect_error_receiver_ex, char>);
120-
// REQUIRE(ex::receiver_of<logging_receiver>);
121-
// }
106+
REQUIRE(ex::receiver_of<recv_int, int>);
107+
REQUIRE(ex::receiver_of<recv0_ec, ex::completion_signatures<ex::set_error_t(std::error_code)>>);
108+
REQUIRE(ex::receiver_of<recv_int_ec, ex::completion_signatures<ex::set_error_t(std::error_code)>>);
109+
REQUIRE(ex::receiver_of<recv_int_ec, int>);
110+
REQUIRE(ex::receiver_of<expect_value_receiver<ex::env<>, int>, ex::completion_signatures<ex::set_value_t(int)>>);
111+
REQUIRE(ex::receiver_of<expect_value_receiver<ex::env<>, double>, double>);
112+
REQUIRE(ex::receiver_of<expect_stopped_receiver<>, char>);
113+
REQUIRE(ex::receiver_of<expect_stopped_receiver_ex<>, char>);
114+
REQUIRE(ex::receiver_of<expect_error_receiver<>, char>);
115+
REQUIRE(ex::receiver_of<expect_error_receiver_ex<std::error_code>, char>);
116+
REQUIRE(ex::receiver_of<logging_receiver, char>);
117+
}
122118

123-
// TEST_CASE(
124-
// "receiver type w/o set_value models receiver but not receiver_of", "[concepts][receiver]") {
125-
// REQUIRE(ex::receiver<recv_no_set_value>);
126-
// REQUIRE(!ex::receiver_of<recv_no_set_value>);
127-
// }
119+
TEST_CASE(
120+
"receiver type w/o set_value models receiver but not receiver_of", "[concepts][receiver]") {
121+
REQUIRE(ex::receiver<recv_no_set_value>);
122+
REQUIRE(!ex::receiver_of<recv_no_set_value, int>);
123+
}
128124

129-
// TEST_CASE("type with set_value noexcept is a receiver", "[concepts][receiver]") {
130-
// REQUIRE(ex::receiver<recv_set_value_noexcept>);
131-
// REQUIRE(ex::receiver_of<recv_set_value_noexcept>);
132-
// }
133-
// TEST_CASE("type with throwing set_value is not a receiver", "[concepts][receiver]") {
134-
// REQUIRE(!ex::receiver<recv_set_value_except>);
135-
// REQUIRE(!ex::receiver_of<recv_set_value_except>);
136-
// }
137-
// TEST_CASE("type with throwing set_error is not a receiver", "[concepts][receiver]") {
138-
// REQUIRE(!ex::receiver<recv_set_error_except>);
139-
// REQUIRE(!ex::receiver_of<recv_set_error_except>);
140-
// }
141-
// TEST_CASE("type with throwing set_stopped is not a receiver", "[concepts][receiver]") {
142-
// REQUIRE(!ex::receiver<recv_set_stopped_except>);
143-
// REQUIRE(!ex::receiver_of<recv_set_stopped_except>);
144-
// }
125+
TEST_CASE("type with set_value noexcept is a receiver", "[concepts][receiver]") {
126+
REQUIRE(ex::receiver<recv_set_value_noexcept>);
127+
REQUIRE(ex::receiver_of<recv_set_value_noexcept, int>);
128+
}
129+
TEST_CASE("type with throwing set_value is not a receiver", "[concepts][receiver]") {
130+
REQUIRE(!ex::receiver<recv_set_value_except>);
131+
REQUIRE(!ex::receiver_of<recv_set_value_except, int>);
132+
}
133+
TEST_CASE("type with throwing set_error is not a receiver", "[concepts][receiver]") {
134+
REQUIRE(!ex::receiver<recv_set_error_except>);
135+
REQUIRE(!ex::receiver_of<recv_set_error_except, int>);
136+
}
137+
TEST_CASE("type with throwing set_stopped is not a receiver", "[concepts][receiver]") {
138+
REQUIRE(!ex::receiver<recv_set_stopped_except>);
139+
REQUIRE(!ex::receiver_of<recv_set_stopped_except, int>);
140+
}
145141

146-
// TEST_CASE("non-movable type is not a receiver", "[concepts][receiver]") {
147-
// REQUIRE(!ex::receiver<recv_non_movable>);
148-
// REQUIRE(!ex::receiver_of<recv_non_movable>);
149-
// }
142+
TEST_CASE("non-movable type is not a receiver", "[concepts][receiver]") {
143+
REQUIRE(!ex::receiver<recv_non_movable>);
144+
REQUIRE(!ex::receiver_of<recv_non_movable, int>);
145+
}

0 commit comments

Comments
 (0)