Dieses Repository beinhaltet HTML- und Javascript Code zur einer NotizenWebApp auf Basis von Web Storage. Zudem sind Mocha/Chai Tests im Browser enthalten. https://meinenotizen.netlify.app/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

readArray.asynct.js 2.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. var es = require('../')
  2. , it = require('it-is').style('colour')
  3. , d = require('ubelt')
  4. function readStream(stream, pauseAt, done) {
  5. if(!done) done = pauseAt, pauseAt = -1
  6. var array = []
  7. stream.on('data', function (data) {
  8. array.push(data)
  9. if(!--pauseAt )
  10. stream.pause(), done(null, array)
  11. })
  12. stream.on('error', done)
  13. stream.on('end', function (data) {
  14. done(null, array)
  15. })
  16. }
  17. exports ['read an array'] = function (test) {
  18. var readThis = d.map(3, 6, 100, d.id) //array of multiples of 3 < 100
  19. var reader = es.readArray(readThis)
  20. var writer = es.writeArray(function (err, array){
  21. if(err) throw err //unpossible
  22. it(array).deepEqual(readThis)
  23. test.done()
  24. })
  25. reader.pipe(writer)
  26. }
  27. exports ['read an array and pause it.'] = function (test) {
  28. var readThis = d.map(3, 6, 100, d.id) //array of multiples of 3 < 100
  29. var reader = es.readArray(readThis)
  30. readStream(reader, 10, function (err, data) {
  31. if(err) throw err
  32. it(data).deepEqual([3, 6, 9, 12, 15, 18, 21, 24, 27, 30])
  33. readStream(reader, 10, function (err, data) {
  34. it(data).deepEqual([33, 36, 39, 42, 45, 48, 51, 54, 57, 60])
  35. test.done()
  36. })
  37. reader.resume()
  38. })
  39. }
  40. exports ['reader is readable, but not writeable'] = function (test) {
  41. var reader = es.readArray([1])
  42. it(reader).has({
  43. readable: true,
  44. writable: false
  45. })
  46. test.done()
  47. }
  48. exports ['read one item per tick'] = function (test) {
  49. var readThis = d.map(3, 6, 100, d.id) //array of multiples of 3 < 100
  50. var drains = 0
  51. var reader = es.readArray(readThis)
  52. var tickMapper = es.map(function (data,callback) {
  53. process.nextTick(function () {
  54. callback(null, data)
  55. })
  56. //since tickMapper is returning false
  57. //pipe should pause the writer until a drain occurs
  58. return false
  59. })
  60. reader.pipe(tickMapper)
  61. readStream(tickMapper, function (err, array) {
  62. it(array).deepEqual(readThis)
  63. it(array.length).deepEqual(readThis.length)
  64. it(drains).equal(readThis.length)
  65. test.done()
  66. })
  67. tickMapper.on('drain', function () {
  68. drains ++
  69. })
  70. }
  71. require('./helper')(module)