test.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. var assert = require('assert')
  2. var series = require('./')
  3. var a, b, c
  4. series([
  5. function (done) {
  6. a = 1
  7. process.nextTick(done)
  8. check('a')
  9. },
  10. function (done) {
  11. b = 2
  12. process.nextTick(done)
  13. check('b')
  14. },
  15. function (done) {
  16. c = 3
  17. process.nextTick(done)
  18. check('c')
  19. }
  20. ], function (err) {
  21. assert.ifError(err)
  22. assert.equal(a, 1)
  23. assert.equal(b, 2)
  24. assert.equal(c, 3)
  25. })
  26. function check(x) {
  27. switch (x) {
  28. case 'a':
  29. assert.equal(a, 1)
  30. assert.equal(b, undefined)
  31. assert.equal(c, undefined)
  32. break
  33. case 'b':
  34. assert.equal(a, 1)
  35. assert.equal(b, 2)
  36. assert.equal(c, undefined)
  37. break
  38. case 'c':
  39. assert.equal(a, 1)
  40. assert.equal(b, 2)
  41. assert.equal(c, 3)
  42. break
  43. }
  44. }
  45. var context = 'hello'
  46. series([function (done) {
  47. assert.equal(this, context)
  48. done()
  49. }], context)
  50. var finished
  51. series([], function (err) {
  52. finished = true
  53. })
  54. process.nextTick(function () {
  55. if (!finished)
  56. throw new Error('Failed with no functions.');
  57. })
  58. var r, d, o
  59. series([
  60. function (done) {
  61. r = 1
  62. process.nextTick(done)
  63. },
  64. function (done) {
  65. d = 0
  66. process.nextTick(function () {
  67. done(new Error('message'))
  68. })
  69. },
  70. function (done) {
  71. o = 0
  72. process.nextTick(done)
  73. }
  74. ], function (err) {
  75. assert.equal(err.message, 'message')
  76. assert.equal(r, 1)
  77. assert.equal(d, 0)
  78. assert.equal(o, undefined)
  79. })
  80. console.log('Array series tests pass!')