#include "gtest/gtest.h"
#include "table/data/binary/MurmurHashUtils.h"
#include <cstdint>
#include <cstring>
TEST(MurmurHashUtilsTest, DefaultSeedHash)
{
const char* testString = "test";
int hash1 = MurmurHashUtils::hashBytes(reinterpret_cast<const uint8_t*>(testString), 0, 4);
int hash2 = MurmurHashUtils::hashUnsafeBytes(testString, 0, 4);
EXPECT_EQ(hash1, hash2);
}
TEST(MurmurHashUtilsTest, HashByWords)
{
const char* testString = "abcdefgh";
int hash1 = MurmurHashUtils::hashBytesByWords(reinterpret_cast<const uint8_t*>(testString), 0, 8);
int hash2 = MurmurHashUtils::hashUnsafeBytesByWords(testString, 0, 8);
EXPECT_EQ(hash1, hash2);
}
TEST(MurmurHashUtilsTest, HashWithOffsets)
{
const char* testString = "abcdefghij";
int hash1 = MurmurHashUtils::hashBytes(reinterpret_cast<const uint8_t*>(testString), 2, 8);
int hash2 = MurmurHashUtils::hashUnsafeBytes(testString, 2, 8);
EXPECT_EQ(hash1, hash2);
}
TEST(MurmurHashUtilsTest, UnevenLengths)
{
const char* testString = "abcdef";
int hash1 = MurmurHashUtils::hashBytes(reinterpret_cast<const uint8_t*>(testString), 0, 6);
int hash2 = MurmurHashUtils::hashUnsafeBytes(testString, 0, 6);
EXPECT_EQ(hash1, hash2);
}