00001 #include "util/stream/io.hh"
00002
00003 #include "util/stream/stream.hh"
00004 #include "util/file.hh"
00005
00006 #define BOOST_TEST_MODULE StreamTest
00007 #include <boost/test/unit_test.hpp>
00008
00009 #include <unistd.h>
00010
00011 namespace util { namespace stream { namespace {
00012
00013 BOOST_AUTO_TEST_CASE(StreamTest) {
00014 scoped_fd in(MakeTemp("io_test_temp"));
00015 for (uint64_t i = 0; i < 100000; ++i) {
00016 WriteOrThrow(in.get(), &i, sizeof(uint64_t));
00017 }
00018 SeekOrThrow(in.get(), 0);
00019
00020 ChainConfig config;
00021 config.entry_size = 8;
00022 config.total_memory = 100;
00023 config.block_count = 12;
00024
00025 Stream s;
00026 Chain chain(config);
00027 chain >> Read(in.get()) >> s >> kRecycle;
00028 uint64_t i = 0;
00029 for (; s; ++s, ++i) {
00030 BOOST_CHECK_EQUAL(i, *static_cast<const uint64_t*>(s.Get()));
00031 }
00032 BOOST_CHECK_EQUAL(100000ULL, i);
00033 }
00034
00035 }}}