00001 #include <boost/test/unit_test.hpp> 00002 #include "Converter.hpp" 00003 #include "Quantile.hpp" 00004 #include <sstream> 00005 00006 using namespace aitools::invertedindex; 00007 00008 BOOST_AUTO_TEST_SUITE(quantile); 00009 00010 BOOST_AUTO_TEST_CASE(default_ctor) 00011 { 00012 Quantile quantile; 00013 for (unsigned i(0); i != Quantile::COUNT; ++i) 00014 { 00015 BOOST_CHECK_EQUAL(quantile.values()[i], 0); 00016 } 00017 } 00018 00019 BOOST_AUTO_TEST_CASE(copy_ctor) 00020 { 00021 Quantile quantile; 00022 for (unsigned i(0); i != Quantile::COUNT; ++i) 00023 { 00024 quantile.values()[i] = i; 00025 } 00026 Quantile deep_copy(quantile); 00027 for (unsigned i(0); i != Quantile::COUNT; ++i) 00028 { 00029 BOOST_CHECK_EQUAL(deep_copy.values()[i], quantile.values()[i]); 00030 } 00031 } 00032 00033 BOOST_AUTO_TEST_CASE(clear) 00034 { 00035 Quantile quantile; 00036 for (unsigned i(0); i != Quantile::COUNT; ++i) 00037 { 00038 quantile.values()[i] = i; 00039 } 00040 quantile.clear(); 00041 for (unsigned i(0); i != Quantile::COUNT; ++i) 00042 { 00043 BOOST_CHECK_EQUAL(quantile.values()[i], 0); 00044 } 00045 } 00046 00047 BOOST_AUTO_TEST_CASE(assignment_operator) 00048 { 00049 Quantile quantile; 00050 for (unsigned i(0); i != Quantile::COUNT; ++i) 00051 { 00052 quantile.values()[i] = i; 00053 } 00054 Quantile deep_copy; 00055 deep_copy = quantile; 00056 for (unsigned i(0); i != Quantile::COUNT; ++i) 00057 { 00058 BOOST_CHECK_EQUAL(deep_copy.values()[i], quantile.values()[i]); 00059 } 00060 } 00061 00062 BOOST_AUTO_TEST_CASE(add_up_operator) 00063 { 00064 Quantile quantile; 00065 for (unsigned i(0); i != Quantile::COUNT; ++i) 00066 { 00067 quantile.values()[i] = i; 00068 } 00069 quantile += quantile; 00070 for (unsigned i(0); i != Quantile::COUNT; ++i) 00071 { 00072 BOOST_CHECK_EQUAL(quantile.values()[i], 2 * i); 00073 } 00074 } 00075 00076 BOOST_AUTO_TEST_CASE(parse) 00077 { 00078 Quantile quantile; 00079 std::istringstream iss("0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18"); 00080 quantile.parse(iss); 00081 for (unsigned i(0); i != Quantile::COUNT; ++i) 00082 { 00083 BOOST_CHECK_EQUAL(quantile.values()[i], i); 00084 } 00085 } 00086 00087 BOOST_AUTO_TEST_CASE(print) 00088 { 00089 Quantile quantile; 00090 for (unsigned i(0); i != Quantile::COUNT; ++i) 00091 { 00092 quantile.values()[i] = i; 00093 } 00094 std::ostringstream oss; 00095 quantile.print(oss); 00096 std::string value; 00097 std::istringstream iss(oss.str()); 00098 for (unsigned i(0); i != Quantile::COUNT; ++i) 00099 { 00100 iss >> value; 00101 BOOST_CHECK_EQUAL(value, Converter::ui32_to_str(i)); 00102 } 00103 } 00104 00105 BOOST_AUTO_TEST_SUITE_END();