00001 #include <boost/test/unit_test.hpp> 00002 #include "ValueTypes.hpp" 00003 #include "Converter.hpp" 00004 #include "Record.hpp" 00005 #include <sstream> 00006 00007 using namespace aitools::invertedindex; 00008 00009 BOOST_AUTO_TEST_SUITE(record); 00010 00011 BOOST_AUTO_TEST_CASE(default_ctor) 00012 { 00013 ShortIntFloat value; 00014 Record<ShortIntFloat> record; 00015 BOOST_CHECK(record.key().empty()); 00016 BOOST_CHECK_EQUAL(record.value(), value); 00017 } 00018 00019 BOOST_AUTO_TEST_CASE(explicit_ctor) 00020 { 00021 std::string key("key"); 00022 ShortIntFloat value(1, 2, 3); 00023 Record<ShortIntFloat> record(key, value); 00024 BOOST_CHECK_EQUAL(record.key(), key); 00025 BOOST_CHECK_EQUAL(record.value(), value); 00026 } 00027 00028 BOOST_AUTO_TEST_CASE(copy_ctor) 00029 { 00030 std::string key("key"); 00031 ShortIntFloat value(1, 2, 3); 00032 Record<ShortIntFloat> record(key, value); 00033 Record<ShortIntFloat> deep_copy(record); 00034 BOOST_CHECK_EQUAL(deep_copy, record); 00035 } 00036 00037 BOOST_AUTO_TEST_CASE(equalitiy_operator) 00038 { 00039 std::string key("key"); 00040 ShortIntFloat value(1, 2, 3); 00041 Record<ShortIntFloat> record(key, value); 00042 Record<ShortIntFloat> deep_copy(record); 00043 BOOST_CHECK_EQUAL(deep_copy, record); 00044 } 00045 00046 BOOST_AUTO_TEST_CASE(assignment_operator) 00047 { 00048 std::string key("key"); 00049 ShortIntFloat value(1, 2, 3); 00050 Record<ShortIntFloat> record(key, value); 00051 Record<ShortIntFloat> deep_copy; 00052 deep_copy = record; 00053 BOOST_CHECK_EQUAL(deep_copy, record); 00054 } 00055 00056 BOOST_AUTO_TEST_CASE(parse) 00057 { 00058 std::string key("key"); 00059 ShortIntFloat value(1, 2, 3); 00060 std::istringstream iss("key 1 2 3"); 00061 Record<ShortIntFloat> record; 00062 iss >> record; 00063 BOOST_CHECK_EQUAL(record.key(), key); 00064 BOOST_CHECK_EQUAL(record.value(), value); 00065 } 00066 00067 BOOST_AUTO_TEST_CASE(print) 00068 { 00069 std::string key("key"); 00070 ShortIntFloat value(1, 2, 3); 00071 Record<ShortIntFloat> record(key, value); 00072 std::ostringstream oss; 00073 oss << record; 00074 BOOST_CHECK_EQUAL(oss.str(), "key\t1 2 3"); 00075 record.key().clear(); 00076 oss.seekp(0); 00077 oss << record; 00078 BOOST_CHECK_EQUAL(oss.str(), "EMPTY_KEY\t1 2 3"); 00079 } 00080 00081 BOOST_AUTO_TEST_CASE(to_generic) 00082 { 00083 std::string key("key"); 00084 ShortIntFloat value(1, 2, 3); 00085 Record<ShortIntFloat> record(key, value); 00086 GenericRecord generic_record; 00087 record.to_generic(generic_record); 00088 BOOST_CHECK_EQUAL(generic_record.key(), record.key()); 00089 BOOST_CHECK_EQUAL(generic_record.value().size(), 10); 00090 } 00091 00092 BOOST_AUTO_TEST_SUITE_END();