
/**
 * `test.c' - murmurhash
 *
 * copyright (c) 2014 joseph werle <joseph.werle@gmail.com>
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <inttypes.h>
#include <assert.h>
#include "murmurhash.h"

int
main (void) {
  uint32_t hash = 0;
  uint32_t seed = 0;

#define t(str, seed, expected) {                 \
  uint32_t len = (uint32_t) strlen(str);         \
  hash = murmurhash(str, len, seed);             \
  printf(                                        \
      "['%s'] '%" PRIu32 "' = '%" PRIu32 "'",    \
      str, (uint32_t) expected, hash);           \
  assert((uint32_t) expected == hash);           \
  printf(" ...ok\n");                            \
}

  seed = 0;
  t("", seed, 0x00000000);
  t("0", seed, 0xd271c07f);
  t("01", seed, 0x61ec6600);
  t("012", seed, 0xec6cff8c);
  t("0123", seed, 0xd41994a0);
  t("01234", seed, 0x19d02170);
  t("2", seed, 0x0129e217);
  t("88", seed, 0x7a0040a5);

  t("asdfqwer", seed, 0xa46b5209);
  t("asdfqwerty", seed, 0xa3cfe04b);
  t("asd", seed, 0x14570c6f);

  t("Hello", seed, 0x12da77c8);
  t("Hello1", seed, 0x6357e0a6);
  t("Hello2", seed, 0xe5ce223e);

  t("hey", seed, 0x12f94418);
  t("dude", seed, 0xef0487f3);
  t("test", seed, 0xba6bd213);
  t("kinkajou", seed, 0xb6d99cf8);


  seed = 1;
  t("", seed, 0x514e28b7);

  return 0;
}
