events.test.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. /*!
  2. * socket.io-node
  3. * Copyright(c) 2011 LearnBoost <dev@learnboost.com>
  4. * MIT Licensed
  5. */
  6. (function (module, io, should) {
  7. module.exports = {
  8. 'add listeners': function () {
  9. var event = new io.EventEmitter
  10. , calls = 0;
  11. event.on('test', function (a, b) {
  12. ++calls;
  13. a.should().eql('a');
  14. b.should().eql('b');
  15. });
  16. event.emit('test', 'a', 'b');
  17. calls.should().eql(1);
  18. event.on.should().eql(event.addListener);
  19. },
  20. 'remove listener': function () {
  21. var event = new io.EventEmitter;
  22. function empty () { }
  23. event.on('test', empty);
  24. event.on('test:more', empty);
  25. event.removeAllListeners('test');
  26. event.listeners('test').should().eql([]);
  27. event.listeners('test:more').should().eql([empty]);
  28. },
  29. 'remove all listeners with no arguments': function () {
  30. var event = new io.EventEmitter;
  31. function empty () { }
  32. event.on('test', empty);
  33. event.on('test:more', empty);
  34. event.removeAllListeners();
  35. event.listeners('test').should().eql([]);
  36. event.listeners('test:more').should().eql([]);
  37. },
  38. 'remove listeners functions': function () {
  39. var event = new io.EventEmitter
  40. , calls = 0;
  41. function one () { ++calls }
  42. function two () { ++calls }
  43. function three () { ++calls }
  44. event.on('one', one);
  45. event.removeListener('one', one);
  46. event.listeners('one').should().eql([]);
  47. event.on('two', two);
  48. event.removeListener('two', one);
  49. event.listeners('two').should().eql([two]);
  50. event.on('three', three);
  51. event.on('three', two);
  52. event.removeListener('three', three);
  53. event.listeners('three').should().eql([two]);
  54. },
  55. 'number of arguments': function () {
  56. var event = new io.EventEmitter
  57. , number = [];
  58. event.on('test', function () {
  59. number.push(arguments.length);
  60. });
  61. event.emit('test');
  62. event.emit('test', null);
  63. event.emit('test', null, null);
  64. event.emit('test', null, null, null);
  65. event.emit('test', null, null, null, null);
  66. event.emit('test', null, null, null, null, null);
  67. [0, 1, 2, 3, 4, 5].should().eql(number);
  68. },
  69. 'once': function () {
  70. var event = new io.EventEmitter
  71. , calls = 0;
  72. event.once('test', function (a, b) {
  73. ++calls;
  74. });
  75. event.emit('test', 'a', 'b');
  76. event.emit('test', 'a', 'b');
  77. event.emit('test', 'a', 'b');
  78. function removed () {
  79. should().fail('not removed');
  80. };
  81. event.once('test:removed', removed);
  82. event.removeListener('test:removed', removed);
  83. event.emit('test:removed');
  84. calls.should().eql(1);
  85. }
  86. };
  87. })(
  88. 'undefined' == typeof module ? module = {} : module
  89. , 'undefined' == typeof io ? require('socket.io-client') : io
  90. , 'undefined' == typeof should || !should.fail ? require('should') : should
  91. );