Blame view

node_modules/sha.js/test/hash.js 1.52 KB
aaac7fed   liuqimichale   add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
  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)