From b7cdec7e38769ad4d2b0c7e66f82053dec92317c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Hedin=20Br=C3=B8nner?= Date: Thu, 20 Dec 2018 00:56:03 +0100 Subject: [PATCH] add chaining connect utility --- tests/test.js | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/tests/test.js b/tests/test.js index 2a2659d..3990389 100644 --- a/tests/test.js +++ b/tests/test.js @@ -59,6 +59,25 @@ function visible(metaWindow) { return actor.visible && !clone.visible; } +function connect(chain, callback) { + log(chain.length); + function connectIter(chain, callback) { + if (chain.length === 0) + return callback; + return () => { + let [obj, signal] = chain.slice(0, 2); + connectOnce(obj, signal, connectIter(chain.slice(2), callback)); + }; + } + assert(chain.length % 2 === 0, + `connect require an even numbered chain`); + if (chain.length === 0) + return callback; + + let [obj, signal] = chain.slice(0, 2); + connectOnce(obj, signal, connectIter(chain.slice(2), callback)); +} + var currentTest = 0; function next() { if (currentTest < tests.length) { @@ -80,10 +99,8 @@ var tests = [ if (space.length === 3) { let third = space[2][0]; connectOnce(third, 'focus', () => { - connectOnce(first, 'focus', () => { - connectOnce(space, 'move-done', () => { - Misc.util.spawnApp(['xterm']); - }); + connect([first, 'focus', space, 'move-done'], () => { + Misc.util.spawnApp(['xterm']); }); Main.activateWindow(first); });