libmoost
|
00001 /* vim:set ts=3 sw=3 sts=3 et: */ 00028 #include <boost/test/unit_test.hpp> 00029 #include <boost/test/test_tools.hpp> 00030 00031 #include <limits> 00032 #include <vector> 00033 00034 #include "../../include/moost/algorithm/variable_length_encoding.hpp" 00035 00036 using namespace moost::algorithm; 00037 00038 BOOST_AUTO_TEST_SUITE( variable_length_encoding_test ) 00039 00040 BOOST_AUTO_TEST_CASE( test_in_out ) 00041 { 00042 std::vector<char> data; 00043 00044 std::back_insert_iterator< std::vector<char> > data_out(data); 00045 00046 variable_length_encoding::write(123, data_out); 00047 00048 std::vector<char>::iterator it = data.begin(); 00049 int i; 00050 variable_length_encoding::read(i, it); 00051 BOOST_CHECK_EQUAL(i, 123); 00052 BOOST_CHECK(it == data.end()); 00053 } 00054 00055 BOOST_AUTO_TEST_CASE( test_zero ) 00056 { 00057 std::vector<char> data; 00058 00059 std::back_insert_iterator< std::vector<char> > data_out(data); 00060 00061 variable_length_encoding::write(0, data_out); 00062 00063 std::vector<char>::iterator it = data.begin(); 00064 int i; 00065 variable_length_encoding::read(i, it); 00066 BOOST_CHECK_EQUAL(i, 0); 00067 BOOST_CHECK(it == data.end()); 00068 BOOST_CHECK_EQUAL(data.size(), 1); 00069 } 00070 00071 BOOST_AUTO_TEST_CASE( test_limits_min ) 00072 { 00073 std::vector<char> data; 00074 00075 std::back_insert_iterator< std::vector<char> > data_out(data); 00076 00077 variable_length_encoding::write(std::numeric_limits<int>::min(), data_out); 00078 00079 std::vector<char>::iterator it = data.begin(); 00080 int i; 00081 variable_length_encoding::read(i, it); 00082 BOOST_CHECK_EQUAL(i, std::numeric_limits<int>::min()); 00083 BOOST_CHECK(it == data.end()); 00084 } 00085 00086 BOOST_AUTO_TEST_CASE( test_limits_max ) 00087 { 00088 std::vector<char> data; 00089 00090 std::back_insert_iterator< std::vector<char> > data_out(data); 00091 00092 variable_length_encoding::write(std::numeric_limits<int>::max(), data_out); 00093 00094 std::vector<char>::iterator it = data.begin(); 00095 int i; 00096 variable_length_encoding::read(i, it); 00097 BOOST_CHECK_EQUAL(i, std::numeric_limits<int>::max()); 00098 BOOST_CHECK(it == data.end()); 00099 } 00100 00101 BOOST_AUTO_TEST_SUITE_END()