fnv164.phpt 10.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. --TEST--
  2. Hash: FNV164 algorithm
  3. --FILE--
  4. <?php
  5. function R10($t) {
  6. return str_repeat($t, 10);
  7. }
  8. function R500($t) {
  9. return str_repeat($t, 500);
  10. }
  11. $tests = array(
  12. array( "", "cbf29ce484222325" ),
  13. array( "a", "af63bd4c8601b7be" ),
  14. array( "b", "af63bd4c8601b7bd" ),
  15. array( "c", "af63bd4c8601b7bc" ),
  16. array( "d", "af63bd4c8601b7bb" ),
  17. array( "e", "af63bd4c8601b7ba" ),
  18. array( "f", "af63bd4c8601b7b9" ),
  19. array( "fo", "08326207b4eb2f34" ),
  20. array( "foo", "d8cbc7186ba13533" ),
  21. array( "foob", "0378817ee2ed65cb" ),
  22. array( "fooba", "d329d59b9963f790" ),
  23. array( "foobar", "340d8765a4dda9c2" ),
  24. array( "\0", "af63bd4c8601b7df" ),
  25. array( "a\0", "08326707b4eb37da" ),
  26. array( "b\0", "08326607b4eb3627" ),
  27. array( "c\0", "08326507b4eb3474" ),
  28. array( "d\0", "08326407b4eb32c1" ),
  29. array( "e\0", "08326307b4eb310e" ),
  30. array( "f\0", "08326207b4eb2f5b" ),
  31. array( "fo\0", "d8cbc7186ba1355c" ),
  32. array( "foo\0", "0378817ee2ed65a9" ),
  33. array( "foob\0", "d329d59b9963f7f1" ),
  34. array( "fooba\0", "340d8765a4dda9b0" ),
  35. array( "foobar\0", "50a6d3b724a774a6" ),
  36. array( "ch", "08326507b4eb341c" ),
  37. array( "cho", "d8d5c8186ba98bfb" ),
  38. array( "chon", "1ccefc7ef118dbef" ),
  39. array( "chong", "0c92fab3ad3db77a" ),
  40. array( "chongo", "9b77794f5fdec421" ),
  41. array( "chongo ", "0ac742dfe7874433" ),
  42. array( "chongo w", "d7dad5766ad8e2de" ),
  43. array( "chongo wa", "a1bb96378e897f5b" ),
  44. array( "chongo was", "5b3f9b6733a367d2" ),
  45. array( "chongo was ", "b07ce25cbea969f6" ),
  46. array( "chongo was h", "8d9e9997f9df0d6a" ),
  47. array( "chongo was he", "838c673d9603cb7b" ),
  48. array( "chongo was her", "8b5ee8a5e872c273" ),
  49. array( "chongo was here", "4507c4e9fb00690c" ),
  50. array( "chongo was here!", "4c9ca59581b27f45" ),
  51. array( "chongo was here!\n", "e0aca20b624e4235" ),
  52. array( "ch\0", "d8d5c8186ba98b94" ),
  53. array( "cho\0", "1ccefc7ef118db81" ),
  54. array( "chon\0", "0c92fab3ad3db71d" ),
  55. array( "chong\0", "9b77794f5fdec44e" ),
  56. array( "chongo\0", "0ac742dfe7874413" ),
  57. array( "chongo \0", "d7dad5766ad8e2a9" ),
  58. array( "chongo w\0", "a1bb96378e897f3a" ),
  59. array( "chongo wa\0", "5b3f9b6733a367a1" ),
  60. array( "chongo was\0", "b07ce25cbea969d6" ),
  61. array( "chongo was \0", "8d9e9997f9df0d02" ),
  62. array( "chongo was h\0", "838c673d9603cb1e" ),
  63. array( "chongo was he\0", "8b5ee8a5e872c201" ),
  64. array( "chongo was her\0", "4507c4e9fb006969" ),
  65. array( "chongo was here\0", "4c9ca59581b27f64" ),
  66. array( "chongo was here!\0", "e0aca20b624e423f" ),
  67. array( "chongo was here!\n\0", "13998e580afa800f" ),
  68. array( "cu", "08326507b4eb3401" ),
  69. array( "cur", "d8d5ad186ba95dc1" ),
  70. array( "curd", "1c72e17ef0ca4e97" ),
  71. array( "curds", "2183c1b327c38ae6" ),
  72. array( "curds ", "b66d096c914504f2" ),
  73. array( "curds a", "404bf57ad8476757" ),
  74. array( "curds an", "887976bd815498bb" ),
  75. array( "curds and", "3afd7f02c2bf85a5" ),
  76. array( "curds and ", "fc4476b0eb70177f" ),
  77. array( "curds and w", "186d2da00f77ecba" ),
  78. array( "curds and wh", "f97140fa48c74066" ),
  79. array( "curds and whe", "a2b1cf49aa926d37" ),
  80. array( "curds and whey", "0690712cd6cf940c" ),
  81. array( "curds and whey\n", "f7045b3102b8906e" ),
  82. array( "cu\0", "d8d5ad186ba95db3" ),
  83. array( "cur\0", "1c72e17ef0ca4ef3" ),
  84. array( "curd\0", "2183c1b327c38a95" ),
  85. array( "curds\0", "b66d096c914504d2" ),
  86. array( "curds \0", "404bf57ad8476736" ),
  87. array( "curds a\0", "887976bd815498d5" ),
  88. array( "curds an\0", "3afd7f02c2bf85c1" ),
  89. array( "curds and\0", "fc4476b0eb70175f" ),
  90. array( "curds and \0", "186d2da00f77eccd" ),
  91. array( "curds and w\0", "f97140fa48c7400e" ),
  92. array( "curds and wh\0", "a2b1cf49aa926d52" ),
  93. array( "curds and whe\0", "0690712cd6cf9475" ),
  94. array( "curds and whey\0", "f7045b3102b89064" ),
  95. array( "curds and whey\n\0", "74f762479f9d6aea" ),
  96. array( "line 1\nline 2\nline 3", "a64e5f36c9e2b0e3" ),
  97. array( "chongo <Landon Curt Noll> /\\../\\", "8fd0680da3088a04" ),
  98. array( "chongo <Landon Curt Noll> /\\../\\\0", "67aad32c078284cc" ),
  99. array( "chongo (Landon Curt Noll) /\\../\\", "b37d55d81c57b331" ),
  100. array( "chongo (Landon Curt Noll) /\\../\\\0", "55ac0f3829057c43" ),
  101. array( "http://antwrp.gsfc.nasa.gov/apod/astropix.html", "cb27f4b8e1b6cc20" ),
  102. array( "http://en.wikipedia.org/wiki/Fowler_Noll_Vo_hash", "26caf88bcbef2d19" ),
  103. array( "http://epod.usra.edu/", "8e6e063b97e61b8f" ),
  104. array( "http://exoplanet.eu/", "b42750f7f3b7c37e" ),
  105. array( "http://hvo.wr.usgs.gov/cam3/", "f3c6ba64cf7ca99b" ),
  106. array( "http://hvo.wr.usgs.gov/cams/HMcam/", "ebfb69b427ea80fe" ),
  107. array( "http://hvo.wr.usgs.gov/kilauea/update/deformation.html", "39b50c3ed970f46c" ),
  108. array( "http://hvo.wr.usgs.gov/kilauea/update/images.html", "5b9b177aa3eb3e8a" ),
  109. array( "http://hvo.wr.usgs.gov/kilauea/update/maps.html", "6510063ecf4ec903" ),
  110. array( "http://hvo.wr.usgs.gov/volcanowatch/current_issue.html", "2b3bbd2c00797c7a" ),
  111. array( "http://neo.jpl.nasa.gov/risk/", "f1d6204ff5cb4aa7" ),
  112. array( "http://norvig.com/21-days.html", "4836e27ccf099f38" ),
  113. array( "http://primes.utm.edu/curios/home.php", "82efbb0dd073b44d" ),
  114. array( "http://slashdot.org/", "4a80c282ffd7d4c6" ),
  115. array( "http://tux.wr.usgs.gov/Maps/155.25-19.5.html", "305d1a9c9ee43bdf" ),
  116. array( "http://volcano.wr.usgs.gov/kilaueastatus.php", "15c366948ffc6997" ),
  117. array( "http://www.avo.alaska.edu/activity/Redoubt.php", "80153ae218916e7b" ),
  118. array( "http://www.dilbert.com/fast/", "fa23e2bdf9e2a9e1" ),
  119. array( "http://www.fourmilab.ch/gravitation/orbits/", "d47e8d8a2333c6de" ),
  120. array( "http://www.fpoa.net/", "7e128095f688b056" ),
  121. array( "http://www.ioccc.org/index.html", "2f5356890efcedab" ),
  122. array( "http://www.isthe.com/cgi-bin/number.cgi", "95c2b383014f55c5" ),
  123. array( "http://www.isthe.com/chongo/bio.html", "4727a5339ce6070f" ),
  124. array( "http://www.isthe.com/chongo/index.html", "b0555ecd575108e9" ),
  125. array( "http://www.isthe.com/chongo/src/calc/lucas-calc", "48d785770bb4af37" ),
  126. array( "http://www.isthe.com/chongo/tech/astro/venus2004.html", "09d4701c12af02b1" ),
  127. array( "http://www.isthe.com/chongo/tech/astro/vita.html", "79f031e78f3cf62e" ),
  128. array( "http://www.isthe.com/chongo/tech/comp/c/expert.html", "52a1ee85db1b5a94" ),
  129. array( "http://www.isthe.com/chongo/tech/comp/calc/index.html", "6bd95b2eb37fa6b8" ),
  130. array( "http://www.isthe.com/chongo/tech/comp/fnv/index.html", "74971b7077aef85d" ),
  131. array( "http://www.isthe.com/chongo/tech/math/number/howhigh.html", "b4e4fae2ffcc1aad" ),
  132. array( "http://www.isthe.com/chongo/tech/math/number/number.html", "2bd48bd898b8f63a" ),
  133. array( "http://www.isthe.com/chongo/tech/math/prime/mersenne.html", "e9966ac1556257f6" ),
  134. array( "http://www.isthe.com/chongo/tech/math/prime/mersenne.html#largest", "92a3d1cd078ba293" ),
  135. array( "http://www.lavarnd.org/cgi-bin/corpspeak.cgi", "f81175a482e20ab8" ),
  136. array( "http://www.lavarnd.org/cgi-bin/haiku.cgi", "5bbb3de722e73048" ),
  137. array( "http://www.lavarnd.org/cgi-bin/rand-none.cgi", "6b4f363492b9f2be" ),
  138. array( "http://www.lavarnd.org/cgi-bin/randdist.cgi", "c2d559df73d59875" ),
  139. array( "http://www.lavarnd.org/index.html", "f75f62284bc7a8c2" ),
  140. array( "http://www.lavarnd.org/what/nist-test.html", "da8dd8e116a9f1cc" ),
  141. array( "http://www.macosxhints.com/", "bdc1e6ab76057885" ),
  142. array( "http://www.mellis.com/", "fec6a4238a1224a0" ),
  143. array( "http://www.nature.nps.gov/air/webcams/parks/havoso2alert/havoalert.cfm", "c03f40f3223e290e" ),
  144. array( "http://www.nature.nps.gov/air/webcams/parks/havoso2alert/timelines_24.cfm", "1ed21673466ffda9" ),
  145. array( "http://www.paulnoll.com/", "df70f906bb0dd2af" ),
  146. array( "http://www.pepysdiary.com/", "f3dcda369f2af666" ),
  147. array( "http://www.sciencenews.org/index/home/activity/view", "9ebb11573cdcebde" ),
  148. array( "http://www.skyandtelescope.com/", "81c72d9077fedca0" ),
  149. array( "http://www.sput.nl/~rob/sirius.html", "0ec074a31be5fb15" ),
  150. array( "http://www.systemexperts.com/", "2a8b3280b6c48f20" ),
  151. array( "http://www.tq-international.com/phpBB3/index.php", "fd31777513309344" ),
  152. array( "http://www.travelquesttours.com/index.htm", "194534a86ad006b6" ),
  153. array( "http://www.wunderground.com/global/stations/89606.html", "3be6fdf46e0cfe12" ),
  154. array( R10("21701"), "017cc137a07eb057" ),
  155. array( R10("M21701"), "9428fc6e7d26b54d" ),
  156. array( R10("2^21701-1"), "9aaa2e3603ef8ad7" ),
  157. array( R10("\x54\xc5"), "82c6d3f3a0ccdf7d" ),
  158. array( R10("\xc5\x54"), "c86eeea00cf09b65" ),
  159. array( R10("23209"), "705f8189dbb58299" ),
  160. array( R10("M23209"), "415a7f554391ca69" ),
  161. array( R10("2^23209-1"), "cfe3d49fa2bdc555" ),
  162. array( R10("\x5a\xa9"), "f0f9c56039b25191" ),
  163. array( R10("\xa9\x5a"), "7075cb6abd1d32d9" ),
  164. array( R10("391581216093"), "43c94e2c8b277509" ),
  165. array( R10("391581*2^216093-1"), "3cbfd4e4ea670359" ),
  166. array( R10("\x05\xf9\x9d\x03\x4c\x81"), "c05887810f4d019d" ),
  167. array( R10("FEDCBA9876543210"), "14468ff93ac22dc5" ),
  168. array( R10("\xfe\xdc\xba\x98\x76\x54\x32\x10"), "ebed699589d99c05" ),
  169. array( R10("EFCDAB8967452301"), "6d99f6df321ca5d5" ),
  170. array( R10("\xef\xcd\xab\x89\x67\x45\x23\x01"), "0cd410d08c36d625" ),
  171. array( R10("0123456789ABCDEF"), "ef1b2a2c86831d35" ),
  172. array( R10("\x01\x23\x45\x67\x89\xab\xcd\xef"), "3b349c4d69ee5f05" ),
  173. array( R10("1032547698BADCFE"), "55248ce88f45f035" ),
  174. array( R10("\x10\x32\x54\x76\x98\xba\xdc\xfe"), "aa69ca6a18a4c885" ),
  175. array( R500("\x00"), "1fe3fce62bd816b5" ),
  176. array( R500("\x07"), "0289a488a8df69d9" ),
  177. array( R500("~"), "15e96e1613df98b5" ),
  178. array( R500("\x7f"), "e6be57375ad89b99" ),
  179. );
  180. $i = 0;
  181. $pass = true;
  182. foreach($tests as $test) {
  183. $result = hash('fnv164', $test[0]);
  184. if ($result != $test[1]) {
  185. echo "Iteration " . $i . " failed - expected '" . $test[1] . "', got '" . $result . "' for '" . $test[1] . "'\n";
  186. $pass = false;
  187. }
  188. $i++;
  189. }
  190. if($pass) {
  191. echo "PASS";
  192. }
  193. ?>
  194. --EXPECT--
  195. PASS