hash_value_array_test.cpp 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. // Copyright 2005-2009 Daniel James.
  2. // Distributed under the Boost Software License, Version 1.0. (See accompanying
  3. // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  4. // On some compilers hash_value isn't available for arrays, so I test it
  5. // separately from the main array tests.
  6. #include "./config.hpp"
  7. #ifdef BOOST_HASH_TEST_EXTENSIONS
  8. # ifdef BOOST_HASH_TEST_STD_INCLUDES
  9. # include <functional>
  10. # else
  11. # include <boost/container_hash/hash.hpp>
  12. # endif
  13. #endif
  14. #include <boost/core/lightweight_test.hpp>
  15. #ifdef BOOST_HASH_TEST_EXTENSIONS
  16. void array_int_test()
  17. {
  18. const int array1[25] = {
  19. 26, -43, 32, 65, 45,
  20. 12, 67, 32, 12, 23,
  21. 0, 0, 0, 0, 0,
  22. 8, -12, 23, 65, 45,
  23. -1, 93, -54, 987, 3
  24. };
  25. BOOST_HASH_TEST_NAMESPACE::hash<int[25]> hasher1;
  26. int array2[1] = {3};
  27. BOOST_HASH_TEST_NAMESPACE::hash<int[1]> hasher2;
  28. int array3[2] = {2, 3};
  29. BOOST_HASH_TEST_NAMESPACE::hash<int[2]> hasher3;
  30. BOOST_TEST(hasher1(array1) == BOOST_HASH_TEST_NAMESPACE::hash_value(array1));
  31. BOOST_TEST(hasher2(array2) == BOOST_HASH_TEST_NAMESPACE::hash_value(array2));
  32. BOOST_TEST(hasher3(array3) == BOOST_HASH_TEST_NAMESPACE::hash_value(array3));
  33. }
  34. void two_dimensional_array_test()
  35. {
  36. int array[3][2] = {{-5, 6}, {7, -3}, {26, 1}};
  37. BOOST_HASH_TEST_NAMESPACE::hash<int[3][2]> hasher;
  38. BOOST_TEST(hasher(array) == BOOST_HASH_TEST_NAMESPACE::hash_value(array));
  39. }
  40. #endif
  41. int main()
  42. {
  43. #ifdef BOOST_HASH_TEST_EXTENSIONS
  44. array_int_test();
  45. two_dimensional_array_test();
  46. #endif
  47. return boost::report_errors();
  48. }