#include "util/stream/io.hh" #include "util/stream/chain.hh" #include "util/file.hh" #define BOOST_TEST_MODULE IOTest #include <boost/test/unit_test.hpp> #include <unistd.h> namespace util { namespace stream { namespace { BOOST_AUTO_TEST_CASE(CopyFile) { std::string temps("io_test_temp"); scoped_fd in(MakeTemp(temps)); for (uint64_t i = 0; i < 100000; ++i) { WriteOrThrow(in.get(), &i, sizeof(uint64_t)); } SeekOrThrow(in.get(), 0); scoped_fd out(MakeTemp(temps)); ChainConfig config; config.entry_size = 8; config.total_memory = 1024; config.block_count = 10; Chain(config) >> PRead(in.get()) >> Write(out.get()); SeekOrThrow(out.get(), 0); for (uint64_t i = 0; i < 100000; ++i) { uint64_t got; ReadOrThrow(out.get(), &got, sizeof(uint64_t)); BOOST_CHECK_EQUAL(i, got); } } }}} // namespaces