diff options
Diffstat (limited to 'node_modules/sha.js/test/hash.js')
-rw-r--r-- | node_modules/sha.js/test/hash.js | 86 |
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) |