event_emitter_test.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. module('lunr.EventEmitter')
  2. test('adding an event listener', function () {
  3. var emitter = new lunr.EventEmitter,
  4. handler = function () {}
  5. emitter.addListener('test', handler)
  6. ok('test' in emitter.events)
  7. ok(emitter.events.test.indexOf(handler) > -1)
  8. })
  9. test('adding a listener to multiple events', function () {
  10. var emitter = new lunr.EventEmitter,
  11. handler = function () {}
  12. emitter.addListener('foo', 'bar', 'baz', handler)
  13. ok('foo' in emitter.events)
  14. ok('bar' in emitter.events)
  15. ok('baz' in emitter.events)
  16. ok(emitter.events.foo.indexOf(handler) > -1)
  17. ok(emitter.events.bar.indexOf(handler) > -1)
  18. ok(emitter.events.baz.indexOf(handler) > -1)
  19. })
  20. test('removing a single event listener', function () {
  21. var emitter = new lunr.EventEmitter,
  22. handler = function () {}
  23. emitter.addListener('test', handler)
  24. ok('test' in emitter.events)
  25. ok(emitter.events.test.indexOf(handler) > -1)
  26. emitter.removeListener('test', handler)
  27. ok(!('test' in emitter.events))
  28. })
  29. test('removing a single event listener from many listeners', function () {
  30. var emitter = new lunr.EventEmitter,
  31. handler = function () {},
  32. otherHandler = function () {}
  33. emitter.addListener('test', handler)
  34. emitter.addListener('test', otherHandler)
  35. ok('test' in emitter.events)
  36. ok(emitter.events.test.indexOf(handler) > -1)
  37. emitter.removeListener('test', handler)
  38. ok('test' in emitter.events)
  39. equal(emitter.events.test.indexOf(handler), -1)
  40. ok(emitter.events.test.indexOf(otherHandler) > -1)
  41. })
  42. test('emitting events', function () {
  43. var emitter = new lunr.EventEmitter,
  44. callbackCalled = false,
  45. callbackArguments = [],
  46. callback = function () {
  47. callbackArguments = Array.prototype.slice.call(arguments)
  48. callbackCalled = true
  49. }
  50. emitter.emit('test', 1, 'a')
  51. emitter.addListener('test', callback)
  52. emitter.emit('test', 1, 'a')
  53. ok(callbackCalled)
  54. deepEqual(callbackArguments, [1, 'a'])
  55. })