1 // Copyright (c) 2007 Joseph Gauterin 2 // 3 // Distributed under the Boost Software License, Version 1.0. 4 // (See accompanying file LICENSE_1_0.txt or copy at 5 // http://www.boost.org/LICENSE_1_0.txt) 6 7 #include <boost/utility/swap.hpp> 8 #include <boost/core/lightweight_test.hpp> 9 #define BOOST_CHECK BOOST_TEST 10 #define BOOST_CHECK_EQUAL BOOST_TEST_EQ 11 12 //Put test class in the global namespace 13 #include "./swap_test_class.hpp" 14 15 16 //Provide swap function in namespace std 17 namespace std 18 { 19 template <> swap(swap_test_class & left,swap_test_class & right)20 void swap(swap_test_class& left, swap_test_class& right) 21 { 22 left.swap(right); 23 } 24 } 25 main()26int main() 27 { 28 const swap_test_class initial_value1(1); 29 const swap_test_class initial_value2(2); 30 31 swap_test_class object1 = initial_value1; 32 swap_test_class object2 = initial_value2; 33 34 swap_test_class::reset(); 35 boost::swap(object1,object2); 36 37 BOOST_CHECK(object1 == initial_value2); 38 BOOST_CHECK(object2 == initial_value1); 39 40 BOOST_CHECK_EQUAL(swap_test_class::swap_count(),1); 41 BOOST_CHECK_EQUAL(swap_test_class::copy_count(),0); 42 43 return boost::report_errors(); 44 } 45 46