// Copyright 2017, 2018 Peter Dimov. // Distributed under the Boost Software License, Version 1.0. // https://www.boost.org/LICENSE_1_0.txt #include #include #include #include #include template void test( R r ) { { Set s; for( int i = 0; i < 64; ++i ) { s.insert( i ); } Hash h; Flavor f; hash_append( h, f, s ); BOOST_TEST_EQ( h.result(), r ); } { Set s; for( int i = 0; i < 64; ++i ) { s.insert( 63 - i ); } Hash h; Flavor f; hash_append( h, f, s ); BOOST_TEST_EQ( h.result(), r ); } { Set s; for( int i = 0; i < 64; ++i ) { s.insert( ( i * 17 ) % 64 ); } Hash h; Flavor f; hash_append( h, f, s ); BOOST_TEST_EQ( h.result(), r ); } } int main() { using namespace boost::hash2; test< fnv1a_32, little_endian_flavor, std::set >( 3576652581ul ); test< fnv1a_64, little_endian_flavor, std::set >( 17046016161958689285ull ); test< fnv1a_32, little_endian_flavor, std::multiset >( 3576652581ul ); test< fnv1a_64, little_endian_flavor, std::multiset >( 17046016161958689285ull ); test< fnv1a_32, little_endian_flavor, std::unordered_set >( 3782055292ul ); test< fnv1a_64, little_endian_flavor, std::unordered_set >( 3232503781718511241ull ); test< fnv1a_32, little_endian_flavor, std::unordered_multiset >( 3782055292ul ); test< fnv1a_64, little_endian_flavor, std::unordered_multiset >( 3232503781718511241ull ); return boost::report_errors(); }