hash.hpp 1.5 KB

1234567891011121314151617181920212223242526272829303132333435
  1. /*=============================================================================
  2. Copyright (c) 2014 Christoph Weiss
  3. Copyright (c) 2017 Kohei Takahashi
  4. Distributed under the Boost Software License, Version 1.0. (See accompanying
  5. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  6. ==============================================================================*/
  7. #include <string>
  8. #include <utility>
  9. #include <boost/detail/lightweight_test.hpp>
  10. #include <boost/fusion/sequence/hash.hpp>
  11. #include <boost/functional/hash.hpp>
  12. void hash_test()
  13. {
  14. namespace fusion = boost::fusion;
  15. using namespace fusion;
  16. const FUSION_SEQUENCE<int, char, bool, std::string> v0(42, 'x', false, "Aurea prima");
  17. const FUSION_SEQUENCE<int, char, bool, std::string> v1(42, 'x', false, "Aurea prima");
  18. BOOST_TEST(fusion::hash_value(v0) == fusion::hash_value(v1));
  19. const FUSION_SEQUENCE<int, char, bool, std::string> w(41, 'x', false, "Aurea prima");
  20. BOOST_TEST(fusion::hash_value(w) != fusion::hash_value(v0));
  21. const FUSION_SEQUENCE<int, char, bool, std::string> x(42, 'y', false, "Aurea prima");
  22. BOOST_TEST(fusion::hash_value(x) != fusion::hash_value(v0));
  23. const FUSION_SEQUENCE<int, char, bool, std::string> y(42, 'x', true, "Aurea prima");
  24. BOOST_TEST(fusion::hash_value(y) != fusion::hash_value(v0));
  25. const FUSION_SEQUENCE<int, char, bool, std::string> z(42, 'x', false, "quae vindice nullo");
  26. BOOST_TEST(fusion::hash_value(z) != fusion::hash_value(v0));
  27. }