12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- // Copyright 2018 Daniel James
- // Distributed under 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)
- #include "./config.hpp"
- #ifndef BOOST_HASH_TEST_STD_INCLUDES
- # include <boost/container_hash/hash.hpp>
- #endif
- #include <boost/config.hpp>
- #include <boost/core/lightweight_test.hpp>
- #if BOOST_HASH_HAS_OPTIONAL
- #include <optional>
- #include <string>
- void test_optional_int()
- {
- std::optional<int> x1a;
- std::optional<int> x1b;
- std::optional<int> x2a(10);
- std::optional<int> x2b(x2a);
- std::optional<int> x3(20);
- boost::hash<std::optional<int> > hasher;
- BOOST_TEST(hasher(x1a) == hasher(x1a));
- BOOST_TEST(hasher(x1a) == hasher(x1b));
- BOOST_TEST(hasher(x1a) != hasher(x2a));
- BOOST_TEST(hasher(x1a) != hasher(x3));
- BOOST_TEST(hasher(x2a) == hasher(x2a));
- BOOST_TEST(hasher(x2b) == hasher(x2b));
- BOOST_TEST(hasher(x2a) != hasher(x3));
- BOOST_TEST(hasher(x3) == hasher(x3));
- }
- void test_optional_string()
- {
- std::optional<std::string> x1a;
- std::optional<std::string> x1b;
- std::optional<std::string> x2a("10");
- std::optional<std::string> x2b(x2a);
- std::optional<std::string> x3("20");
- boost::hash<std::optional<std::string> > hasher;
- BOOST_TEST(hasher(x1a) == hasher(x1a));
- BOOST_TEST(hasher(x1a) == hasher(x1b));
- BOOST_TEST(hasher(x1a) != hasher(x2a));
- BOOST_TEST(hasher(x1a) != hasher(x3));
- BOOST_TEST(hasher(x2a) == hasher(x2a));
- BOOST_TEST(hasher(x2b) == hasher(x2b));
- BOOST_TEST(hasher(x2a) != hasher(x3));
- BOOST_TEST(hasher(x3) == hasher(x3));
- }
- #endif
- int main()
- {
- #if BOOST_HASH_HAS_OPTIONAL
- test_optional_int();
- test_optional_string();
- #else
- BOOST_LIGHTWEIGHT_TEST_OSTREAM << "<optional> not available." << std::endl;
- #endif
- return boost::report_errors();
- }
|