diff options
Diffstat (limited to 'klm')
-rw-r--r-- | klm/util/joint_sort.hh | 2 | ||||
-rw-r--r-- | klm/util/joint_sort_test.cc | 12 |
2 files changed, 13 insertions, 1 deletions
diff --git a/klm/util/joint_sort.hh b/klm/util/joint_sort.hh index 5589c558..b1ec48e2 100644 --- a/klm/util/joint_sort.hh +++ b/klm/util/joint_sort.hh @@ -90,7 +90,7 @@ template <class KeyIter, class ValueIter> class JointProxy { } friend void swap(JointProxy<KeyIter, ValueIter> first, JointProxy<KeyIter, ValueIter> second) { - first.DeepSwap(second); + first.Inner().DeepSwap(second.Inner()); } private: diff --git a/klm/util/joint_sort_test.cc b/klm/util/joint_sort_test.cc index 4dc85916..b24c602c 100644 --- a/klm/util/joint_sort_test.cc +++ b/klm/util/joint_sort_test.cc @@ -47,4 +47,16 @@ BOOST_AUTO_TEST_CASE(char_int) { BOOST_CHECK_EQUAL(327, values[3]); } +BOOST_AUTO_TEST_CASE(swap_proxy) { + char keys[2] = {0, 1}; + int values[2] = {2, 3}; + detail::JointProxy<char *, int *> first(keys, values); + detail::JointProxy<char *, int *> 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 |