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;
}