]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/node_modules/npmlog/node_modules/are-we-there-yet/test/lib/test-event.js
Adding integrated tile server
[simantics/district.git] / org.simantics.maps.server / node / node-v4.8.0-win-x64 / node_modules / npm / node_modules / npmlog / node_modules / are-we-there-yet / test / lib / test-event.js
diff --git a/org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/node_modules/npmlog/node_modules/are-we-there-yet/test/lib/test-event.js b/org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/node_modules/npmlog/node_modules/are-we-there-yet/test/lib/test-event.js
new file mode 100644 (file)
index 0000000..2aa7c05
--- /dev/null
@@ -0,0 +1,29 @@
+'use strict'
+var util = require('util')
+
+module.exports = function (obj, event, next) {
+  var timeout = setTimeout(gotTimeout, 10)
+  obj.once(event, gotResult)
+
+  function gotTimeout () {
+    obj.removeListener(event, gotResult)
+    next(new Error('Timeout listening for ' + event))
+  }
+  var result = []
+  function gotResult () {
+    result = Array.prototype.slice.call(arguments)
+    clearTimeout(timeout)
+    timeout = setTimeout(gotNoMoreResults, 10)
+    obj.once(event, gotTooManyResults)
+  }
+  function gotNoMoreResults () {
+    obj.removeListener(event, gotTooManyResults)
+    var args = [null].concat(result)
+    next.apply(null, args)
+  }
+  function gotTooManyResults () {
+    var secondResult = Array.prototype.slice.call(arguments)
+    clearTimeout(timeout)
+    next(new Error('Got too many results, first ' + util.inspect(result) + ' and then ' + util.inspect(secondResult)))
+  }
+}