diff options
Diffstat (limited to 'modules/async/tests/immediate.cpp')
-rw-r--r-- | modules/async/tests/immediate.cpp | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/modules/async/tests/immediate.cpp b/modules/async/tests/immediate.cpp new file mode 100644 index 0000000..a5d9b2f --- /dev/null +++ b/modules/async/tests/immediate.cpp @@ -0,0 +1,52 @@ +#include <forstio/test/suite.hpp> + +#include <forstio/templates.hpp> + +#include "../c++/async.hpp" + +namespace { +SAW_TEST("Immediate Conveyor"){ + using namespace saw; + + event_loop loop; + wait_scope wait{loop}; + + int val = 5; + conveyor<int> immediately_done{val}; + + int passed = 0; + auto res = immediately_done.then([&passed](int a) { + passed = a; + }).sink(); + + wait.poll(); + + SAW_EXPECT(passed == val, "Expected a 5 in passed value."); +} + +SAW_TEST("Immediate Conveyor Queueing"){ + using namespace saw; + + event_loop loop; + wait_scope wait{loop}; + + int val = 5; + conveyor<int> immediately_done{val}; + + int passed = 0; + auto res = immediately_done.then([&passed](int a) { + passed = a; + }).sink([](auto err){ + SAW_EXPECT(false, "No error should occur. This code path shouldn't be reachable."); + return err; + }); + + wait.poll(); + wait.poll(); + wait.poll(); + wait.poll(); + wait.poll(); + + SAW_EXPECT(passed == val, "Expected a 5 in passed value."); +} +} |