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 | |