diff options
Diffstat (limited to 'test/base/io/MemoryStreamTest.cpp')
| -rw-r--r-- | test/base/io/MemoryStreamTest.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/test/base/io/MemoryStreamTest.cpp b/test/base/io/MemoryStreamTest.cpp new file mode 100644 index 00000000..684971b1 --- /dev/null +++ b/test/base/io/MemoryStreamTest.cpp @@ -0,0 +1,30 @@ +#include "cru/base/io/MemoryStream.h" +#include "cru/base/io/Stream.h" + +#include <catch2/catch_test_macros.hpp> + +#include <algorithm> +#include <cstddef> +#include <ranges> + +TEST_CASE("MemoryStream should work.", "[io][stream]") { + using namespace cru::io; + const int size = 100; + std::vector<std::byte> buffer(size); + + buffer[1] = std::byte(0xf0); + buffer[2] = std::byte(0x0f); + + MemoryStream stream(buffer.data(), size, true); + + REQUIRE(stream.CanRead()); + REQUIRE(!stream.CanWrite()); + + std::vector<std::byte> buffer2(size * 2); + + auto read = stream.Read(buffer2.data(), buffer2.size()); + auto read2 = stream.Read(buffer2.data(), 1); + REQUIRE(read == size); + REQUIRE(std::ranges::equal(buffer, buffer2 | std::views::take(size))); + REQUIRE(read2 == Stream::kEOF); +} |
