X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=node_modules%2Fkew%2Ftest%2Fdefer.js;fp=node_modules%2Fkew%2Ftest%2Fdefer.js;h=3684f79f5508d16eb3f35069662044f286373a8b;hp=0000000000000000000000000000000000000000;hb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;hpb=57c063afa3f66b07c4bbddc2d6129a96d90f0aad diff --git a/node_modules/kew/test/defer.js b/node_modules/kew/test/defer.js new file mode 100644 index 000000000..3684f79f5 --- /dev/null +++ b/node_modules/kew/test/defer.js @@ -0,0 +1,120 @@ +var Q = require('../kew') + +// create a deferred which returns a promise +exports.testDeferredResolve = function (test) { + var val = "ok" + var defer = Q.defer() + + defer.promise + .then(function (data) { + test.equal(data, val, "Promise successfully returned") + test.done() + }) + + setTimeout(function () { + defer.resolve(val) + }, 50) +} + +// make sure a deferred can only resolve once +exports.testDeferredResolveOnce = function (test) { + var defer = Q.defer() + + try { + defer.resolve(true) + defer.resolve(true) + test.fail("Unable to resolve the same deferred twice") + } catch (e) { + } + + test.done() +} + +// create a deferred which returns a failed promise +exports.testDeferredReject = function (test) { + var err = new Error("hello") + var defer = Q.defer() + + defer.promise + .fail(function (e) { + test.equal(e, err, "Promise successfully failed") + test.done() + }) + + setTimeout(function () { + defer.reject(err) + }, 50) +} + +// make sure a deferred can only reject once +exports.testDeferredRejectOnce = function (test) { + var defer = Q.defer() + + try { + defer.reject(new Error("nope 1")) + defer.reject(new Error("nope 2")) + test.fail("Unable to reject the same deferred twice") + } catch (e) { + } + + test.done() +} + +// make sure a deferred can only reject once +exports.testDeferAndRejectFail = function (test) { + var defer + + try { + defer = Q.defer() + defer.reject(new Error("nope 1")) + defer.resolve(true) + test.fail("Unable to reject and resolve the same deferred") + } catch (e) { + test.ok(true, "Unable to reject and resolve same deferred") + } + + try { + defer = Q.defer() + defer.resolve(true) + defer.reject(new Error("nope 1")) + test.fail("Unable to reject and resolve the same deferred") + } catch (e) { + test.ok(true, "Unable to reject and resolve same deferred") + } + + test.done() +} + +// create a deferred which resolves with a node-standard callback +exports.testDeferredResolverSuccess = function (test) { + var val = "ok" + var defer = Q.defer() + var callback = defer.makeNodeResolver() + + defer.promise + .then(function (data) { + test.equal(data, val, "Promise successfully returned") + test.done() + }) + + setTimeout(function () { + callback(null, val) + }, 50) +} + +// create a deferred which rejects with a node-standard callback +exports.testDeferredResolverSuccess = function (test) { + var err = new Error("hello") + var defer = Q.defer() + var callback = defer.makeNodeResolver() + + defer.promise + .fail(function (e) { + test.equal(e, err, "Promise successfully failed") + test.done() + }) + + setTimeout(function () { + callback(err) + }, 50) +} \ No newline at end of file