twisted-deferred
Version:
Deferreds following twisteds style.
142 lines (114 loc) • 3.69 kB
text/coffeescript
assert = require("assert")
testCase = require('nodeunit').testCase
fs = require('fs')
defer = require('../lib/')
Deferred = defer.Deferred
goodCB = (v) ->
v.count++
v
errCB = (err) ->
err.message.count++
err
module.exports = testCase(
setUp: (cb) ->
cb()
tearDown: (cb) ->
cb()
'on success all callbacks called': (test)->
res = {count: 0}
assert.equal res.count, 2
test.done()
'on success errbacks are not called': (test) ->
res = {count: 0}
assert.equal res.count, 1
test.done()
'on failure all errbacks called': (test)->
res = {count: 0}
assert.equal res.count, 2
test.done()
'on failure callbacks are not called': (test) ->
res = {count: 0}
assert.equal res.count, 1
test.done()
'adding callback after success calls immediatly': (test) ->
res = {count: 0}
# notice no async
assert.equal res.count, 1
test.done()
'adding errback after failure calls immediatly': (test) ->
res = {count: 0}
# notice no async
assert.equal res.count, 1
test.done()
'returning Deferred from callback waits for callback to finish': (test) ->
defer.succeed v.foundInner = true
res = {}
assert.ok res.foundInner
test.done()
'wrapping a method an async method works': (test) ->
assert.ok False, "Only the errback should have been called."
assert.equal err.errno, 2
assert.equal err.code, "ENOENT"
test.done()
'using maybeDeferred on a value returns that value': (test) ->
test.expect 1
test.ok x, 42
test.done()
test.ok false, "Errback should not have been called."
'using maybeDeferred on a deferred returns that deferred': (test) ->
test.expect 1
inner = new defer.Deferred
test.ok x, 42
test.done()
test.ok false, "Errback should not have been called."
'using maybeDeferred on a failure calls the errback': (test) ->
test.ok false, "Callback should not have been called."
test.equal f.message.message, "fail"
test.done()
'chaining deferreds works correctly.': (test) ->
'''
Connect the primary testing deferreds completion to an intial deferred
This test will fail if the deferreds fail to chain correctly.
'''
start_deferred = new defer.Deferred
start_deferred.chainDeferred(@d)
# when @d finishes mark the test as done
test.equal(value, 55) # the value passing worked
test.done()
start_deferred.callback(55)
)