00001
00002
00003
00004
00005
00006
00007
00008 #include <cassert>
00009 #include <boost/timer.hpp>
00010 #include <iostream>
00011 #include <vector>
00012 #include <utility>
00013
00014 #include "libtorrent/buffer.hpp"
00015
00016 #include "test.hpp"
00017
00018 using libtorrent::buffer;
00019
00020 int test_main()
00021 {
00022 char data[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
00023
00024 buffer b;
00025
00026 TEST_CHECK(b.size() == 0);
00027 TEST_CHECK(b.capacity() == 0);
00028 TEST_CHECK(b.empty());
00029
00030 buffer::interval i = b.allocate(1);
00031 memcpy(i.begin, data, 1);
00032
00033 TEST_CHECK(b.size() == 1);
00034 TEST_CHECK(b.capacity() >= 1);
00035
00036 i = b.allocate(4);
00037 memcpy(i.begin, data + 1, 4);
00038 TEST_CHECK(b.size() == 5);
00039 TEST_CHECK(b.capacity() >= 5);
00040
00041 i = b.allocate(4);
00042 memcpy(i.begin, data + 5, 4);
00043 TEST_CHECK(b.size() == 9);
00044 TEST_CHECK(b.capacity() >= 9);
00045
00046 TEST_CHECK(!b.empty());
00047
00048 buffer::interval_type read_data = b.data();
00049 TEST_CHECK(std::equal(read_data.first.begin, read_data.first.end, data));
00050
00051 b.erase(5);
00052
00053 TEST_CHECK(b.space_left() == 5);
00054
00055 i = b.allocate(3);
00056 memcpy(i.begin, data, 3);
00057 TEST_CHECK(b.space_left() == 2);
00058 TEST_CHECK(b.size() == 7);
00059
00060 read_data = b.data();
00061 TEST_CHECK(std::equal(read_data.first.begin, read_data.first.end, data + 5));
00062 TEST_CHECK(std::equal(read_data.second.begin, read_data.second.end, data));
00063
00064 b.erase(7);
00065
00066 TEST_CHECK(b.empty());
00067 return 0;
00068 }
00069