// 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 template typename H::result_type hash( char const (&s)[ N ], S seed ) { H h( seed ); h.update( s, N-1 ); return h.result(); } int main() { // Test vectors from https://stackoverflow.com/questions/14747343/murmurhash3-test-vectors BOOST_TEST_EQ( hash( "", 0 ), 0 ); BOOST_TEST_EQ( hash( "", 1 ), 0x514E28B7u ); BOOST_TEST_EQ( hash( "", 0xFFFFFFFFu ), 0x81F16F39u ); BOOST_TEST_EQ( hash( "\xFF\xFF\xFF\xFF", 0 ), 0x76293B50u ); BOOST_TEST_EQ( hash( "\x21\x43\x65\x87", 0 ), 0xF55B516Bu ); BOOST_TEST_EQ( hash( "\x21\x43\x65\x87", 0x5082EDEEu ), 0x2362F9DEu ); BOOST_TEST_EQ( hash( "\x21\x43\x65", 0 ), 0x7E4A8634u ); BOOST_TEST_EQ( hash( "\x21\x43", 0 ), 0xA0F7B07Au ); BOOST_TEST_EQ( hash( "\x21", 0 ), 0x72661CF4u ); BOOST_TEST_EQ( hash( "\x00\x00\x00\x00", 0 ), 0x2362F9DEu ); BOOST_TEST_EQ( hash( "\x00\x00\x00", 0 ), 0x85F0B427u ); BOOST_TEST_EQ( hash( "\x00\x00", 0 ), 0x30F4C306u ); BOOST_TEST_EQ( hash( "\x00", 0 ), 0x514E28B7u ); BOOST_TEST_EQ( hash( "abc", 0 ), 0xB3DD93FAu ); BOOST_TEST_EQ( hash( "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", 0 ), 0xEE925B90u ); BOOST_TEST_EQ( hash( "The quick brown fox jumps over the lazy dog", 0x9747B28Cu ), 0x2FA826CDu ); return boost::report_errors(); }