1const t = require('tap') 2const MPS = require('../') 3 4t.test('ok if size checks out', t => { 5 const mps = new MPS({ size: 4 }) 6 7 mps.write(Buffer.from('a').toString('hex'), 'hex') 8 mps.write(Buffer.from('sd')) 9 mps.end('f') 10 return mps.concat().then(data => t.equal(data.toString(), 'asdf')) 11}) 12 13t.test('error if size exceeded', t => { 14 const mps = new MPS({ size: 1 }) 15 mps.on('error', er => { 16 t.match(er, { 17 message: 'Bad data size: expected 1 bytes, but got 4', 18 found: 4, 19 expect: 1, 20 code: 'EBADSIZE', 21 name: 'SizeError', 22 }) 23 t.end() 24 }) 25 mps.write('asdf') 26}) 27 28t.test('error if size is not met', t => { 29 const mps = new MPS({ size: 999 }) 30 t.throws(() => mps.end(), { 31 message: 'Bad data size: expected 999 bytes, but got 0', 32 found: 0, 33 name: 'SizeError', 34 expect: 999, 35 code: 'EBADSIZE', 36 }) 37 t.end() 38}) 39 40t.test('error if non-string/buffer is written', t => { 41 const mps = new MPS({size:1}) 42 mps.on('error', er => { 43 t.match(er, { 44 message: 'MinipassSized streams only work with string and buffer data' 45 }) 46 t.end() 47 }) 48 mps.write({some:'object'}) 49}) 50 51t.test('projectiles', t => { 52 t.throws(() => new MPS(), { 53 message: 'invalid expected size: undefined' 54 }, 'size is required') 55 t.throws(() => new MPS({size: true}), { 56 message: 'invalid expected size: true' 57 }, 'size must be number') 58 t.throws(() => new MPS({size: NaN}), { 59 message: 'invalid expected size: NaN' 60 }, 'size must not be NaN') 61 t.throws(() => new MPS({size:1.2}), { 62 message: 'invalid expected size: 1.2' 63 }, 'size must be integer') 64 t.throws(() => new MPS({size: Infinity}), { 65 message: 'invalid expected size: Infinity' 66 }, 'size must be finite') 67 t.throws(() => new MPS({size: -1}), { 68 message: 'invalid expected size: -1' 69 }, 'size must be positive') 70 t.throws(() => new MPS({objectMode: true}), { 71 message: 'MinipassSized streams only work with string and buffer data' 72 }, 'no objectMode') 73 t.throws(() => new MPS({size: Number.MAX_SAFE_INTEGER + 1000000}), { 74 message: 'invalid expected size: 9007199255740992' 75 }) 76 t.end() 77}) 78 79t.test('exports SizeError class', t => { 80 t.isa(MPS.SizeError, 'function') 81 t.isa(MPS.SizeError.prototype, Error) 82 t.end() 83}) 84