test-event.js 894 B

1234567891011121314151617181920212223242526272829
  1. 'use strict'
  2. var util = require('util')
  3. module.exports = function (obj, event, next) {
  4. var timeout = setTimeout(gotTimeout, 10)
  5. obj.once(event, gotResult)
  6. function gotTimeout () {
  7. obj.removeListener(event, gotResult)
  8. next(new Error('Timeout listening for ' + event))
  9. }
  10. var result = []
  11. function gotResult () {
  12. result = Array.prototype.slice.call(arguments)
  13. clearTimeout(timeout)
  14. timeout = setTimeout(gotNoMoreResults, 10)
  15. obj.once(event, gotTooManyResults)
  16. }
  17. function gotNoMoreResults () {
  18. obj.removeListener(event, gotTooManyResults)
  19. var args = [null].concat(result)
  20. next.apply(null, args)
  21. }
  22. function gotTooManyResults () {
  23. var secondResult = Array.prototype.slice.call(arguments)
  24. clearTimeout(timeout)
  25. next(new Error('Got too many results, first ' + util.inspect(result) + ' and then ' + util.inspect(secondResult)))
  26. }
  27. }