Adding mapbox-gl branch
This commit is contained in:
@@ -0,0 +1,284 @@
|
||||
// Copyright 2008 The Closure Library Authors. All Rights Reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS-IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
goog.provide('goog.crypt.hash32Test');
|
||||
goog.setTestOnly('goog.crypt.hash32Test');
|
||||
|
||||
goog.require('goog.crypt.hash32');
|
||||
goog.require('goog.testing.TestCase');
|
||||
goog.require('goog.testing.jsunit');
|
||||
|
||||
// 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);
|
||||
}
|
||||
Reference in New Issue
Block a user