| var tape = require('tape') | 
| var Hash = require('../hash') | 
| var hex = '0A1B2C3D4E5F6G7H' | 
|   | 
| function equal (t, a, b) { | 
|   t.equal(a.length, b.length) | 
|   t.equal(a.toString('hex'), b.toString('hex')) | 
| } | 
|   | 
| var hexBuf = Buffer.from('0A1B2C3D4E5F6G7H', 'utf8') | 
| var count16 = { | 
|   strings: ['0A1B2C3D4E5F6G7H'], | 
|   buffers: [ | 
|     hexBuf, | 
|     Buffer.from('80000000000000000000000000000080', 'hex') | 
|   ] | 
| } | 
|   | 
| var empty = { | 
|   strings: [''], | 
|   buffers: [ | 
|     Buffer.from('80000000000000000000000000000000', 'hex') | 
|   ] | 
| } | 
|   | 
| var multi = { | 
|   strings: ['abcd', 'efhijk', 'lmnopq'], | 
|   buffers: [ | 
|     Buffer.from('abcdefhijklmnopq', 'ascii'), | 
|     Buffer.from('80000000000000000000000000000080', 'hex') | 
|   ] | 
| } | 
|   | 
| var long = { | 
|   strings: [hex + hex], | 
|   buffers: [ | 
|     hexBuf, | 
|     hexBuf, | 
|     Buffer.from('80000000000000000000000000000100', 'hex') | 
|   ] | 
| } | 
|   | 
| function makeTest (name, data) { | 
|   tape(name, function (t) { | 
|     var h = new Hash(16, 8) | 
|     var hash = Buffer.alloc(20) | 
|     var n = 2 | 
|     var expected = data.buffers.slice() | 
|     // t.plan(expected.length + 1) | 
|   | 
|     h._update = function (block) { | 
|       var e = expected.shift() | 
|       equal(t, block, e) | 
|   | 
|       if (n < 0) { | 
|         throw new Error('expecting only 2 calls to _update') | 
|       } | 
|     } | 
|     h._hash = function () { | 
|       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) |