summaryrefslogtreecommitdiff
path: root/tests/test_util.js
diff options
context:
space:
mode:
authorAlon Levy <alon@pobox.com>2014-10-26 12:24:11 +0200
committerAlon Levy <alon@pobox.com>2014-10-26 12:27:50 +0200
commit07373747c7e709cadbe73dd024a11b8336034f6d (patch)
tree4a28da0f5bb938f355047713d2547022afacd1ab /tests/test_util.js
parent9e7c7ddc7de091d404e83efbab113f35ebde2b77 (diff)
tests: forgot some more files
Diffstat (limited to 'tests/test_util.js')
-rw-r--r--tests/test_util.js44
1 files changed, 44 insertions, 0 deletions
diff --git a/tests/test_util.js b/tests/test_util.js
new file mode 100644
index 00000000..7780b0ad
--- /dev/null
+++ b/tests/test_util.js
@@ -0,0 +1,44 @@
+function new_deffer() {
+ var deffer = {
+ cb: null,
+ call_cb: false,
+ };
+ deffer.done = function(cb) {
+ deffer.cb = cb;
+ if (deffer.call_cb) {
+ // warning: going down callstack - should probably use setInterval
+ deffer.call_cb = false; // first do this to avoid endless recursion
+ return deffer.cb();
+ }
+ };
+ deffer.on_done = function() {
+ if (this.cb) {
+ this.call_cb = false;
+ this.cb();
+ } else {
+ this.call_cb = true;
+ }
+ };
+ return deffer;
+}
+
+function addScript(window, name) {
+ var scriptEl = window.document.createElement("script");
+ scriptEl.src = name;
+ var deffer = new_deffer();
+ deffer.load_next = function(script) {
+ var sec_deffer = new_deffer();
+ addScript(window, script).done(
+ function() { sec_deffer.on_done(); })
+ return sec_deffer;
+ }
+ function onload_cb() {
+ console.log('addScript: loaded ' + name);
+ deffer.on_done();
+ }
+ scriptEl.onload = onload_cb;
+ window.document.body.appendChild(scriptEl);
+ return deffer;
+}
+
+exports.addScript = addScript;