int main() { /* Use string as hash key. */ char* str = "1234567890abcdeffedcba0987654321\0"; uint32_t value = HashMurMur32((void*)str, strlen(str)); /* Use integer as hash key. */ int key_int = 32767; value = HashMurMur32((void*)&key_int, sizeof(int)); long long key_long = 32767; value = HashMurMur32((void*)&key_long, sizeof(long long)); /* Use floating point as hash key. */ float key_float = 32767.0; value = HashMurMur32((void*)&key_float, sizeof(float)); double key_double = 32767.0; value = HashMurMur32((void*)&key_double, sizeof(double)); /* Use structure as hash key. */ Employ* employ = (Employ*)malloc(sizeof(Employ)); employ->cYear = 1; employ->cLevel = 10; employ->id = 25692; value = HashMurMur32((void*)employ, sizeof(Employ)); free(employ); return 0; }
void TestMurMur32() { uint32_t value = HashMurMur32(NULL, 32); CU_ASSERT_EQUAL(value, 0); value = HashMurMur32("NULL", 0); CU_ASSERT_EQUAL(value, 0); /* Test string key. */ value = HashMurMur32((Key)"1", 1); value = HashMurMur32((Key)"12", 2); value = HashMurMur32((Key)"123", 3); value = HashMurMur32((Key)"1234", 4); value = HashMurMur32((Key)"12345", 5); /* Test integer key. */ int32_t iKey = 32767; value = HashMurMur32((Key)&iKey, sizeof(int32_t)); int64_t lKey = 32767; value = HashMurMur32((Key)&lKey, sizeof(int64_t)); /* Test Floating point key. */ float fKey = 32767.0; value = HashMurMur32((Key)&fKey, sizeof(float)); double dKey = 32767.0; value = HashMurMur32((Key)&dKey, sizeof(double)); /* Test structure key. */ Employ *pEmp = (Employ*)malloc(sizeof(Employ)); memset(pEmp, 0, sizeof(Employ)); pEmp->cYear = 1; pEmp->cLevel = 10; pEmp->iId = 25692; value = HashMurMur32((Key)pEmp, sizeof(Employ)); free(pEmp); return; }