aboutsummaryrefslogtreecommitdiff
path: root/contexts/data/lib/closure-library/closure/goog/crypt/hash32_test.html
diff options
context:
space:
mode:
authorGravatar Rogan Creswick <creswick@galois.com>2012-03-30 17:07:02 -0700
committerGravatar Rogan Creswick <creswick@galois.com>2012-03-30 17:07:02 -0700
commitf6ab6622aab00fe7c2f4c3dc41f786ebbe0f0d73 (patch)
tree870111038542cd27153e1396ebdc063573249689 /contexts/data/lib/closure-library/closure/goog/crypt/hash32_test.html
initial revision
Diffstat (limited to 'contexts/data/lib/closure-library/closure/goog/crypt/hash32_test.html')
-rw-r--r--contexts/data/lib/closure-library/closure/goog/crypt/hash32_test.html287
1 files changed, 287 insertions, 0 deletions
diff --git a/contexts/data/lib/closure-library/closure/goog/crypt/hash32_test.html b/contexts/data/lib/closure-library/closure/goog/crypt/hash32_test.html
new file mode 100644
index 0000000..67062c4
--- /dev/null
+++ b/contexts/data/lib/closure-library/closure/goog/crypt/hash32_test.html
@@ -0,0 +1,287 @@
+<!DOCTYPE html>
+<html>
+<!--
+Copyright 2008 The Closure Library Authors. All Rights Reserved.
+
+Use of this source code is governed by the Apache License, Version 2.0.
+See the COPYING file for details.
+-->
+<head>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<title>Closure Unit Tests - goog.crypt.hash32</title>
+<script src="../base.js"></script>
+<script>
+ goog.require('goog.crypt.hash32');
+ goog.require('goog.testing.jsunit');
+</script>
+</head>
+<body>
+<script>
+
+ // NOTE: This test uses a custom test case, see end of script block
+
+ // Test data based on known input/output pairs generated using
+ // http://go/hash.java
+
+ function testEncodeInteger() {
+ assertEquals(898813988, goog.crypt.hash32.encodeInteger(305419896));
+ }
+
+ function testEncodeByteArray() {
+ assertEquals(-1497024495,
+ goog.crypt.hash32.encodeByteArray([10, 20, 30, 40]));
+ assertEquals(-961586214,
+ goog.crypt.hash32.encodeByteArray([3, 1, 4, 1, 5, 9]));
+ assertEquals(-1482202299,
+ goog.crypt.hash32.encodeByteArray([127, 0, 0, 0, 123, 45]));
+ assertEquals(170907881,
+ goog.crypt.hash32.encodeByteArray([9, 1, 1]));
+ }
+
+ function testKnownByteArrays() {
+ for (var i = 0; i < byteArrays.length; i++) {
+ assertEquals(byteArrays[i],
+ goog.crypt.hash32.encodeByteArray(createByteArray(i)));
+ }
+ }
+
+ function testEncodeString() {
+ assertEquals(-937588052, goog.crypt.hash32.encodeString('Hello, world'));
+ assertEquals(62382810, goog.crypt.hash32.encodeString('Sch\xF6n'));
+ }
+
+ function testEncodeStringUtf8() {
+ assertEquals(-937588052,
+ goog.crypt.hash32.encodeStringUtf8('Hello, world'));
+ assertEquals(-833263351, goog.crypt.hash32.encodeStringUtf8('Sch\xF6n'));
+
+ assertEquals(-1771620293, goog.crypt.hash32.encodeStringUtf8(
+ '\u043A\u0440'));
+ }
+
+ function testEncodeString_ascii() {
+ assertEquals('For ascii characters UTF8 should be the same',
+ goog.crypt.hash32.encodeStringUtf8('abc123'),
+ goog.crypt.hash32.encodeString('abc123'));
+
+ assertEquals('For ascii characters UTF8 should be the same',
+ goog.crypt.hash32.encodeStringUtf8('The,quick.brown-fox'),
+ goog.crypt.hash32.encodeString('The,quick.brown-fox'));
+
+ assertNotEquals('For non-ascii characters UTF-8 encoding is different',
+ goog.crypt.hash32.encodeStringUtf8('Sch\xF6n'),
+ goog.crypt.hash32.encodeString('Sch\xF6n'));
+ }
+
+ function testEncodeString_poe() {
+ var poe = "Once upon a midnight dreary, while I pondered weak and weary," +
+ "Over many a quaint and curious volume of forgotten lore," +
+ "While I nodded, nearly napping, suddenly there came a tapping," +
+ "As of some one gently rapping, rapping at my chamber door." +
+ "`'Tis some visitor,' I muttered, `tapping at my chamber door -" +
+ "Only this, and nothing more.'" +
+ "Ah, distinctly I remember it was in the bleak December," +
+ "And each separate dying ember wrought its ghost upon the floor." +
+ "Eagerly I wished the morrow; - vainly I had sought to borrow" +
+ "From my books surcease of sorrow - sorrow for the lost Lenore -" +
+ "For the rare and radiant maiden whom the angels named Lenore -" +
+ "Nameless here for evermore." +
+ "And the silken sad uncertain rustling of each purple curtain" +
+ "Thrilled me - filled me with fantastic terrors never felt before;" +
+ "So that now, to still the beating of my heart, I stood repeating" +
+ "`'Tis some visitor entreating entrance at my chamber door -" +
+ "Some late visitor entreating entrance at my chamber door; -" +
+ "This it is, and nothing more,'" +
+ "Presently my soul grew stronger; hesitating then no longer," +
+ "`Sir,' said I, `or Madam, truly your forgiveness I implore;" +
+ "But the fact is I was napping, and so gently you came rapping," +
+ "And so faintly you came tapping, tapping at my chamber door," +
+ "That I scarce was sure I heard you' - here I opened wide the door; -" +
+ "Darkness there, and nothing more." +
+ "Deep into that darkness peering, long I stood there wondering, " +
+ "fearing," +
+ "Doubting, dreaming dreams no mortal ever dared to dream before" +
+ "But the silence was unbroken, and the darkness gave no token," +
+ "And the only word there spoken was the whispered word, `Lenore!'" +
+ "This I whispered, and an echo murmured back the word, `Lenore!'" +
+ "Merely this and nothing more." +
+ "Back into the chamber turning, all my soul within me burning," +
+ "Soon again I heard a tapping somewhat louder than before." +
+ "`Surely,\' said I, `surely that is something at my window lattice;" +
+ "Let me see then, what thereat is, and this mystery explore -" +
+ "Let my heart be still a moment and this mystery explore; -" +
+ "'Tis the wind and nothing more!'";
+
+ assertEquals(147608747, goog.crypt.hash32.encodeString(poe));
+ assertEquals(147608747, goog.crypt.hash32.encodeStringUtf8(poe));
+ }
+
+ function testBenchmarking() {
+ if (!testCase) return;
+ // Not a real test, just outputs some timing
+ function makeString(n) {
+ var str = [];
+ for (var i = 0; i < n; i++) {
+ str.push(String.fromCharCode(Math.round(Math.random() * 500)));
+ }
+ return str.join('');
+ }
+ for (var i = 0; i < 50000; i+= 10000) {
+ var str = makeString(i);
+ var start = goog.now();
+ var hash = goog.crypt.hash32.encodeString(str);
+ var diff = goog.now() - start;
+ testCase.saveMessage(
+ 'testBenchmarking : hashing ' + i + ' chars in ' + diff + 'ms');
+ }
+ }
+
+ function createByteArray(n) {
+ var arr = [];
+ for (var i = 0; i < n; i++) {
+ arr.push(i);
+ }
+ return arr;
+ }
+
+ var byteArrays = {
+ 0: 1539411136,
+ 1: 1773524747,
+ 2: -254958930,
+ 3: 1532114172,
+ 4: 1923165449,
+ 5: 1611874589,
+ 6: 1502126780,
+ 7: -751745251,
+ 8: -292491321,
+ 9: 1106193218,
+ 10: -722791438,
+ 11: -2130666060,
+ 12: -259304553,
+ 13: 871461192,
+ 14: 865773084,
+ 15: 1615738330,
+ 16: -1836636447,
+ 17: -485722519,
+ 18: -120832227,
+ 19: 1954449704,
+ 20: 491312921,
+ 21: -1955462668,
+ 22: 168565425,
+ 23: -105893922,
+ 24: 620486614,
+ 25: -1789602428,
+ 26: 1765793554,
+ 27: 1723370948,
+ 28: -1275405721,
+ 29: 140421019,
+ 30: -1438726307,
+ 31: 538438903,
+ 32: -729123980,
+ 33: 1213490939,
+ 34: -1814248478,
+ 35: 1943703398,
+ 36: 1603073219,
+ 37: -2139639543,
+ 38: -694153941,
+ 39: 137511516,
+ 40: -249943726,
+ 41: -1166126060,
+ 42: 53464833,
+ 43: -915350862,
+ 44: 1306585409,
+ 45: 1064798289,
+ 46: 335555913,
+ 47: 224485496,
+ 48: 275599760,
+ 49: 409559869,
+ 50: 673770580,
+ 51: -2113819879,
+ 52: -791338727,
+ 53: -1716479479,
+ 54: 1795018816,
+ 55: 2020139343,
+ 56: -1652827750,
+ 57: -1509632558,
+ 58: 751641995,
+ 59: -217881377,
+ 60: -476546900,
+ 61: -1893349644,
+ 62: -729290332,
+ 63: 1359899321,
+ 64: 1811814306,
+ 65: 2100363086,
+ 66: -794920327,
+ 67: -1667555017,
+ 68: -549980099,
+ 69: -21170740,
+ 70: -1324143722,
+ 71: 1406730195,
+ 72: 2111381574,
+ 73: -1667480052,
+ 74: 1071811178,
+ 75: -1080194099,
+ 76: -181186882,
+ 77: 268677507,
+ 78: -546766334,
+ 79: 555953522,
+ 80: -981311675,
+ 81: 1988867392,
+ 82: 773172547,
+ 83: 1160806722,
+ 84: -1455460187,
+ 85: 83493600,
+ 86: 155365142,
+ 87: 1714618071,
+ 88: 1487712615,
+ 89: -810670278,
+ 90: 2031655097,
+ 91: 1286349470,
+ 92: -1873594211,
+ 93: 1875867480,
+ 94: -1096259787,
+ 95: -1054968610,
+ 96: -1723043458,
+ 97: 1278708307,
+ 98: -601104085,
+ 99: 1497928579,
+ 100: 1329732615,
+ 101: -1281696190,
+ 102: 1471511953,
+ 103: -62666299,
+ 104: 807569747,
+ 105: -1927974759,
+ 106: 1462243717,
+ 107: -862975602,
+ 108: 824369927,
+ 109: -1448816781,
+ 110: 1434162022,
+ 111: -881501413,
+ 112: -1554381107,
+ 113: -1730883204,
+ 114: 431236217,
+ 115: 1877278608,
+ 116: -673864625,
+ 117: 143000665,
+ 118: -596902829,
+ 119: 1038860559,
+ 120: 805884326,
+ 121: -1536181710,
+ 122: -1357373256,
+ 123: 1405134250,
+ 124: -860816481,
+ 125: 1393578269,
+ 126: -810682545,
+ 127: -635515639
+ };
+
+ var testCase;
+ if (G_testRunner) {
+ testCase = new goog.testing.TestCase(document.title);
+ testCase.autoDiscoverTests();
+ G_testRunner.initialize(testCase);
+ }
+
+</script>
+</body>
+</html>