From 5979976e6ac3d64263e306d3c253d54f0b6748fd Mon Sep 17 00:00:00 2001 From: Maksim Denisov Date: Thu, 20 Feb 2025 10:17:42 +0100 Subject: IncrementalReader: Test reading from memory --- test/utils/cpp/incremental_reader.test.cpp | 42 ++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) (limited to 'test/utils/cpp/incremental_reader.test.cpp') diff --git a/test/utils/cpp/incremental_reader.test.cpp b/test/utils/cpp/incremental_reader.test.cpp index 4f362351..96c4bcb5 100644 --- a/test/utils/cpp/incremental_reader.test.cpp +++ b/test/utils/cpp/incremental_reader.test.cpp @@ -85,6 +85,32 @@ TEST_CASE("IncrementalReader", "[incremental_reader]") { reader = IncrementalReader::FromFile(kChunkWithoutRemainder, file_path); REQUIRE(reader.has_value()); + result.clear(); + for (auto chunk : *reader) { + REQUIRE(chunk.has_value()); + result.append(*chunk); + } + REQUIRE(result.size() == file_content->size()); + REQUIRE(result == *file_content); + } + SECTION("Memory") { + auto reader = + IncrementalReader::FromMemory(kChunkWithRemainder, &*file_content); + REQUIRE(reader.has_value()); + + std::string result; + result.reserve(reader->GetContentSize()); + for (auto chunk : *reader) { + REQUIRE(chunk.has_value()); + result.append(*chunk); + } + REQUIRE(result.size() == file_content->size()); + REQUIRE(result == *file_content); + + reader = IncrementalReader::FromMemory(kChunkWithoutRemainder, + &*file_content); + REQUIRE(reader.has_value()); + result.clear(); for (auto chunk : *reader) { REQUIRE(chunk.has_value()); @@ -111,6 +137,22 @@ TEST_CASE("IncrementalReader - Empty", "[incremental_reader]") { auto const reader = IncrementalReader::FromFile(kChunkSize, empty_file); REQUIRE(reader.has_value()); + std::optional result; + for (auto chunk : *reader) { + REQUIRE(chunk.has_value()); + if (not result.has_value()) { + result = std::string{}; + } + result->append(*chunk); + } + REQUIRE(result.has_value()); + REQUIRE(result->empty()); + } + SECTION("Memory") { + std::string const empty; + auto const reader = IncrementalReader::FromMemory(kChunkSize, &empty); + REQUIRE(reader.has_value()); + std::optional result; for (auto chunk : *reader) { REQUIRE(chunk.has_value()); -- cgit v1.2.3