{ iferr, tiferr, throwerr } = require '../index.coffee' { equal: eq, throws } = require 'assert' invoke_fail = (cb) -> cb new Error 'callback error' invoke_succ = (cb) -> cb null throw_error = -> throw new Error 'thrown' describe 'iferr', -> it 'calls the error callback on errors', (done) -> invoke_fail iferr( (err) -> eq err.message, 'callback error' do done -> done new Error 'shouldn\'t call the success callback' ) it 'calls the success callback on success', (done) -> invoke_succ iferr( -> done new Error 'shouldn\'t call the error callback' done ) describe 'tiferr', -> it 'catches errors in the success callback', (done) -> invoke_succ tiferr( (err) -> eq err.message, 'thrown' do done throw_error ) describe 'throwerr', -> it 'throws errors passed to the callback', (done)-> try invoke_fail throwerr -> done 'shouldn\'t call the success callback' catch err eq err.message, 'callback error' do done it 'delegates to the success callback otherwise', (done) -> invoke_succ throwerr done