if(!dojo._hasResource["tests.DeferredList"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. dojo._hasResource["tests.DeferredList"] = true; dojo.provide("tests.DeferredList"); dojo.require("dojo.DeferredList"); doh.register("tests.DeferredList", [ function callback(t){ var d1 = new dojo.Deferred(); var d2 = new dojo.Deferred(); var dl = new dojo.DeferredList([d1, d2]); var fired = false; dl.addCallback(function(res){ doh.debug("debug from dojo.DeferredList callback"); return res; }); dl.addCallback(function(res){ console.log("res: ", res, res.length); t.assertTrue(res.length == 2); t.assertTrue(res[0][0]); t.assertEqual(res[0][1], "foo"); t.assertTrue(res[1][0]); t.assertEqual(res[1][1], "bar"); fired = true; return res; }); d1.callback("foo"); d2.callback("bar"); t.assertTrue(fired); }, function errback(t){ var d1 = new dojo.Deferred(); var d2 = new dojo.Deferred(); var dl = new dojo.DeferredList([d1, d2]); var fired = false; var e1 = new Error("foo"); var e2 = new Error("bar"); dl.addCallback(function(res){ doh.debug("debug from dojo.DeferredList callback"); return res; }); dl.addCallback(function(res){ t.assertTrue(res.length == 2); t.assertTrue(!res[0][0]); t.assertEqual(res[0][1], e1); t.assertTrue(!res[1][0]); t.assertEqual(res[1][1], e2); fired = true; return res; }); d1.errback(e1); d2.errback(e2); t.assertTrue(fired); }, function mixed(t){ var d1 = new dojo.Deferred(); var d2 = new dojo.Deferred(); var dl = new dojo.DeferredList([d1, d2]); var fired = false; var e = new Error("foo"); dl.addCallback(function(res){ doh.debug("debug from dojo.DeferredList callback"); return res; }); dl.addCallback(function(res){ t.assertTrue(res.length == 2); t.assertTrue(!res[0][0]); t.assertEqual(res[0][1], e); t.assertTrue(res[1][0]); t.assertEqual(res[1][1], "bar"); fired = true; return res; }); d1.errback(e); d2.callback("bar"); t.assertTrue(fired); }, function gather(t){ var d1 = new dojo.Deferred(); var d2 = new dojo.Deferred(); var dl = dojo.DeferredList.prototype.gatherResults([d1, d2]); var fired = false; dl.addCallback(function(res){ t.assertEqual(res[0], "foo"); t.assertEqual(res[1], "bar"); fired = true; return res; }); d1.callback("foo"); d2.callback("bar"); t.assertTrue(fired); } ] ); dojo.provide("tests.DeferredList"); dojo.require("dojo.DeferredList"); doh.register("tests.DeferredList", [ function callback(t){ var d1 = new dojo.Deferred(); var d2 = new dojo.Deferred(); var dl = new dojo.DeferredList([d1, d2]); var fired = false; dl.addCallback(function(res){ doh.debug("debug from dojo.DeferredList callback"); return res; }); dl.addCallback(function(res){ t.assertTrue(res.length == 2); t.assertTrue(res[0][0]); t.assertEqual(res[0][1], "foo"); t.assertTrue(res[1][0]); t.assertEqual(res[1][1], "bar"); fired = true; return res; }); d1.callback("foo"); d2.callback("bar"); t.assertTrue(fired); }, function errback(t){ var d1 = new dojo.Deferred(); var d2 = new dojo.Deferred(); var dl = new dojo.DeferredList([d1, d2]); var fired = false; var e1 = new Error("foo"); var e2 = new Error("bar"); dl.addCallback(function(res){ doh.debug("debug from dojo.DeferredList callback"); return res; }); dl.addCallback(function(res){ t.assertTrue(res.length == 2); t.assertTrue(!res[0][0]); t.assertEqual(res[0][1], e1); t.assertTrue(!res[1][0]); t.assertEqual(res[1][1], e2); fired = true; return res; }); d1.errback(e1); d2.errback(e2); t.assertTrue(fired); }, function mixed(t){ var d1 = new dojo.Deferred(); var d2 = new dojo.Deferred(); var dl = new dojo.DeferredList([d1, d2]); var fired = false; var e = new Error("foo"); dl.addCallback(function(res){ doh.debug("debug from dojo.DeferredList callback"); return res; }); dl.addCallback(function(res){ t.assertTrue(res.length == 2); t.assertTrue(!res[0][0]); t.assertEqual(res[0][1], e); t.assertTrue(res[1][0]); t.assertEqual(res[1][1], "bar"); fired = true; return res; }); d1.errback(e); d2.callback("bar"); t.assertTrue(fired); }, function gather(t){ var d1 = new dojo.Deferred(); var d2 = new dojo.Deferred(); var dl = dojo.DeferredList.prototype.gatherResults([d1, d2]); var fired = false; dl.addCallback(function(res){ t.assertEqual(res[0], "foo"); t.assertEqual(res[1], "bar"); fired = true; return res; }); d1.callback("foo"); d2.callback("bar"); t.assertTrue(fired); } ] ); }