| var crypto = require('crypto') | 
| var tape = require('tape') | 
| var Sha1 = require('../').sha1 | 
|   | 
| var inputs = [ | 
|   ['', 'ascii'], | 
|   ['abc', 'ascii'], | 
|   ['123', 'ascii'], | 
|   ['123456789abcdef123456789abcdef123456789abcdef123456789abcdef', 'ascii'], | 
|   ['123456789abcdef123456789abcdef123456789abcdef123456789abc', 'ascii'], | 
|   ['123456789abcdef123456789abcdef123456789abcdef123456789ab', 'ascii'], | 
|   ['0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcde', 'ascii'], | 
|   ['0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef', 'ascii'], | 
|   ['foobarbaz', 'ascii'] | 
| ] | 
|   | 
| tape("hash is the same as node's crypto", function (t) { | 
|   inputs.forEach(function (v) { | 
|     var a = new Sha1().update(v[0], v[1]).digest('hex') | 
|     var e = crypto.createHash('sha1').update(v[0], v[1]).digest('hex') | 
|     console.log(a, '==', e) | 
|     t.equal(a, e) | 
|   }) | 
|   | 
|   t.end() | 
| }) | 
|   | 
| tape('call update multiple times', function (t) { | 
|   inputs.forEach(function (v) { | 
|     var hash = new Sha1() | 
|     var _hash = crypto.createHash('sha1') | 
|   | 
|     for (var i = 0; i < v[0].length; i = (i + 1) * 2) { | 
|       var s = v[0].substring(i, (i + 1) * 2) | 
|       hash.update(s, v[1]) | 
|       _hash.update(s, v[1]) | 
|     } | 
|   | 
|     var a = hash.digest('hex') | 
|     var e = _hash.digest('hex') | 
|     console.log(a, '==', e) | 
|     t.equal(a, e) | 
|   }) | 
|   t.end() | 
| }) | 
|   | 
| tape('call update twice', function (t) { | 
|   var _hash = crypto.createHash('sha1') | 
|   var hash = new Sha1() | 
|   | 
|   _hash.update('foo', 'ascii') | 
|   hash.update('foo', 'ascii') | 
|   | 
|   _hash.update('bar', 'ascii') | 
|   hash.update('bar', 'ascii') | 
|   | 
|   _hash.update('baz', 'ascii') | 
|   hash.update('baz', 'ascii') | 
|   | 
|   var a = hash.digest('hex') | 
|   var e = _hash.digest('hex') | 
|   | 
|   t.equal(a, e) | 
|   t.end() | 
| }) | 
|   | 
| tape('hex encoding', function (t) { | 
|   inputs.forEach(function (v) { | 
|     var hash = new Sha1() | 
|     var _hash = crypto.createHash('sha1') | 
|   | 
|     for (var i = 0; i < v[0].length; i = (i + 1) * 2) { | 
|       var s = v[0].substring(i, (i + 1) * 2) | 
|       hash.update(Buffer.from(s, 'ascii').toString('hex'), 'hex') | 
|       _hash.update(Buffer.from(s, 'ascii').toString('hex'), 'hex') | 
|     } | 
|     var a = hash.digest('hex') | 
|     var e = _hash.digest('hex') | 
|   | 
|     console.log(a, '==', e) | 
|     t.equal(a, e) | 
|   }) | 
|   | 
|   t.end() | 
| }) | 
|   | 
| tape('call digest for more than MAX_UINT32 bits of data', function (t) { | 
|   var _hash = crypto.createHash('sha1') | 
|   var hash = new Sha1() | 
|   var bigData = Buffer.alloc(0x1ffffffff / 8) | 
|   | 
|   hash.update(bigData) | 
|   _hash.update(bigData) | 
|   | 
|   var a = hash.digest('hex') | 
|   var e = _hash.digest('hex') | 
|   | 
|   t.equal(a, e) | 
|   t.end() | 
| }) |