GitHub Viewer
#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN
#include
#include
TEST_CASE("SimplePriority.Sequential" * doctest::timeout(300)) {
tf::Executor executor(1);
tf::Taskflow taskflow;
int counter = 0;
auto [A, B, C, D, E] = taskflow.emplace(
[&] () { counter = 0; },
[&] () { REQUIRE(counter == 0); counter++; },
[&] () { REQUIRE(counter == 2); counter++; },
[&] () { REQUIRE(counter == 1); counter++; },
[&] () { }
);
A.precede(B, C, D);
E.succeed(B, C, D);
REQUIRE(B.priority() == tf::TaskPriority::HIGH);
REQUIRE(C.priority() == tf::TaskPriority::HIGH);
REQUIRE(D.priority() == tf::TaskPriority::HIGH);
B.priority(tf::TaskPriority::HIGH);
C.priority(tf::TaskPriority::LOW);
D.priority(tf::TaskPriority::NORMAL);
REQUIRE(B.priority() == tf::TaskPriority::HIGH);
REQUIRE(C.priority() == tf::TaskPriority::LOW);
REQUIRE(D.priority() == tf::TaskPriority::NORMAL);
executor.run_n(taskflow, 100).wait();
}
TEST_CASE("RandomPriority.Sequential" * doctest::timeout(300)) {
tf::Executor executor(1);
tf::Taskflow taskflow;
const auto MAX_P = static_cast(tf::TaskPriority::MAX);
auto beg = taskflow.emplace([](){});
auto end = taskflow.emplace([](){});
size_t counters[MAX_P];
size_t priorities[MAX_P];
for(unsigned p=0; p