aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
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);
+}
+
}