// (C) Copyright Daniel James 2005. // Use, modification and distribution are subject to the // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // This checks that template code implemented using hash_fwd will work. #include "./hash_fwd_test.hpp" #define BOOST_TEST_MAIN #include #if defined(TEST_EXTENSIONS) && !defined(TEST_STD_INCLUDES) #include #include BOOST_AUTO_TEST_CASE(fwd_test1) { test_type1 x(5); test_type1 y("Test"); BOOST_CHECK_EQUAL( boost::hash()(5), boost::hash >()(x)); BOOST_CHECK_EQUAL( boost::hash()("Test"), boost::hash >()(y)); } BOOST_AUTO_TEST_CASE(fwd_test2) { test_type2 x(5, 10); test_type2 y("Test1", "Test2"); std::size_t seed1 = 0; boost::hash_combine(seed1, 5); boost::hash_combine(seed1, 10); std::size_t seed2 = 0; boost::hash_combine(seed2, std::string("Test1")); boost::hash_combine(seed2, std::string("Test2")); BOOST_CHECK_EQUAL(seed1, boost::hash >()(x)); BOOST_CHECK_EQUAL(seed2, boost::hash >()(y)); } BOOST_AUTO_TEST_CASE(fwd_test3) { std::vector values1; values1.push_back(10); values1.push_back(15); values1.push_back(20); values1.push_back(3); std::vector values2; values2.push_back("Groucho"); values2.push_back("Harpo"); test_type3 x(values1.begin(), values1.end()); test_type3 y(values2.begin(), values2.end()); std::size_t seed1 = boost::hash_range(values1.begin(), values1.end()); boost::hash_range(seed1, values1.begin(), values1.end()); std::size_t seed2 = boost::hash_range(values2.begin(), values2.end()); boost::hash_range(seed2, values2.begin(), values2.end()); BOOST_CHECK_EQUAL(seed1, boost::hash >()(x)); BOOST_CHECK_EQUAL(seed2, boost::hash >()(y)); } #endif