libmoost
/home/mhx/git/github/libmoost/test/algorithm/variable_length_encoding.cpp
Go to the documentation of this file.
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()