76 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 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)
 |