summaryrefslogtreecommitdiff
path: root/src/mongo/base/string_data_test.cpp
diff options
context:
space:
mode:
authorDavide Italiano <davide.italiano@10gen.com>2014-01-03 16:00:17 -0800
committerDavide Italiano <davide.italiano@10gen.com>2014-01-03 16:00:17 -0800
commit22424987d2f0df32671998f0c7574adcfa07bf32 (patch)
tree6b46a5fb6f98bbed50c999ab5af4493829791875 /src/mongo/base/string_data_test.cpp
parentfdcaa37f78789c4bdedac8fd98c0fdfc517fb978 (diff)
downloadmongo-22424987d2f0df32671998f0c7574adcfa07bf32.tar.gz
SERVER-12157 Replace implementation of StringMapDefaultHash::operator()
with Murmur3. This has proven to be more effective in terms of speed and collision rates.
Diffstat (limited to 'src/mongo/base/string_data_test.cpp')
-rw-r--r--src/mongo/base/string_data_test.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/mongo/base/string_data_test.cpp b/src/mongo/base/string_data_test.cpp
index 2ec32039aab..977d670079e 100644
--- a/src/mongo/base/string_data_test.cpp
+++ b/src/mongo/base/string_data_test.cpp
@@ -137,6 +137,42 @@ namespace {
ASSERT_EQUALS( string("foo").find( "" ), StringData("foo").find( "" ) );
}
+ // Helper function for Test(Hasher, Str1)
+ template <int SizeofSizeT>
+ void SDHasher_check(void);
+
+ template <>
+ void SDHasher_check<4>(void) {
+ ASSERT_EQUALS(StringData::Hasher()(""),
+ static_cast<size_t>(0));
+ ASSERT_EQUALS(StringData::Hasher()("foo"),
+ static_cast<size_t>(4138058784));
+ ASSERT_EQUALS(StringData::Hasher()("pizza"),
+ static_cast<size_t>(3587803311));
+ ASSERT_EQUALS(StringData::Hasher()("mongo"),
+ static_cast<size_t>(3724335885));
+ ASSERT_EQUALS(StringData::Hasher()("murmur"),
+ static_cast<size_t>(1945310157));
+ }
+
+ template <>
+ void SDHasher_check<8>(void) {
+ ASSERT_EQUALS(StringData::Hasher()(""),
+ static_cast<size_t>(0));
+ ASSERT_EQUALS(StringData::Hasher()("foo"),
+ static_cast<size_t>(16316970633193145697UL));
+ ASSERT_EQUALS(StringData::Hasher()("pizza"),
+ static_cast<size_t>(12165495155477134356UL));
+ ASSERT_EQUALS(StringData::Hasher()("mongo"),
+ static_cast<size_t>(2861051452199491487UL));
+ ASSERT_EQUALS(StringData::Hasher()("murmur"),
+ static_cast<size_t>(18237957392784716687UL));
+ }
+
+ TEST(Hasher, Str1) {
+ SDHasher_check<sizeof(size_t)>();
+ }
+
TEST(Rfind, Char1) {
ASSERT_EQUALS( string::npos, StringData( "foo" ).rfind( 'a' ) );