Mercurial > lbo > hg > uvco
changeset 241:1937d63a2a14
multipromise: add test for standard generator use case
author | Lewin Bormann <lbo@spheniscida.de> |
---|---|
date | Sun, 21 Apr 2024 19:08:51 +0200 |
parents | 44d9017dc6d9 |
children | bfca650947ca |
files | test/misc_test.cc |
diffstat | 1 files changed, 22 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/test/misc_test.cc Sun Apr 21 19:04:59 2024 +0200 +++ b/test/misc_test.cc Sun Apr 21 19:08:51 2024 +0200 @@ -145,6 +145,27 @@ throw UvcoException("ticker"); } +TEST(MultiPromiseTest, standardGenerator) { + constexpr static int countMax = 10; + auto yielder = []() -> uvco::MultiPromise<int> { + for (int i = 0; i < countMax; ++i) { + co_yield i; + } + }; + + auto setup = [&yielder](const Loop &loop) -> uvco::Promise<void> { + MultiPromise<int> ticker = yielder(); + for (int i = 0; i < countMax; ++i) { + const auto value = co_await ticker; + EXPECT_TRUE(value.has_value()); + EXPECT_EQ(i, value.value()); + } + EXPECT_EQ(co_await ticker, std::nullopt); + }; + + run_loop(setup); +} + TEST(MultiPromiseTest, exception) { auto setup = [](const Loop &loop) -> uvco::Promise<void> { MultiPromise<int> ticker = miniTicker(loop); @@ -153,6 +174,7 @@ EXPECT_EQ(co_await ticker, 2); EXPECT_THROW({ co_await ticker; }, UvcoException); }; + run_loop(setup); }