/**
* Public domain, just like the MurmurHash3 code.
*/
package org.apache.mahout.math;
import org.junit.Test;
public final class MurmurHash3Test extends MahoutTestCase {
private static final int[] ANSWERS =
{0x0,0xcf9ce026,0x7b1ebceb,0x8a59e474,0xcf337f94,0x8b678f66,0x813ff5a2,0x1c2f4b2b,0xa6fcba77,0xe658f908,
0x9f2656af,0x826b85ca,0xebb6ceca,0x24c4112c,0x66eff5b0,0xa9aca7d5,0xf7f04d03,0x9d781105,0x6dcde4f3,
0x69edd8a8,0x5cdcd417,0x18d67f6,0xea040c90,0xdf70ea4a,0x8fb349e6,0x79a89b03,0x7ef9fc34,0x6017f692,
0x5be02058,0x9e3986f9,0x8fa6dd28,0x6733b993,0x26230d32,0x92051d69,0x8d6f37f7,0xa1653103,0x8491c23f,
0x2e8f59ce,0x5ae9461e,0xfe286e6,0x844e6959,0x87e9065d,0xe302e21c,0x1b3b3296,0xd29849c9,0x4e625f26,
0xa8c35ac0,0x71335a06,0xfd256d8f,0x4e5eb258,0x4e2320d1,0xba2e9832,0xb00df8eb,0xbd87594d,0x83b6dce3,
0xcf8646d0,0x7e79f2e2,0xd41fcd97,0x556a93,0x4419437b,0x39aa0e4e,0x43a57251,0x9430922f,0xd784b08f,
0xa2772512,0xa2a6ee4b,0x9cb1abae,0xebd2bef0};
@Test
public void testCorrectValues() throws Exception {
byte[] bytes = "Now is the time for all good men to come to the aid of their country".getBytes("UTF-8");
int hash = 0;
for (int i = 0; i < bytes.length; i++) {
hash = hash * 31 + (bytes[i] & 0xff);
bytes[i] = (byte) hash;
}
// test different offsets.
for (int offset = 0; offset < 10; offset++) {
byte[] arr = new byte[bytes.length + offset];
System.arraycopy(bytes, 0, arr, offset, bytes.length);
for (int len = 0; len < bytes.length; len++) {
int h = MurmurHash3.murmurhash3_x86_32(arr, offset, len, len);
assertEquals(ANSWERS[len], h);
}
}
}
}