noflo-adapters
Version:
Packet Format Conversion for NoFlo
109 lines (93 loc) • 2.71 kB
text/coffeescript
noflo = require 'noflo'
unless noflo.isBrowser()
chai = require 'chai'
path = require 'path'
baseDir = path.resolve __dirname, '../'
else
baseDir = 'noflo-adapters'
describe 'PairsToObject component', ->
c = null
ins = null
out = null
loader = null
before (done) ->
4000
loader = new noflo.ComponentLoader baseDir
loader.load 'adapters/PairsToObject', (err, instance) ->
return done err if err
c = instance
ins = noflo.internalSocket.createSocket()
c.inPorts.in.attach ins
done()
beforeEach ->
out = noflo.internalSocket.createSocket()
c.outPorts.out.attach out
afterEach ->
c.outPorts.out.detach out
out = null
describe 'when instantiated', ->
it 'should have an input port', ->
chai.expect(c.inPorts.in).to.be.an 'object'
it 'should have an output port', ->
chai.expect(c.outPorts.out).to.be.an 'object'
describe 'given some paired packets', ->
it 'turns into an object', (done) ->
packets = [{ a: 1, b: 2 }]
out.on 'data', (data) ->
chai.expect(packets.shift()).to.deep.equal data
out.on 'disconnect', ->
chai.expect(packets.length).to.equal 0
done()
ins.connect()
ins.beginGroup()
ins.send 'a'
ins.send 1
ins.send 'b'
ins.send 2
ins.endGroup()
ins.disconnect()
describe 'given an odd number of packets', ->
it 'drops the last packet', (done) ->
packets = [{ a: 1 }]
out.on 'data', (data) ->
chai.expect(packets.shift()).to.deep.equal data
out.on 'disconnect', ->
chai.expect(packets.length).to.equal 0
done()
ins.connect()
ins.beginGroup()
ins.send 'a'
ins.send 1
ins.send 'b'
ins.endGroup()
ins.disconnect()
describe 'sending non-string as keys', ->
it 'drops the corresponding value', (done) ->
packets = [{ b: 2 }]
out.on 'data', (data) ->
chai.expect(packets.shift()).to.deep.equal data
out.on 'disconnect', ->
chai.expect(packets.length).to.equal 0
done()
ins.connect()
ins.beginGroup()
ins.send { a: 1 }
ins.send 1
ins.send 'b'
ins.send 2
ins.endGroup()
ins.disconnect()
describe 'no groups please', ->
it 'drops all groups', (done) ->
packets = [{ a: 1 }]
out.on 'data', (data) ->
chai.expect(packets.shift()).to.deep.equal data
out.on 'disconnect', ->
chai.expect(packets.length).to.equal 0
done()
ins.connect()
ins.beginGroup 'group'
ins.send 'a'
ins.send 1
ins.endGroup 'group'
ins.disconnect()