#include "joint_sort.hh" #define BOOST_TEST_MODULE JointSortTest #include namespace util { namespace { BOOST_AUTO_TEST_CASE(just_flip) { char keys[2]; int values[2]; keys[0] = 1; values[0] = 327; keys[1] = 0; values[1] = 87897; JointSort(keys + 0, keys + 2, values + 0); BOOST_CHECK_EQUAL(0, keys[0]); BOOST_CHECK_EQUAL(87897, values[0]); BOOST_CHECK_EQUAL(1, keys[1]); BOOST_CHECK_EQUAL(327, values[1]); } BOOST_AUTO_TEST_CASE(three) { char keys[3]; int values[3]; keys[0] = 1; values[0] = 327; keys[1] = 2; values[1] = 87897; keys[2] = 0; values[2] = 10; JointSort(keys + 0, keys + 3, values + 0); BOOST_CHECK_EQUAL(0, keys[0]); BOOST_CHECK_EQUAL(1, keys[1]); BOOST_CHECK_EQUAL(2, keys[2]); } BOOST_AUTO_TEST_CASE(char_int) { char keys[4]; int values[4]; keys[0] = 3; values[0] = 327; keys[1] = 1; values[1] = 87897; keys[2] = 2; values[2] = 10; keys[3] = 0; values[3] = 24347; JointSort(keys + 0, keys + 4, values + 0); BOOST_CHECK_EQUAL(0, keys[0]); BOOST_CHECK_EQUAL(24347, values[0]); BOOST_CHECK_EQUAL(1, keys[1]); BOOST_CHECK_EQUAL(87897, values[1]); BOOST_CHECK_EQUAL(2, keys[2]); BOOST_CHECK_EQUAL(10, values[2]); BOOST_CHECK_EQUAL(3, keys[3]); BOOST_CHECK_EQUAL(327, values[3]); } BOOST_AUTO_TEST_CASE(swap_proxy) { char keys[2] = {0, 1}; int values[2] = {2, 3}; detail::JointProxy first(keys, values); detail::JointProxy second(keys + 1, values + 1); swap(first, second); BOOST_CHECK_EQUAL(1, keys[0]); BOOST_CHECK_EQUAL(0, keys[1]); BOOST_CHECK_EQUAL(3, values[0]); BOOST_CHECK_EQUAL(2, values[1]); } }} // namespace anonymous util