36 for(
size_t length = 2; length <= 10; ++length) {
37 for(
size_t nqueues = 1; nqueues <= 10; ++nqueues) {
38 std::list<cppext::future_queue<MovableDataType>> q;
39 for(
size_t iq = 0; iq < nqueues; ++iq) {
40 q.emplace_back(length);
44 auto nq = when_any(q.begin(), q.end());
50 theQ.push(std::move(value));
52 BOOST_CHECK(nq.pop(
id));
53 BOOST_CHECK(
id == iq);
55 BOOST_CHECK(theQ.pop(readValue));
56 BOOST_CHECK_EQUAL(readValue.
value(), length * nqueues + iq);
62 for(
size_t i = 0; i < length; ++i) {
67 BOOST_CHECK(theQ.push(std::move(value)));
70 BOOST_CHECK(theQ.push_overwrite(std::move(value)));
79 BOOST_CHECK(q.front().push_overwrite(std::move(value)) ==
false);
83 for(
size_t i = 0; i < length; ++i) {
88 BOOST_CHECK(
id == iq);
90 BOOST_CHECK(theQ.pop(readValue));
91 if(i < length - 1 || iq > 0) {
92 BOOST_CHECK_EQUAL(readValue.
value(), length * nqueues + i + iq);
95 BOOST_CHECK_EQUAL(readValue.
value(), 42);
110 for(
size_t length = 2; length <= 10; ++length) {
111 for(
size_t nqueues = 1; nqueues <= 10; ++nqueues) {
112 std::vector<cppext::future_queue<MovableDataType>> q;
113 for(
size_t iq = 0; iq < nqueues; ++iq) q.emplace_back(length);
116 for(
size_t iq = 0; iq < nqueues; ++iq) {
117 for(
size_t i = 0; i < iq; ++i) {
121 q[iq].push_overwrite(std::move(value));
124 q[iq].push(std::move(value));
130 auto nq = when_any(q.begin(), q.end());
133 for(
size_t iq = 0; iq < nqueues; ++iq) {
134 for(
size_t i = 0; i < std::min(iq, length); ++i) {
136 BOOST_CHECK(nq.pop(
id));
137 BOOST_CHECK(
id == iq);
139 BOOST_CHECK(q[iq].pop(readValue));
147 for(
size_t i = 0; i < length; ++i) {
148 for(
size_t iq = 0; iq < nqueues; ++iq) {
150 BOOST_CHECK(q[iq].push(std::move(value)));
157 BOOST_CHECK(q.front().push_overwrite(std::move(value)) ==
false);
161 for(
size_t i = 0; i < length; ++i) {
162 for(
size_t iq = 0; iq < nqueues; ++iq) {
165 BOOST_CHECK(
id == iq);
167 BOOST_CHECK(q[iq].pop(readValue));
168 if(i < length - 1 || iq > 0) {
169 BOOST_CHECK_EQUAL(readValue.
value(), length * nqueues + i + iq);
172 BOOST_CHECK_EQUAL(readValue.
value(), 42);