File: hash.cpp

package info (click to toggle)
boost1.74 1.74.0-9
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 464,084 kB
  • sloc: cpp: 3,338,324; xml: 131,293; python: 33,088; ansic: 14,336; asm: 4,034; sh: 3,351; makefile: 1,193; perl: 1,036; yacc: 478; php: 212; ruby: 102; lisp: 24; sql: 13; csh: 6
file content (59 lines) | stat: -rw-r--r-- 1,784 bytes parent folder | download | duplicates (10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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();
}