function tests(cb) { tests.digitizer = [ ["#canvas1","#digitizer1",210,139,"x:210 y:139 np:4 ip:3 datax:9.939833098455859 datay:9.983488372093023"], ["#canvas1","#digitizer1",440,172,"x:440 y:172 np:4 ip:2 datax:2011-10-24T02:37:22.622Z datay:130.30230774479998"] ]; tests.digitizer.results = {}; tests.digitizer.results.values = []; tests.digitizer.results.Npass = 0; tests.digitizer.results.Nfail = 0; runtests(0); function runtests(k) { if (k == tests.digitizer.length) { // Tests are done, send results to callback. cb(tests.digitizer.results); return; } var e = new jQuery.Event("click"); e.offsetX = tests.digitizer[k][2]; e.offsetY = tests.digitizer[k][3]; $(tests.digitizer[k][0]).trigger(e); setTimeout(function () { var str = $(tests.digitizer[k][1]).text(); if (str === tests.digitizer[k][4]) { tests.digitizer.results.values[k] = true; tests.digitizer.results.Npass = tests.digitizer.results.Npass + 1; console.log("Test " + k + " passed."); } else { tests.digitizer.results.values[k] = false; tests.digitizer.resutls.Nfail = tests.digitizer.results.Nfail + 1; console.log("Test " + k + " failed."); console.log("-- Expected: " + tests.digitizer[k][4]); console.log("-- Result: " + str); } runtests(k+1); },tests.digitizer[k][4]) } }