From 21530840e182e107d2949141687c2fd5c47d3b3d Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Wed, 31 Aug 2022 15:09:29 +0300 Subject: [PATCH] Add hash_string_test4.cpp --- test/Jamfile.v2 | 1 + test/hash_string_test4.cpp | 41 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 test/hash_string_test4.cpp diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index a0c3e21..eb01b2d 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -85,3 +85,4 @@ run hash_container_test.cpp ; run hash_vector_test2.cpp ; run hash_string_test3.cpp ; +run hash_string_test4.cpp ; diff --git a/test/hash_string_test4.cpp b/test/hash_string_test4.cpp new file mode 100644 index 0000000..5d3dc60 --- /dev/null +++ b/test/hash_string_test4.cpp @@ -0,0 +1,41 @@ +// Copyright 2021, 2022 Peter Dimov. +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#include +#include +#include +#include + +void test( std::size_t n, unsigned char ch ) +{ + typedef boost::hash hash; + + std::string const v( n, static_cast( ch ) ); + + for( std::size_t i = 0; i < n * 8; ++i ) + { + std::string w( v ); + + unsigned char ch2 = static_cast( w[ i / 8 ] ); + + ch2 = static_cast( ch2 ^ ( 1 << ( i % 8 ) ) ); + + w[ i / 8 ] = static_cast( ch2 ); + + BOOST_TEST_NE( hash()( v ), hash()( w ) ); + } +} + +int main() +{ + for( unsigned ch = 0; ch < 256; ++ch ) + { + for( std::size_t n = 1; n < 32; ++n ) + { + test( n, static_cast( ch ) ); + } + } + + return boost::report_errors(); +}