aboutsummaryrefslogtreecommitdiff
path: root/node_modules/sha.js/test/hash.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/sha.js/test/hash.js')
-rw-r--r--node_modules/sha.js/test/hash.js86
1 files changed, 86 insertions, 0 deletions
diff --git a/node_modules/sha.js/test/hash.js b/node_modules/sha.js/test/hash.js
new file mode 100644
index 000000000..2f376b4d9
--- /dev/null
+++ b/node_modules/sha.js/test/hash.js
@@ -0,0 +1,86 @@
+var hexpp = require('../hexpp').defaults({ bigendian: false })
+var tape = require('tape')
+var Hash = require('../hash')
+
+var hex = '0A1B2C3D4E5F6G7H'
+
+function equal (t, a, b) {
+ t.equal(a.length, b.length)
+
+ for (var i = 0; i < a.length; i++) {
+ t.equal(a[i], b[i])
+ }
+}
+
+var hexBuf = new Buffer([48, 65, 49, 66, 50, 67, 51, 68, 52, 69, 53, 70, 54, 71, 55, 72])
+var count16 = {
+ strings: ['0A1B2C3D4E5F6G7H'],
+ buffers: [
+ hexBuf,
+ new Buffer([ 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128])
+ ]
+}
+
+var empty = {
+ strings: [''],
+ buffers: [
+ new Buffer([ 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ])
+ ]
+}
+
+var multi = {
+ strings: ['abcd', 'efhijk', 'lmnopq'],
+ buffers: [
+ new Buffer('abcdefhijklmnopq', 'ascii'),
+ new Buffer([128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128])
+ ]
+ }
+
+var long = {
+ strings: [hex + hex],
+ buffers: [
+ hexBuf,
+ hexBuf,
+ new Buffer([128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0])
+ ]
+}
+
+function makeTest (name, data) {
+ tape(name, function (t) {
+
+ var h = new Hash(16, 8)
+ var hash = new Buffer(20)
+ var n = 2
+ var expected = data.buffers.slice()
+ // t.plan(expected.length + 1)
+
+ h._update = function (block) {
+ var e = expected.shift()
+
+ console.log('---block---')
+ console.log(hexpp(block), block.length)
+ console.log('---e---')
+ console.log(hexpp(e), block.length)
+ console.log(block)
+ equal(t, block, e)
+
+ if (n < 0) {
+ throw new Error('expecting only 2 calls to _update')
+ }
+
+ return hash
+ }
+
+ data.strings.forEach(function (string) {
+ h.update(string, 'ascii')
+ })
+
+ equal(t, h.digest(), hash)
+ t.end()
+ })
+}
+
+makeTest('Hash#update 1 in 1', count16)
+makeTest('empty Hash#update', empty)
+makeTest('Hash#update 1 in 3', multi)
+makeTest('Hash#update 2 in 1', long)