chan
Version:
A go style channel implementation that works nicely with co
69 lines (56 loc) • 1.37 kB
JavaScript
/* global describe:true, beforeEach:true, it:true */
var chan = require('..')
var expect = require('expect.js')
describe('A closed channel', function () {
it(
'should yield an error when attempting to add a value',
function () {
var ch = chan()
ch.close()
ch('foo')(function (err) {
expect(err).to.be.an(Error)
})
}
)
describe('that is has items in the buffer', function () {
it(
'should return `false` when the `done()` method is called',
function () {
var ch = chan(1)
ch('foo')
ch.close()
expect(ch.done()).to.be(false)
}
)
})
describe('that is empty', function () {
it(
'should invoke peding callbacks with empty value',
function () {
var ch = chan()
ch(function (err, value) {
expect(value).to.be(ch.empty)
})
ch.close()
}
)
it(
'should return `true` when the `done()` method is called',
function () {
var ch = chan()
ch.close()
expect(ch.done()).to.be(true)
}
)
it(
'should immediately invoke any callback added with the empty value',
function () {
var ch = chan()
ch.close()
ch(function (err, value) {
expect(value).to.be(ch.empty)
})
}
)
})
})