basic.js 2.2 KB

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