src/core/test/hash-test-suite.cc
branchhash
changeset 9928 f88602ff0540
parent 9924 d5a552660be9
child 9929 3e8510caf03a
--- a/src/core/test/hash-test-suite.cc	Tue Nov 13 16:31:48 2012 -0800
+++ b/src/core/test/hash-test-suite.cc	Tue Nov 13 16:32:31 2012 -0800
@@ -41,7 +41,7 @@
 };
 
 HashFoxTestCase::HashFoxTestCase ()
-  : TestCase ("Check Hash on a known string")
+  : TestCase ("Check default Hash on a known string")
 {
 }
 
@@ -69,6 +69,93 @@
                          );
 }
 
+//----------------------------
+//
+// Test FNV hash on fixed string
+
+class HashFnv1aTestCase : public TestCase
+{
+public:
+  HashFnv1aTestCase ();
+  virtual ~HashFnv1aTestCase ();
+private:
+  virtual void DoRun (void);
+};
+
+HashFnv1aTestCase::HashFnv1aTestCase ()
+  : TestCase ("Check FNV1A Hash on a known string")
+{
+}
+
+HashFnv1aTestCase::~HashFnv1aTestCase ()
+{
+}
+
+void
+HashFnv1aTestCase::DoRun (void)
+{
+  std::string key("The quick brown fnv1a.");
+  Hash hasher = Hash ( Create<HashImplNS::Fnv1a> () );
+
+  uint32_t h32r = 0x5735855b;  // FNV1A(key)
+  uint32_t h32 = hasher.GetHash32 (key);
+  NS_TEST_ASSERT_MSG_EQ (h32, h32r,
+                         "Hash32 produced " << std::hex << std::setw ( 8) << h32
+                         << ", expected "   << std::hex << std::setw ( 8) << h32r
+                         );
+
+  uint64_t h64r = 0x6fb0aea4ad83c27b;
+  uint64_t h64 = hasher.GetHash64 (key);
+  NS_TEST_ASSERT_MSG_EQ (h64, h64r,
+                         "Hash64 produced " << std::hex << std::setw (16) << h64
+                         << ", expected "   << std::hex << std::setw (16) << h64r
+                         );
+}
+
+
+//----------------------------
+//
+// Test Murmur3 hash on fixed string
+
+class HashMurmur3TestCase : public TestCase
+{
+public:
+  HashMurmur3TestCase ();
+  virtual ~HashMurmur3TestCase ();
+private:
+  virtual void DoRun (void);
+};
+
+HashMurmur3TestCase::HashMurmur3TestCase ()
+  : TestCase ("Check Murmur3 Hash on a known string")
+{
+}
+
+HashMurmur3TestCase::~HashMurmur3TestCase ()
+{
+}
+
+void
+HashMurmur3TestCase::DoRun (void)
+{
+  std::string key("The quick brown murmur3.");
+  Hash hasher = Hash ( Create<HashImplNS::Murmur3> () );
+
+  uint32_t h32r = 0xe8a2d100;  // Murmur3(key)
+  uint32_t h32 = hasher.GetHash32 (key);
+  NS_TEST_ASSERT_MSG_EQ (h32, h32r,
+                         "Hash32 produced " << std::hex << std::setw ( 8) << h32
+                         << ", expected "   << std::hex << std::setw ( 8) << h32r
+                         );
+
+  uint64_t h64r = 0x95373d091a691071;
+  uint64_t h64 = hasher.GetHash64 (key);
+  NS_TEST_ASSERT_MSG_EQ (h64, h64r,
+                         "Hash64 produced " << std::hex << std::setw (16) << h64
+                         << ", expected "   << std::hex << std::setw (16) << h64r
+                         );
+}
+
 
 //----------------------------
 //
@@ -84,6 +171,8 @@
   : TestSuite ("hash", UNIT)
 {
   AddTestCase (new HashFoxTestCase);
+  AddTestCase (new HashFnv1aTestCase);
+  AddTestCase (new HashMurmur3TestCase);
 }
 
 static HashTestSuite g_hashTestSuite;