#include "cru/base/io/BufferStream.h" #include #include #include #include #include TEST_CASE("BufferStream should work.", "[io][stream]") { using namespace cru::io; const int size = 100; std::vector buffer(size); buffer[1] = std::byte(0xf0); buffer[2] = std::byte(0x0f); BufferStream stream; std::vector buffer2(size * 2); cru::Index read, read2; std::thread read_thread([&] { read = stream.Read(buffer2.data(), buffer2.size()); read2 = stream.Read(buffer2.data(), size, 1); }); std::thread write_thread([&] { stream.Write(buffer.data(), buffer.size()); stream.WriteEof(); }); read_thread.join(); write_thread.join(); REQUIRE(read == size); REQUIRE(std::ranges::equal(buffer, buffer2 | std::views::take(size))); REQUIRE(read2 == Stream::kEOF); }