diff options
Diffstat (limited to 'src/boost/libs/fusion/test/sequence/hash.cpp')
-rw-r--r-- | src/boost/libs/fusion/test/sequence/hash.cpp | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/src/boost/libs/fusion/test/sequence/hash.cpp b/src/boost/libs/fusion/test/sequence/hash.cpp new file mode 100644 index 000000000..30b44055a --- /dev/null +++ b/src/boost/libs/fusion/test/sequence/hash.cpp @@ -0,0 +1,59 @@ +/*============================================================================= + Copyright (c) 2014 Christoph Weiss + + 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 <string> + +#include <boost/core/lightweight_test.hpp> +#include <boost/fusion/include/adapt_struct.hpp> +#include <boost/fusion/sequence/hash.hpp> + +struct test_struct +{ + test_struct(bool bb, int ii, char cc, std::string const& ss) : + b(bb), + i(ii), + c(cc), + s(ss) {} + + bool b; + int i; + char c; + std::string s; +}; + +BOOST_FUSION_ADAPT_STRUCT( + test_struct, + (bool, b) + (int, i) + (char, c) + (std::string, s) +) + +int main() +{ + using boost::fusion::hash_value; + + const test_struct a0(false, 1, 'c', "Hello Nurse"), + a1(false, 1, 'c', "Hello Nurse"), + b(true, 1, 'c', "Hello Nurse"), + c(false, 0, 'c', "Hello Nurse"), + d(false, 1, 'd', "Hello Nurse"), + e(false, 1, 'c', "Hello World"); + + BOOST_TEST(hash_value(a0) == hash_value(a1)); + BOOST_TEST(hash_value(a0) != hash_value(b)); + BOOST_TEST(hash_value(a0) != hash_value(c)); + BOOST_TEST(hash_value(a0) != hash_value(d)); + BOOST_TEST(hash_value(a0) != hash_value(e)); + BOOST_TEST(hash_value(b) != hash_value(c)); + BOOST_TEST(hash_value(b) != hash_value(d)); + BOOST_TEST(hash_value(b) != hash_value(d)); + BOOST_TEST(hash_value(c) != hash_value(d)); + BOOST_TEST(hash_value(c) != hash_value(e)); + BOOST_TEST(hash_value(d) != hash_value(e)); + return boost::report_errors(); +} |