00001 #include <boost/test/unit_test.hpp>
00002 #include "PostlistBuilder.hpp"
00003
00004 using namespace aitools::invertedindex;
00005
00006 BOOST_AUTO_TEST_SUITE(postlist_builder);
00007
00008 BOOST_AUTO_TEST_CASE(default_ctor)
00009 {
00010 PostlistBuilder builder;
00011 BOOST_CHECK(builder.empty());
00012 BOOST_CHECK_EQUAL(builder.length(), 0);
00013 }
00014
00015 BOOST_AUTO_TEST_CASE(append)
00016 {
00017 ByteBuffer buffer;
00018 unsigned length(100);
00019 PostlistBuilder builder;
00020 for (unsigned i(0); i != length; ++i)
00021 {
00022 buffer.resize(i);
00023 builder.append(buffer);
00024 }
00025 BOOST_CHECK_EQUAL(builder.length(), length);
00026 BOOST_CHECK(!builder.empty());
00027 }
00028
00029 BOOST_AUTO_TEST_CASE(iterator)
00030 {
00031
00032 uint16_t checksum(123);
00033 PostlistBuilder builder;
00034 builder.set_checksum(checksum);
00035 Iterator::SharedPointer iterator(builder.build());
00036 BOOST_CHECK_EQUAL(iterator->checksum(), checksum);
00037 BOOST_CHECK_EQUAL(iterator->length(), 0);
00038 BOOST_CHECK_EQUAL(builder.length(), 0);
00039 BOOST_CHECK(builder.empty());
00040
00041
00042 ByteBuffer buffer(1);
00043 unsigned length(100);
00044 for (unsigned i(0); i != length; ++i)
00045 {
00046 builder.append(buffer);
00047 }
00048 iterator = builder.build();
00049 BOOST_CHECK_EQUAL(iterator->length(), length);
00050 BOOST_CHECK_EQUAL(iterator->checksum(), 0);
00051 BOOST_CHECK_EQUAL(builder.length(), 0);
00052 BOOST_CHECK(builder.empty());
00053 for (unsigned i(0); i != length; ++i)
00054 {
00055 BOOST_CHECK_EQUAL(iterator->size(), 1);
00056 iterator->advance();
00057 }
00058
00059
00060 for (unsigned i(0); i != length; ++i)
00061 {
00062 buffer.resize(i);
00063 builder.append(buffer);
00064 }
00065 iterator = builder.build();
00066 BOOST_CHECK_EQUAL(iterator->length(), length);
00067 BOOST_CHECK_EQUAL(iterator->checksum(), 0);
00068 BOOST_CHECK_EQUAL(builder.length(), 0);
00069 BOOST_CHECK(builder.empty());
00070 for (unsigned i(0); i != length; ++i)
00071 {
00072 BOOST_CHECK_EQUAL(iterator->size(), i);
00073 iterator->advance();
00074 }
00075 }
00076
00077 BOOST_AUTO_TEST_SUITE_END();