]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/container_hash/test/hash_std_tuple_test.cpp
2 // Copyright 2012 Daniel James.
3 // Distributed under the Boost Software License, Version 1.0. (See accompanying
4 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6 #include "./config.hpp"
8 #ifdef BOOST_HASH_TEST_EXTENSIONS
9 # ifdef BOOST_HASH_TEST_STD_INCLUDES
10 # include <functional>
12 # include <boost/container_hash/hash.hpp>
16 #include <boost/config.hpp>
17 #include <boost/core/lightweight_test.hpp>
19 #if defined(BOOST_HASH_TEST_EXTENSIONS) && !defined(BOOST_NO_CXX11_HDR_TUPLE)
28 void tuple_tests(T
const& v
) {
29 boost::hash
<typename
T::value_type
> hf
;
30 for(typename
T::const_iterator i
= v
.begin(); i
!= v
.end(); ++i
) {
31 for(typename
T::const_iterator j
= v
.begin(); j
!= v
.end(); ++j
) {
33 BOOST_TEST(hf(*i
) != hf(*j
));
35 BOOST_TEST(hf(*i
) == hf(*j
));
40 void empty_tuple_test() {
41 boost::hash
<std::tuple
<> > empty_tuple_hash
;
42 std::tuple
<> empty_tuple
;
43 BOOST_TEST(empty_tuple_hash(empty_tuple
) == boost::hash_value(empty_tuple
));
46 void int_tuple_test() {
47 std::vector
<std::tuple
<int> > int_tuples
;
48 int_tuples
.push_back(std::make_tuple(0));
49 int_tuples
.push_back(std::make_tuple(1));
50 int_tuples
.push_back(std::make_tuple(2));
51 tuple_tests(int_tuples
);
54 void int_string_tuple_test() {
55 std::vector
<std::tuple
<int, std::string
> > int_string_tuples
;
56 int_string_tuples
.push_back(std::make_tuple(0, std::string("zero")));
57 int_string_tuples
.push_back(std::make_tuple(1, std::string("one")));
58 int_string_tuples
.push_back(std::make_tuple(2, std::string("two")));
59 int_string_tuples
.push_back(std::make_tuple(0, std::string("one")));
60 int_string_tuples
.push_back(std::make_tuple(1, std::string("zero")));
61 int_string_tuples
.push_back(std::make_tuple(0, std::string("")));
62 int_string_tuples
.push_back(std::make_tuple(1, std::string("")));
63 tuple_tests(int_string_tuples
);
73 int_string_tuple_test();
76 return boost::report_errors();