use proc_strarray::{str_bytes, str_bytes0, str_repeat_bytes};
macro_rules! TEST {
($x:expr) => {
str_bytes!($x)
};
}
macro_rules! TEST0 {
($x:expr) => {
str_bytes0!($x)
};
}
macro_rules! R10 {
($x:expr) => {
str_repeat_bytes!($x, 10)
};
}
macro_rules! R500 {
($x:expr) => {
str_repeat_bytes!($x, 500)
};
}
fn fnv_test_str() -> Vec<&'static [u8]> { vec! {
TEST!(""),
TEST!("a"),
TEST!("b"),
TEST!("c"),
TEST!("d"),
TEST!("e"),
TEST!("f"),
TEST!("fo"),
TEST!("foo"),
TEST!("foob"),
TEST!("fooba"),
TEST!("foobar"),
TEST0!(""),
TEST0!("a"),
TEST0!("b"),
TEST0!("c"),
TEST0!("d"),
TEST0!("e"),
TEST0!("f"),
TEST0!("fo"),
TEST0!("foo"),
TEST0!("foob"),
TEST0!("fooba"),
TEST0!("foobar"),
TEST!("ch"),
TEST!("cho"),
TEST!("chon"),
TEST!("chong"),
TEST!("chongo"),
TEST!("chongo "),
TEST!("chongo w"),
TEST!("chongo wa"),
TEST!("chongo was"),
TEST!("chongo was "),
TEST!("chongo was h"),
TEST!("chongo was he"),
TEST!("chongo was her"),
TEST!("chongo was here"),
TEST!("chongo was here!"),
TEST!("chongo was here!\n"),
TEST0!("ch"),
TEST0!("cho"),
TEST0!("chon"),
TEST0!("chong"),
TEST0!("chongo"),
TEST0!("chongo "),
TEST0!("chongo w"),
TEST0!("chongo wa"),
TEST0!("chongo was"),
TEST0!("chongo was "),
TEST0!("chongo was h"),
TEST0!("chongo was he"),
TEST0!("chongo was her"),
TEST0!("chongo was here"),
TEST0!("chongo was here!"),
TEST0!("chongo was here!\n"),
TEST!("cu"),
TEST!("cur"),
TEST!("curd"),
TEST!("curds"),
TEST!("curds "),
TEST!("curds a"),
TEST!("curds an"),
TEST!("curds and"),
TEST!("curds and "),
TEST!("curds and w"),
TEST!("curds and wh"),
TEST!("curds and whe"),
TEST!("curds and whey"),
TEST!("curds and whey\n"),
TEST0!("cu"),
TEST0!("cur"),
TEST0!("curd"),
TEST0!("curds"),
TEST0!("curds "),
TEST0!("curds a"),
TEST0!("curds an"),
TEST0!("curds and"),
TEST0!("curds and "),
TEST0!("curds and w"),
TEST0!("curds and wh"),
TEST0!("curds and whe"),
TEST0!("curds and whey"),
TEST0!("curds and whey\n"),
TEST!("hi"), TEST0!("hi"),
TEST!("hello"), TEST0!("hello"),
TEST!(b"\xff\x00\x00\x01"), TEST!(b"\x01\x00\x00\xff"),
TEST!(b"\xff\x00\x00\x02"), TEST!(b"\x02\x00\x00\xff"),
TEST!(b"\xff\x00\x00\x03"), TEST!(b"\x03\x00\x00\xff"),
TEST!(b"\xff\x00\x00\x04"), TEST!(b"\x04\x00\x00\xff"),
TEST!("\x40\x51\x4e\x44"), TEST!("\x44\x4e\x51\x40"),
TEST!("\x40\x51\x4e\x4a"), TEST!("\x4a\x4e\x51\x40"),
TEST!("\x40\x51\x4e\x54"), TEST!("\x54\x4e\x51\x40"),
TEST!("127.0.0.1"), TEST0!("127.0.0.1"),
TEST!("127.0.0.2"), TEST0!("127.0.0.2"),
TEST!("127.0.0.3"), TEST0!("127.0.0.3"),
TEST!("64.81.78.68"), TEST0!("64.81.78.68"),
TEST!("64.81.78.74"), TEST0!("64.81.78.74"),
TEST!("64.81.78.84"), TEST0!("64.81.78.84"),
TEST!("feedface"), TEST0!("feedface"),
TEST!("feedfacedaffdeed"), TEST0!("feedfacedaffdeed"),
TEST!("feedfacedeadbeef"), TEST0!("feedfacedeadbeef"),
TEST!("line 1\nline 2\nline 3"),
TEST!("chongo <Landon Curt Noll> /\\../\\"),
TEST0!("chongo <Landon Curt Noll> /\\../\\"),
TEST!("chongo (Landon Curt Noll) /\\../\\"),
TEST0!("chongo (Landon Curt Noll) /\\../\\"),
TEST!("http://antwrp.gsfc.nasa.gov/apod/astropix.html"),
TEST!("http://en.wikipedia.org/wiki/Fowler_Noll_Vo_hash"),
TEST!("http://epod.usra.edu/"),
TEST!("http://exoplanet.eu/"),
TEST!("http://hvo.wr.usgs.gov/cam3/"),
TEST!("http://hvo.wr.usgs.gov/cams/HMcam/"),
TEST!("http://hvo.wr.usgs.gov/kilauea/update/deformation.html"),
TEST!("http://hvo.wr.usgs.gov/kilauea/update/images.html"),
TEST!("http://hvo.wr.usgs.gov/kilauea/update/maps.html"),
TEST!("http://hvo.wr.usgs.gov/volcanowatch/current_issue.html"),
TEST!("http://neo.jpl.nasa.gov/risk/"),
TEST!("http://norvig.com/21-days.html"),
TEST!("http://primes.utm.edu/curios/home.php"),
TEST!("http://slashdot.org/"),
TEST!("http://tux.wr.usgs.gov/Maps/155.25-19.5.html"),
TEST!("http://volcano.wr.usgs.gov/kilaueastatus.php"),
TEST!("http://www.avo.alaska.edu/activity/Redoubt.php"),
TEST!("http://www.dilbert.com/fast/"),
TEST!("http://www.fourmilab.ch/gravitation/orbits/"),
TEST!("http://www.fpoa.net/"),
TEST!("http://www.ioccc.org/index.html"),
TEST!("http://www.isthe.com/cgi-bin/number.cgi"),
TEST!("http://www.isthe.com/chongo/bio.html"),
TEST!("http://www.isthe.com/chongo/index.html"),
TEST!("http://www.isthe.com/chongo/src/calc/lucas-calc"),
TEST!("http://www.isthe.com/chongo/tech/astro/venus2004.html"),
TEST!("http://www.isthe.com/chongo/tech/astro/vita.html"),
TEST!("http://www.isthe.com/chongo/tech/comp/c/expert.html"),
TEST!("http://www.isthe.com/chongo/tech/comp/calc/index.html"),
TEST!("http://www.isthe.com/chongo/tech/comp/fnv/index.html"),
TEST!("http://www.isthe.com/chongo/tech/math/number/howhigh.html"),
TEST!("http://www.isthe.com/chongo/tech/math/number/number.html"),
TEST!("http://www.isthe.com/chongo/tech/math/prime/mersenne.html"),
TEST!("http://www.isthe.com/chongo/tech/math/prime/mersenne.html#largest"),
TEST!("http://www.lavarnd.org/cgi-bin/corpspeak.cgi"),
TEST!("http://www.lavarnd.org/cgi-bin/haiku.cgi"),
TEST!("http://www.lavarnd.org/cgi-bin/rand-none.cgi"),
TEST!("http://www.lavarnd.org/cgi-bin/randdist.cgi"),
TEST!("http://www.lavarnd.org/index.html"),
TEST!("http://www.lavarnd.org/what/nist-test.html"),
TEST!("http://www.macosxhints.com/"),
TEST!("http://www.mellis.com/"),
TEST!("http://www.nature.nps.gov/air/webcams/parks/havoso2alert/havoalert.cfm"),
TEST!("http://www.nature.nps.gov/air/webcams/parks/havoso2alert/timelines_24.cfm"),
TEST!("http://www.paulnoll.com/"),
TEST!("http://www.pepysdiary.com/"),
TEST!("http://www.sciencenews.org/index/home/activity/view"),
TEST!("http://www.skyandtelescope.com/"),
TEST!("http://www.sput.nl/~rob/sirius.html"),
TEST!("http://www.systemexperts.com/"),
TEST!("http://www.tq-international.com/phpBB3/index.php"),
TEST!("http://www.travelquesttours.com/index.htm"),
TEST!("http://www.wunderground.com/global/stations/89606.html"),
R10!("21701"),
R10!("M21701"),
R10!("2^21701-1"),
R10!(b"\x54\xc5"),
R10!(b"\xc5\x54"),
R10!("23209"),
R10!("M23209"),
R10!("2^23209-1"),
R10!(b"\x5a\xa9"),
R10!(b"\xa9\x5a"),
R10!("391581216093"),
R10!("391581*2^216093-1"),
R10!(b"\x05\xf9\x9d\x03\x4c\x81"),
R10!("FEDCBA9876543210"),
R10!(b"\xfe\xdc\xba\x98\x76\x54\x32\x10"),
R10!("EFCDAB8967452301"),
R10!(b"\xef\xcd\xab\x89\x67\x45\x23\x01"),
R10!("0123456789ABCDEF"),
R10!(b"\x01\x23\x45\x67\x89\xab\xcd\xef"),
R10!("1032547698BADCFE"),
R10!(b"\x10\x32\x54\x76\x98\xba\xdc\xfe"),
R500!("\x00"),
R500!("\x07"),
R500!("~"),
R500!("\x7f")
}
}
fn fnv0_32_vector() -> &'static[u32] { &[
0x00000000,
0x00000061,
0x00000062,
0x00000063,
0x00000064,
0x00000065,
0x00000066,
0x6600a0fd,
0x8ffd6e28,
0xd3f4689a,
0x43c0aa0f,
0xb74bb5ef,
0x00000000,
0x610098b3,
0x62009a46,
0x63009bd9,
0x64009d6c,
0x65009eff,
0x6600a092,
0x8ffd6e47,
0xd3f468f8,
0x43c0aa6e,
0xb74bb59d,
0x7b2f673d,
0x63009bb1,
0x8af517cc,
0x8bd4764a,
0x69763619,
0x1e172934,
0x9275dcfc,
0x8b8ae0c3,
0x6e9fd298,
0xbd98853b,
0xb219bbc1,
0x1f8290bb,
0x5589d604,
0xabfbe83e,
0xfb8e99ff,
0x007c6c4c,
0x0fde7bae,
0x8af517a3,
0x8bd47624,
0x6976367e,
0x1e17295b,
0x9275dcdc,
0x8b8ae0b4,
0x6e9fd2f9,
0xbd988548,
0xb219bbe1,
0x1f8290d3,
0x5589d661,
0xabfbe84c,
0xfb8e999a,
0x007c6c6d,
0x0fde7ba4,
0xa93cb2ea,
0x63009bac,
0x85f50fb6,
0x96c7bbe6,
0x426ccb61,
0xf2442993,
0xf44d7208,
0x9dea82f6,
0x8e2c2926,
0xf584c6f2,
0x72052e81,
0xff28357b,
0x274c30c4,
0xa0f0c4f5,
0x50060da5,
0x85f50fc4,
0x96c7bb82,
0x426ccb12,
0xf24429b3,
0xf44d7269,
0x9dea8298,
0x8e2c2942,
0xf584c6d2,
0x72052ef6,
0xff283513,
0x274c30a1,
0xa0f0c48c,
0x50060daf,
0x9e877abf,
0x6800a3d1,
0x8a01e203,
0xec6d6be8,
0x1840de38,
0xa7cc97b4,
0x3ee6b3b4,
0xa7cc97b7,
0x7dcd6669,
0xa7cc97b6,
0xbcb4191e,
0xa7cc97b1,
0xfb9acdd3,
0x89380433,
0x8acd2855,
0x8938043d,
0xcaeed493,
0x89380423,
0x59382a25,
0x567f75d7,
0x01a68175,
0x567f75d4,
0xfea67cbc,
0x567f75d5,
0xffa67e4f,
0xd131b668,
0xb94225b8,
0xd231b7d7,
0xbb446775,
0xdf31cc6e,
0xc964d12a,
0x23af8f9f,
0xcc5f174d,
0x96b29b8c,
0xc72add64,
0x528fb7ef,
0xe73e8d3d,
0x876386fe,
0x811c9dc5,
0x050c5d1f,
0x14bf7238,
0xe160ce28,
0x89dc5a75,
0xd89b69a0,
0x94471a88,
0xe78db65f,
0x0c3009a2,
0x122dff03,
0xb4cd8875,
0xf4dba725,
0x41a16560,
0x9c0f941f,
0x451a5348,
0x3f1d1d89,
0x1b91b57a,
0x3e99b577,
0x4c9de07a,
0x1ddf7572,
0x64e81976,
0x1106a888,
0xa498d8e5,
0x3c03d2e3,
0x26568b28,
0x70d7fb42,
0xd3ae1d22,
0xac8ea5f4,
0x4d0abd60,
0x48f5e086,
0xa8f6241b,
0x572f864f,
0xa5340803,
0x22881aa8,
0xc2e2f5a2,
0xebf5aec7,
0x3cdbfb85,
0xbb859704,
0xc956fe11,
0x8f11a7c9,
0x36c48ecf,
0x24bfa27e,
0xf2596ad1,
0xf14a9b45,
0x7d45835a,
0x6e49334d,
0x71767337,
0x858a1a8a,
0x16e75ac2,
0x409f99df,
0x6d6652dd,
0x2761a9ff,
0x41f0d616,
0x0e2d0d0f,
0x06adc8fd,
0x60e0d4b9,
0x5ddc79d3,
0x1e6d0b46,
0x1d1514d8,
0xb1903a4e,
0x8200c318,
0x15e22888,
0x57591760,
0x02462efc,
0x7651ec44,
0x7c24e9d4,
0x1952a034,
0xd4c46864,
0xcb57cde0,
0x71136a70,
0x0618fb40,
0x69a24fc0,
0x6a9be510,
0xe0477040,
0x85aa94b0,
0xc6d76240,
0xa9f09e40,
0xa0291540,
0x00000000,
0x2e672aa4,
0x84b1aa48,
0xfc24ba24
]}
fn fnv1_32_vector() -> &'static[u32] { &[
0x811c9dc5,
0x050c5d7e,
0x050c5d7d,
0x050c5d7c,
0x050c5d7b,
0x050c5d7a,
0x050c5d79,
0x6b772514,
0x408f5e13,
0xb4b1178b,
0xfdc80fb0,
0x31f0b262,
0x050c5d1f,
0x70772d5a,
0x6f772bc7,
0x6e772a34,
0x6d7728a1,
0x6c77270e,
0x6b77257b,
0x408f5e7c,
0xb4b117e9,
0xfdc80fd1,
0x31f0b210,
0xffe8d046,
0x6e772a5c,
0x4197aebb,
0xfcc8100f,
0xfdf147fa,
0xbcd44ee1,
0x23382c13,
0x846d619e,
0x1630abdb,
0xc99e89b2,
0x1692c316,
0x9f091bca,
0x2556be9b,
0x628e0e73,
0x98a0bf6c,
0xb10d5725,
0xdd002f35,
0x4197aed4,
0xfcc81061,
0xfdf1479d,
0xbcd44e8e,
0x23382c33,
0x846d61e9,
0x1630abba,
0xc99e89c1,
0x1692c336,
0x9f091ba2,
0x2556befe,
0x628e0e01,
0x98a0bf09,
0xb10d5704,
0xdd002f3f,
0x1c4a506f,
0x6e772a41,
0x26978421,
0xe184ff97,
0x9b5e5ac6,
0x5b88e592,
0xaa8164b7,
0x20b18c7b,
0xf28025c5,
0x84bb753f,
0x3219925a,
0x384163c6,
0x54f010d7,
0x8cea820c,
0xe12ab8ee,
0x26978453,
0xe184fff3,
0x9b5e5ab5,
0x5b88e5b2,
0xaa8164d6,
0x20b18c15,
0xf28025a1,
0x84bb751f,
0x3219922d,
0x384163ae,
0x54f010b2,
0x8cea8275,
0xe12ab8e4,
0x64411eaa,
0x6977223c,
0x428ae474,
0xb6fa7167,
0x73408525,
0xb78320a1,
0x0caf4135,
0xb78320a2,
0xcdc88e80,
0xb78320a3,
0x8ee1dbcb,
0xb78320a4,
0x4ffb2716,
0x860632aa,
0xcc2c5c64,
0x860632a4,
0x2a7ec4a6,
0x860632ba,
0xfefe8e14,
0x0a3cffd8,
0xf606c108,
0x0a3cffdb,
0xf906c5c1,
0x0a3cffda,
0xf806c42e,
0xc07167d7,
0xc9867775,
0xbf716668,
0xc78435b8,
0xc6717155,
0xb99568cf,
0x7662e0d6,
0x33a7f0e2,
0xc2732f95,
0xb053e78f,
0x3a19c02a,
0xa089821e,
0x31ae8f83,
0x995fa9c4,
0x35983f8c,
0x5036a251,
0x97018583,
0xb4448d60,
0x025dfe59,
0xc5eab3af,
0x7d21ba1e,
0x7704cddb,
0xd0071bfe,
0x0ff3774c,
0xb0fea0ea,
0x58177303,
0x4f599cda,
0x3e590a47,
0x965595f8,
0xc37f178d,
0x9711dd26,
0x23c99b7f,
0x6e568b17,
0x43f0245b,
0xbcb7a001,
0x12e6dffe,
0x0792f2d6,
0xb966936b,
0x46439ac5,
0x728d49af,
0xd33745c9,
0xbc382a57,
0x4bda1d31,
0xce35ccae,
0x3b6eed94,
0x445c9c58,
0x3db8bf9d,
0x2dee116d,
0xc18738da,
0x5b156176,
0x2aa7d593,
0xb2409658,
0xe1489528,
0xfe1ee07e,
0xe8842315,
0x3a6a63a2,
0x06d2c18c,
0xf8ef7225,
0x843d3300,
0xbb24f7ae,
0x878c0ec9,
0xb557810f,
0x57423246,
0x87f7505e,
0xbb809f20,
0x8932abb5,
0x0a9b3aa0,
0xb8682a24,
0xa7ac1c56,
0x11409252,
0xa987f517,
0xf309e7ed,
0xc9e8f417,
0x7f447bdd,
0xb929adc5,
0x57022879,
0xdcfd2c49,
0x6edafff5,
0xf04fb1f1,
0xfb7de8b9,
0xc5f1d7e9,
0x32c1f439,
0x7fd3eb7d,
0x81597da5,
0x05eb7a25,
0x9c0fa1b5,
0x53ccb1c5,
0xfabece15,
0x4ad745a5,
0xe5bdc495,
0x23b3c0a5,
0xfa823dd5,
0x0c6c58b9,
0xe2dbccd5,
0xdb7f50f9
]}
fn fnv1a_32_vector() -> &'static[u32] { &[
0x811c9dc5,
0xe40c292c,
0xe70c2de5,
0xe60c2c52,
0xe10c2473,
0xe00c22e0,
0xe30c2799,
0x6222e842,
0xa9f37ed7,
0x3f5076ef,
0x39aaa18a,
0xbf9cf968,
0x050c5d1f,
0x2b24d044,
0x9d2c3f7f,
0x7729c516,
0xb91d6109,
0x931ae6a0,
0x052255db,
0xbef39fe6,
0x6150ac75,
0x9aab3a3d,
0x519c4c3e,
0x0c1c9eb8,
0x5f299f4e,
0xef8580f3,
0xac297727,
0x4546b9c0,
0xbd564e7d,
0x6bdd5c67,
0xdd77ed30,
0xf4ca9683,
0x4aeb9bd0,
0xe0e67ad0,
0xc2d32fa8,
0x7f743fb7,
0x6900631f,
0xc59c990e,
0x448524fd,
0xd49930d5,
0x1c85c7ca,
0x0229fe89,
0x2c469265,
0xce566940,
0x8bdd8ec7,
0x34787625,
0xd3ca6290,
0xddeaf039,
0xc0e64870,
0xdad35570,
0x5a740578,
0x5b004d15,
0x6a9c09cd,
0x2384f10a,
0xda993a47,
0x8227df4f,
0x4c298165,
0xfc563735,
0x8cb91483,
0x775bf5d0,
0xd5c428d0,
0x34cc0ea3,
0xea3b4cb7,
0x8e59f029,
0x2094de2b,
0xa65a0ad4,
0x9bbee5f4,
0xbe836343,
0x22d5344e,
0x19a1470c,
0x4a56b1ff,
0x70b8e86f,
0x0a5b4a39,
0xb5c3f670,
0x53cc3f70,
0xc03b0a99,
0x7259c415,
0x4095108b,
0x7559bdb1,
0xb3bf0bbc,
0x2183ff1c,
0x2bd54279,
0x23a156ca,
0x64e2d7e4,
0x683af69a,
0xaed2346e,
0x4f9f2cab,
0x02935131,
0xc48fb86d,
0x2269f369,
0xc18fb3b4,
0x50ef1236,
0xc28fb547,
0x96c3bf47,
0xbf8fb08e,
0xf3e4d49c,
0x32179058,
0x280bfee6,
0x30178d32,
0x21addaf8,
0x4217a988,
0x772633d6,
0x08a3d11e,
0xb7e2323a,
0x07a3cf8b,
0x91dfb7d1,
0x06a3cdf8,
0x6bdd3d68,
0x1d5636a7,
0xd5b808e5,
0x1353e852,
0xbf16b916,
0xa55b89ed,
0x3c1a2017,
0x0588b13c,
0xf22f0174,
0xe83641e1,
0x6e69b533,
0xf1760448,
0x64c8bd58,
0x97b4ea23,
0x9a4e92e6,
0xcfb14012,
0xf01b2511,
0x0bbb59c3,
0xce524afa,
0xdd16ef45,
0x60648bb3,
0x7fa4bcfc,
0x5053ae17,
0xc9302890,
0x956ded32,
0x9136db84,
0xdf9d3323,
0x32bb6cd0,
0xc8f8385b,
0xeb08bfba,
0x62cc8e3d,
0xc3e20f5c,
0x39e97f17,
0x7837b203,
0x319e877b,
0xd3e63f89,
0x29b50b38,
0x5ed678b8,
0xb0d5b793,
0x52450be5,
0xfa72d767,
0x95066709,
0x7f52e123,
0x76966481,
0x063258b0,
0x2ded6e8a,
0xb07d7c52,
0xd0c71b71,
0xf684f1bd,
0x868ecfa8,
0xf794f684,
0xd19701c3,
0x346e171e,
0x91f8f676,
0x0bf58848,
0x6317b6d1,
0xafad4c54,
0x0f25681e,
0x91b18d49,
0x7d61c12e,
0x5147d25c,
0x9a8b6805,
0x4cd2a447,
0x1e549b14,
0x2fe1b574,
0xcf0cd31e,
0x6c471669,
0x0e5eef1e,
0x2bed3602,
0xb26249e0,
0x2c9b86a4,
0xe415e2bb,
0x18a98d1d,
0xb7df8b7b,
0x241e9075,
0x063f70dd,
0x0295aed9,
0x56a7f781,
0x253bc645,
0x46610921,
0x7c1577f9,
0x512b2851,
0x76823999,
0xc0586935,
0xf3415c85,
0x0ae4ff65,
0x58b79725,
0xdea43aa5,
0x2bb3be35,
0xea777a45,
0x8f21c305,
0x5c9d0865,
0xfa823dd5,
0x21a27271,
0x83c5c6d5,
0x813b0881
]}
#[test]
fn f32_testsuite_validation() {
assert_eq! ( fnv0_32_vector().len(), fnv_test_str().len() );
assert_eq! ( fnv1_32_vector().len(), fnv_test_str().len() );
assert_eq! ( fnv1a_32_vector().len(), fnv_test_str().len() );
}
use super::{FNV0_32_INIT, FNV1_32_INIT, FNV1A_32_INIT};
use super::{fnv_32, fnv_32a};
#[test]
fn fnv0_32_test() {
for i in 0..fnv_test_str().len() {
assert_eq! ( fnv_32( fnv_test_str()[i], FNV0_32_INIT), fnv0_32_vector()[i] );
}
}
#[test]
fn fnv1_32_test() {
for i in 0..fnv_test_str().len() {
assert_eq! ( fnv_32( fnv_test_str()[i], FNV1_32_INIT), fnv1_32_vector()[i] );
}
}
#[test]
fn fnv1a_32_test() {
for i in 0..fnv_test_str().len() {
assert_eq! ( fnv_32a( fnv_test_str()[i], FNV1A_32_INIT), fnv1a_32_vector()[i] );
}
}
fn fnv0_64_vector() -> &'static[u64] { &[
0x0000000000000000,
0x0000000000000061,
0x0000000000000062,
0x0000000000000063,
0x0000000000000064,
0x0000000000000065,
0x0000000000000066,
0x000066000000ad3d,
0x015a8f0001265ec8,
0x733fc501f4330dba,
0x08697c51f2c0536f,
0x0b91ae3f7ccdc5ef,
0x0000000000000000,
0x000061000000a4d3,
0x000062000000a686,
0x000063000000a839,
0x000064000000a9ec,
0x000065000000ab9f,
0x000066000000ad52,
0x015a8f0001265ea7,
0x733fc501f4330dd8,
0x08697c51f2c0530e,
0x0b91ae3f7ccdc59d,
0x765104e111a7551d,
0x000063000000a851,
0x01508a00011e01cc,
0x59dc4a01e5fd0dca,
0xae5f8b39ccfe6e59,
0x4ac7ec3754558154,
0x6737b6044d4ac19c,
0xae6be54f5606fc63,
0x685308cf2ddedc58,
0x23f4500af1b069fb,
0xc88dfd98aec415a1,
0x8d5b8b70f730c0fb,
0x634eebf407d7eae4,
0x9705d3a953e4211e,
0x8307c6b98ca4459f,
0x4a7c4c49fb224d0c,
0xb382adb5bb48eb6e,
0x01508a00011e01a3,
0x59dc4a01e5fd0da4,
0xae5f8b39ccfe6e3e,
0x4ac7ec375455813b,
0x6737b6044d4ac1bc,
0xae6be54f5606fc14,
0x685308cf2ddedc39,
0x23f4500af1b06988,
0xc88dfd98aec41581,
0x8d5b8b70f730c093,
0x634eebf407d7ea81,
0x9705d3a953e4216c,
0x8307c6b98ca445fa,
0x4a7c4c49fb224d2d,
0xb382adb5bb48eb64,
0x4ff899cd3ce80bea,
0x000063000000a84c,
0x01508500011df956,
0x59cb5501e5eead46,
0x832eb839b4906d81,
0x78d08b0dd16a1213,
0xb46e5b7ad73cb628,
0xd43b99bbbc298596,
0xcacbd000ba8dfd86,
0x264ff73cff45ca92,
0x5fabaea5c3973661,
0x27f024ab59f166bb,
0xce750a29d5318fa4,
0x026fe915433713d5,
0x5b3ce4213696b2e5,
0x01508500011df924,
0x59cb5501e5eead22,
0x832eb839b4906df2,
0x78d08b0dd16a1233,
0xb46e5b7ad73cb649,
0xd43b99bbbc2985f8,
0xcacbd000ba8dfde2,
0x264ff73cff45cab2,
0x5fabaea5c3973616,
0x27f024ab59f166d3,
0xce750a29d5318fc1,
0x026fe915433713ac,
0x5b3ce4213696b2ef,
0x9f2a896fc211fb1f,
0x000068000000b0d1,
0x01618900012c7323,
0x3fa86e63bc7d03c8,
0xa8375b79486d6cd8,
0xa0d18504e316ac54,
0x08a97b0004e7fe54,
0xa0d18504e316ac57,
0x1152f60009cffda9,
0xa0d18504e316ac56,
0x19fc71000eb7fcfe,
0xa0d18504e316ac51,
0x22a5ec00139ffa53,
0x29bed00139779a33,
0x4dbc81014e3c19f5,
0x29bed00139779a3d,
0x81a72b016b9f7573,
0x29bed00139779a23,
0xd85411019cbbce45,
0xf548616b8621d657,
0xebd3e0b4eb7f35d5,
0xf548616b8621d654,
0xebd3ddb4eb7f30bc,
0xf548616b8621d655,
0xebd3deb4eb7f326f,
0x581cb60340ab0968,
0x63d2af86e2a0fbb8,
0x581cb70340ab0b37,
0x63d63186e2a40e75,
0x581cc40340ab212e,
0x64023f86e2c9612a,
0xdbda6a26c33c909f,
0xd0b2feddbfe9be2d,
0x9c9eae3f5d037dec,
0x252001ab0ceef804,
0x4456a56f9e05cfef,
0x250b0ba983e0531d,
0x52b007213b27b33e,
0xcbf29ce484222325,
0xaf63bd4c8601b7df,
0x128599ccddae09f8,
0x270e4f1caebaf068,
0x01517d497446a395,
0x9af5a29a89450b40,
0xb502f6c063ba72e8,
0xacf41561498ca7df,
0x6be8c2423a351542,
0xd04f1f6da96ce4a3,
0x69eb9a8f282c7235,
0x6a7e5a418f77cfc5,
0xbcaf568ddc2ecba0,
0xb03b5cc4c38f8b1f,
0xf89a9f51432db828,
0x549e856be6103429,
0x3cf50d224d29377a,
0xdb762df418c10c37,
0xfeeb4226b0e9a6ba,
0x7004a4cd9310c052,
0xd1c727d7f5329276,
0xbe313796596ce908,
0x768f67ede090fcc5,
0xa81563cc9db9bfc3,
0x47194043c55197a8,
0xc99d81864aebab02,
0xcc1f161b235ea4a2,
0xaadab0c420ecd434,
0x6b3c034d6f44d740,
0x73a45e850602cbc6,
0x72360f04f0cd227b,
0xa9ca80be384a778f,
0xd4085e66906889e3,
0x93aa8b2748efdbc8,
0x6f8cd678407436a2,
0xf39a43d4dc8be4c7,
0xd7f5cec91125d245,
0x691d7b73be18adc4,
0xf4361e01caf6b691,
0xde7d8264f64be089,
0xa34ff43e5545c06f,
0x181f0b8e908a2bde,
0x28a965b78ddbc071,
0xead9cea0e3cc6ae5,
0x0b6743153b43ebba,
0xa7aa3f012c74528d,
0x2d5d8ad7f9dffeb7,
0x00750fb6e19624ea,
0x01c125a4e6c76c82,
0x3fde3afac0722f1f,
0xd7c3eaf4abaa379d,
0xd2217e1c923c9f3f,
0x82d0a2e3b725caf6,
0x0a10bee8eeb72e4f,
0xc530e8723e72c6fd,
0xd8d34dcd2e7bad99,
0xecf77466e9a2baf3,
0xde3d2ddb043b9666,
0xd1cc824e1a8157d8,
0x7d5c68ecbc90512e,
0x2f7c691b1d7c76d8,
0x5d88c2bad3a46bc8,
0xdf107320276647a0,
0x0f78f22e7e70e9bc,
0x8c67be5c80f67d04,
0x07c1adfa4d019194,
0xce1312420c5b1af4,
0x043a41b2dc53ab24,
0x0b038eebf7340860,
0x1bcd837353fb69b0,
0x46f992fc59eff180,
0x497678ee29ae79c0,
0xb10a62280ddd4450,
0x35eb228db4d68140,
0x8b350e86d9470870,
0x4e1fbdb2812e9540,
0x051e080df69a0600,
0x45e1e8ae54dadb40,
0x0000000000000000,
0xcd73806290557064,
0x2613a37bbe0317c8,
0x1480e21fcf2ae5e4
]}
fn fnv1_64_vector() -> &'static[u64] { &[
0xcbf29ce484222325,
0xaf63bd4c8601b7be,
0xaf63bd4c8601b7bd,
0xaf63bd4c8601b7bc,
0xaf63bd4c8601b7bb,
0xaf63bd4c8601b7ba,
0xaf63bd4c8601b7b9,
0x08326207b4eb2f34,
0xd8cbc7186ba13533,
0x0378817ee2ed65cb,
0xd329d59b9963f790,
0x340d8765a4dda9c2,
0xaf63bd4c8601b7df,
0x08326707b4eb37da,
0x08326607b4eb3627,
0x08326507b4eb3474,
0x08326407b4eb32c1,
0x08326307b4eb310e,
0x08326207b4eb2f5b,
0xd8cbc7186ba1355c,
0x0378817ee2ed65a9,
0xd329d59b9963f7f1,
0x340d8765a4dda9b0,
0x50a6d3b724a774a6,
0x08326507b4eb341c,
0xd8d5c8186ba98bfb,
0x1ccefc7ef118dbef,
0x0c92fab3ad3db77a,
0x9b77794f5fdec421,
0x0ac742dfe7874433,
0xd7dad5766ad8e2de,
0xa1bb96378e897f5b,
0x5b3f9b6733a367d2,
0xb07ce25cbea969f6,
0x8d9e9997f9df0d6a,
0x838c673d9603cb7b,
0x8b5ee8a5e872c273,
0x4507c4e9fb00690c,
0x4c9ca59581b27f45,
0xe0aca20b624e4235,
0xd8d5c8186ba98b94,
0x1ccefc7ef118db81,
0x0c92fab3ad3db71d,
0x9b77794f5fdec44e,
0x0ac742dfe7874413,
0xd7dad5766ad8e2a9,
0xa1bb96378e897f3a,
0x5b3f9b6733a367a1,
0xb07ce25cbea969d6,
0x8d9e9997f9df0d02,
0x838c673d9603cb1e,
0x8b5ee8a5e872c201,
0x4507c4e9fb006969,
0x4c9ca59581b27f64,
0xe0aca20b624e423f,
0x13998e580afa800f,
0x08326507b4eb3401,
0xd8d5ad186ba95dc1,
0x1c72e17ef0ca4e97,
0x2183c1b327c38ae6,
0xb66d096c914504f2,
0x404bf57ad8476757,
0x887976bd815498bb,
0x3afd7f02c2bf85a5,
0xfc4476b0eb70177f,
0x186d2da00f77ecba,
0xf97140fa48c74066,
0xa2b1cf49aa926d37,
0x0690712cd6cf940c,
0xf7045b3102b8906e,
0xd8d5ad186ba95db3,
0x1c72e17ef0ca4ef3,
0x2183c1b327c38a95,
0xb66d096c914504d2,
0x404bf57ad8476736,
0x887976bd815498d5,
0x3afd7f02c2bf85c1,
0xfc4476b0eb70175f,
0x186d2da00f77eccd,
0xf97140fa48c7400e,
0xa2b1cf49aa926d52,
0x0690712cd6cf9475,
0xf7045b3102b89064,
0x74f762479f9d6aea,
0x08326007b4eb2b9c,
0xd8c4c9186b9b1a14,
0x7b495389bdbdd4c7,
0x3b6dba0d69908e25,
0xd6b2b17bf4b71261,
0x447bfb7f98e615b5,
0xd6b2b17bf4b71262,
0x3bd2807f93fe1660,
0xd6b2b17bf4b71263,
0x3329057f8f16170b,
0xd6b2b17bf4b71264,
0x2a7f8a7f8a2e19b6,
0x23d3767e64b2f98a,
0xff768d7e4f9d86a4,
0x23d3767e64b2f984,
0xccd1837e334e4aa6,
0x23d3767e64b2f99a,
0x7691fd7e028f6754,
0x34ad3b1041204318,
0xa29e749ea9d201c8,
0x34ad3b104120431b,
0xa29e779ea9d206e1,
0x34ad3b104120431a,
0xa29e769ea9d2052e,
0x02a17ebca4aa3497,
0x229ef18bcd375c95,
0x02a17dbca4aa32c8,
0x229b6f8bcd3449d8,
0x02a184bca4aa3ed5,
0x22b3618bcd48c3ef,
0x5c2c346706186f36,
0xb78c410f5b84f8c2,
0xed9478212b267395,
0xd9bbb55c5256662f,
0x8c54f0203249438a,
0xbd9790b5727dc37e,
0xa64e5f36c9e2b0e3,
0x8fd0680da3088a04,
0x67aad32c078284cc,
0xb37d55d81c57b331,
0x55ac0f3829057c43,
0xcb27f4b8e1b6cc20,
0x26caf88bcbef2d19,
0x8e6e063b97e61b8f,
0xb42750f7f3b7c37e,
0xf3c6ba64cf7ca99b,
0xebfb69b427ea80fe,
0x39b50c3ed970f46c,
0x5b9b177aa3eb3e8a,
0x6510063ecf4ec903,
0x2b3bbd2c00797c7a,
0xf1d6204ff5cb4aa7,
0x4836e27ccf099f38,
0x82efbb0dd073b44d,
0x4a80c282ffd7d4c6,
0x305d1a9c9ee43bdf,
0x15c366948ffc6997,
0x80153ae218916e7b,
0xfa23e2bdf9e2a9e1,
0xd47e8d8a2333c6de,
0x7e128095f688b056,
0x2f5356890efcedab,
0x95c2b383014f55c5,
0x4727a5339ce6070f,
0xb0555ecd575108e9,
0x48d785770bb4af37,
0x09d4701c12af02b1,
0x79f031e78f3cf62e,
0x52a1ee85db1b5a94,
0x6bd95b2eb37fa6b8,
0x74971b7077aef85d,
0xb4e4fae2ffcc1aad,
0x2bd48bd898b8f63a,
0xe9966ac1556257f6,
0x92a3d1cd078ba293,
0xf81175a482e20ab8,
0x5bbb3de722e73048,
0x6b4f363492b9f2be,
0xc2d559df73d59875,
0xf75f62284bc7a8c2,
0xda8dd8e116a9f1cc,
0xbdc1e6ab76057885,
0xfec6a4238a1224a0,
0xc03f40f3223e290e,
0x1ed21673466ffda9,
0xdf70f906bb0dd2af,
0xf3dcda369f2af666,
0x9ebb11573cdcebde,
0x81c72d9077fedca0,
0x0ec074a31be5fb15,
0x2a8b3280b6c48f20,
0xfd31777513309344,
0x194534a86ad006b6,
0x3be6fdf46e0cfe12,
0x017cc137a07eb057,
0x9428fc6e7d26b54d,
0x9aaa2e3603ef8ad7,
0x82c6d3f3a0ccdf7d,
0xc86eeea00cf09b65,
0x705f8189dbb58299,
0x415a7f554391ca69,
0xcfe3d49fa2bdc555,
0xf0f9c56039b25191,
0x7075cb6abd1d32d9,
0x43c94e2c8b277509,
0x3cbfd4e4ea670359,
0xc05887810f4d019d,
0x14468ff93ac22dc5,
0xebed699589d99c05,
0x6d99f6df321ca5d5,
0x0cd410d08c36d625,
0xef1b2a2c86831d35,
0x3b349c4d69ee5f05,
0x55248ce88f45f035,
0xaa69ca6a18a4c885,
0x1fe3fce62bd816b5,
0x0289a488a8df69d9,
0x15e96e1613df98b5,
0xe6be57375ad89b99
]}
fn fnv1a_64_vector() -> &'static[u64] { &[
0xcbf29ce484222325,
0xaf63dc4c8601ec8c,
0xaf63df4c8601f1a5,
0xaf63de4c8601eff2,
0xaf63d94c8601e773,
0xaf63d84c8601e5c0,
0xaf63db4c8601ead9,
0x08985907b541d342,
0xdcb27518fed9d577,
0xdd120e790c2512af,
0xcac165afa2fef40a,
0x85944171f73967e8,
0xaf63bd4c8601b7df,
0x089be207b544f1e4,
0x08a61407b54d9b5f,
0x08a2ae07b54ab836,
0x0891b007b53c4869,
0x088e4a07b5396540,
0x08987c07b5420ebb,
0xdcb28a18fed9f926,
0xdd1270790c25b935,
0xcac146afa2febf5d,
0x8593d371f738acfe,
0x34531ca7168b8f38,
0x08a25607b54a22ae,
0xf5faf0190cf90df3,
0xf27397910b3221c7,
0x2c8c2b76062f22e0,
0xe150688c8217b8fd,
0xf35a83c10e4f1f87,
0xd1edd10b507344d0,
0x2a5ee739b3ddb8c3,
0xdcfb970ca1c0d310,
0x4054da76daa6da90,
0xf70a2ff589861368,
0x4c628b38aed25f17,
0x9dd1f6510f78189f,
0xa3de85bd491270ce,
0x858e2fa32a55e61d,
0x46810940eff5f915,
0xf5fadd190cf8edaa,
0xf273ed910b32b3e9,
0x2c8c5276062f6525,
0xe150b98c821842a0,
0xf35aa3c10e4f55e7,
0xd1ed680b50729265,
0x2a5f0639b3dded70,
0xdcfbaa0ca1c0f359,
0x4054ba76daa6a430,
0xf709c7f5898562b0,
0x4c62e638aed2f9b8,
0x9dd1a8510f779415,
0xa3de2abd4911d62d,
0x858e0ea32a55ae0a,
0x46810f40eff60347,
0xc33bce57bef63eaf,
0x08a24307b54a0265,
0xf5b9fd190cc18d15,
0x4c968290ace35703,
0x07174bd5c64d9350,
0x5a294c3ff5d18750,
0x05b3c1aeb308b843,
0xb92a48da37d0f477,
0x73cdddccd80ebc49,
0xd58c4c13210a266b,
0xe78b6081243ec194,
0xb096f77096a39f34,
0xb425c54ff807b6a3,
0x23e520e2751bb46e,
0x1a0b44ccfe1385ec,
0xf5ba4b190cc2119f,
0x4c962690ace2baaf,
0x0716ded5c64cda19,
0x5a292c3ff5d150f0,
0x05b3e0aeb308ecf0,
0xb92a5eda37d119d9,
0x73ce41ccd80f6635,
0xd58c2c132109f00b,
0xe78baf81243f47d1,
0xb0968f7096a2ee7c,
0xb425a84ff807855c,
0x23e4e9e2751b56f9,
0x1a0b4eccfe1396ea,
0x54abd453bb2c9004,
0x08ba5f07b55ec3da,
0x337354193006cb6e,
0xa430d84680aabd0b,
0xa9bc8acca21f39b1,
0x6961196491cc682d,
0xad2bb1774799dfe9,
0x6961166491cc6314,
0x8d1bb3904a3b1236,
0x6961176491cc64c7,
0xed205d87f40434c7,
0x6961146491cc5fae,
0xcd3baf5e44f8ad9c,
0xe3b36596127cd6d8,
0xf77f1072c8e8a646,
0xe3b36396127cd372,
0x6067dce9932ad458,
0xe3b37596127cf208,
0x4b7b10fa9fe83936,
0xaabafe7104d914be,
0xf4d3180b3cde3eda,
0xaabafd7104d9130b,
0xf4cfb20b3cdb5bb1,
0xaabafc7104d91158,
0xf4cc4c0b3cd87888,
0xe729bac5d2a8d3a7,
0x74bc0524f4dfa4c5,
0xe72630c5d2a5b352,
0x6b983224ef8fb456,
0xe73042c5d2ae266d,
0x8527e324fdeb4b37,
0x0a83c86fee952abc,
0x7318523267779d74,
0x3e66d3d56b8caca1,
0x956694a5c0095593,
0xcac54572bb1a6fc8,
0xa7a4c9f3edebf0d8,
0x7829851fac17b143,
0x2c8f4c9af81bcf06,
0xd34e31539740c732,
0x3605a2ac253d2db1,
0x08c11b8346f4a3c3,
0x6be396289ce8a6da,
0xd9b957fb7fe794c5,
0x05be33da04560a93,
0x0957f1577ba9747c,
0xda2cc3acc24fba57,
0x74136f185b29e7f0,
0xb2f2b4590edb93b2,
0xb3608fce8b86ae04,
0x4a3a865079359063,
0x5b3a7ef496880a50,
0x48fae3163854c23b,
0x07aaa640476e0b9a,
0x2f653656383a687d,
0xa1031f8e7599d79c,
0xa31908178ff92477,
0x097edf3c14c3fb83,
0xb51ca83feaa0971b,
0xdd3c0d96d784f2e9,
0x86cd26a9ea767d78,
0xe6b215ff54a30c18,
0xec5b06a1c5531093,
0x45665a929f9ec5e5,
0x8c7609b4a9f10907,
0x89aac3a491f0d729,
0x32ce6b26e0f4a403,
0x614ab44e02b53e01,
0xfa6472eb6eef3290,
0x9e5d75eb1948eb6a,
0xb6d12ad4a8671852,
0x88826f56eba07af1,
0x44535bf2645bc0fd,
0x169388ffc21e3728,
0xf68aac9e396d8224,
0x8e87d7e7472b3883,
0x295c26caa8b423de,
0x322c814292e72176,
0x8a06550eb8af7268,
0xef86d60e661bcf71,
0x9e5426c87f30ee54,
0xf1ea8aa826fd047e,
0x0babaf9a642cb769,
0x4b3341d4068d012e,
0xd15605cbc30a335c,
0x5b21060aed8412e5,
0x45e2cda1ce6f4227,
0x50ae3745033ad7d4,
0xaa4588ced46bf414,
0xc1b0056c4a95467e,
0x56576a71de8b4089,
0xbf20965fa6dc927e,
0x569f8383c2040882,
0xe1e772fba08feca0,
0x4ced94af97138ac4,
0xc4112ffb337a82fb,
0xd64a4fd41de38b7d,
0x4cfc32329edebcbb,
0x0803564445050395,
0xaa1574ecf4642ffd,
0x694bc4e54cc315f9,
0xa3d7cb273b011721,
0x577c2f8b6115bfa5,
0xb7ec8c1a769fb4c1,
0x5d5cfce63359ab19,
0x33b96c3cd65b5f71,
0xd845097780602bb9,
0x84d47645d02da3d5,
0x83544f33b58773a5,
0x9175cbb2160836c5,
0xc71b3bc175e72bc5,
0x636806ac222ec985,
0xb6ef0e6950f52ed5,
0xead3d8a0f3dfdaa5,
0x922908fe9a861ba5,
0x6d4821de275fd5c5,
0x1fe3fce62bd816b5,
0xc23e9fccd6f70591,
0xc1af12bdfe16b5b5,
0x39e9f18f2f85e221
]}
#[test]
fn f64_testsuite_validation() {
assert_eq! ( fnv0_64_vector().len(), fnv_test_str().len() );
assert_eq! ( fnv1_64_vector().len(), fnv_test_str().len() );
assert_eq! ( fnv1a_64_vector().len(), fnv_test_str().len() );
}
use super::{FNV0_64_INIT, FNV1_64_INIT, FNV1A_64_INIT};
use super::{fnv_64, fnv_64a};
#[test]
fn fnv0_64_test() {
for i in 0..fnv_test_str().len() {
assert_eq! ( fnv_64( fnv_test_str()[i], FNV0_64_INIT), fnv0_64_vector()[i] );
}
}
#[test]
fn fnv1_64_test() {
for i in 0..fnv_test_str().len() {
assert_eq! ( fnv_64( fnv_test_str()[i], FNV1_64_INIT), fnv1_64_vector()[i] );
}
}
#[test]
fn fnv1a_64_test() {
for i in 0..fnv_test_str().len() {
assert_eq! ( fnv_64a( fnv_test_str()[i], FNV1A_64_INIT), fnv1a_64_vector()[i] );
}
}