aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authoreldritch horrors <pennae@lix.systems>2024-06-27 21:23:50 +0200
committereldritch horrors <pennae@lix.systems>2024-07-05 22:28:16 +0000
commitb51ea465de48e4c5516ba0182cc642b4e644be10 (patch)
treeed8aa9edc953af11c29a7e6b4d4f811555568d22 /tests
parentb9f91ec3c5da5b59ff095011493dd6d2093bdd3d (diff)
libutil: allow construction of sources from generators
Change-Id: I78ff8d0720f06bce731e26d5e1c53b1382bbd589
Diffstat (limited to 'tests')
-rw-r--r--tests/unit/libutil/serialise.cc21
1 files changed, 21 insertions, 0 deletions
diff --git a/tests/unit/libutil/serialise.cc b/tests/unit/libutil/serialise.cc
index 78882ad2c..4fe010af8 100644
--- a/tests/unit/libutil/serialise.cc
+++ b/tests/unit/libutil/serialise.cc
@@ -214,4 +214,25 @@ TEST(WireFormatGenerator, exampleMessage)
}));
}
+TEST(GeneratorSource, works)
+{
+ GeneratorSource src = []() -> Generator<Bytes> {
+ co_yield std::span{"", 0};
+ co_yield std::span{"a", 1};
+ co_yield std::span{"", 0};
+ co_yield std::span{"bcd", 3};
+ co_yield std::span{"", 0};
+ }();
+
+ char buf[2];
+ ASSERT_EQ(src.read(buf, sizeof(buf)), 1);
+ ASSERT_EQ(buf[0], 'a');
+ ASSERT_EQ(src.read(buf, sizeof(buf)), 2);
+ ASSERT_EQ(buf[0], 'b');
+ ASSERT_EQ(buf[1], 'c');
+ ASSERT_EQ(src.read(buf, sizeof(buf)), 1);
+ ASSERT_EQ(buf[0], 'd');
+ ASSERT_THROW(src.read(buf, sizeof(buf)), EndOfFile);
+}
+
}