You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
184 lines
3.2 KiB
184 lines
3.2 KiB
'use strict' |
|
|
|
var Buffer = require('safe-buffer').Buffer |
|
var test = require('tape').test |
|
var msgpack = require('../') |
|
var BufferList = require('bl') |
|
|
|
test('must send an object through', function (t) { |
|
t.plan(1) |
|
|
|
var pack = msgpack() |
|
var encoder = pack.encoder() |
|
var decoder = pack.decoder() |
|
var data = { hello: 'world' } |
|
|
|
encoder.pipe(decoder) |
|
|
|
decoder.on('data', function (chunk) { |
|
t.deepEqual(chunk, data) |
|
}) |
|
|
|
encoder.end(data) |
|
}) |
|
|
|
test('must send three objects through', function (t) { |
|
var pack = msgpack() |
|
var encoder = pack.encoder() |
|
var decoder = pack.decoder() |
|
var data = [ |
|
{ hello: 1 }, |
|
{ hello: 2 }, |
|
{ hello: 3 } |
|
] |
|
|
|
t.plan(data.length) |
|
|
|
decoder.on('data', function (chunk) { |
|
t.deepEqual(chunk, data.shift()) |
|
}) |
|
|
|
data.forEach(encoder.write.bind(encoder)) |
|
|
|
encoder.pipe(decoder) |
|
|
|
encoder.end() |
|
}) |
|
|
|
test('end-to-end', function (t) { |
|
var pack = msgpack() |
|
var encoder = pack.encoder() |
|
var decoder = pack.decoder() |
|
var data = [ |
|
{ hello: 1 }, |
|
{ hello: 2 }, |
|
{ hello: 3 } |
|
] |
|
|
|
t.plan(data.length) |
|
|
|
decoder.on('data', function (chunk) { |
|
t.deepEqual(chunk, data.shift()) |
|
}) |
|
|
|
data.forEach(encoder.write.bind(encoder)) |
|
|
|
encoder.end() |
|
|
|
encoder.pipe(decoder) |
|
}) |
|
|
|
test('encoding error wrapped', function (t) { |
|
t.plan(1) |
|
|
|
var pack = msgpack() |
|
var encoder = pack.encoder() |
|
var data = new MyType() |
|
|
|
function MyType () { |
|
} |
|
|
|
function mytypeEncode () { |
|
throw new Error('muahha') |
|
} |
|
|
|
function mytypeDecode () { |
|
} |
|
|
|
pack.register(0x42, MyType, mytypeEncode, mytypeDecode) |
|
|
|
encoder.on('error', function (err) { |
|
t.equal(err.message, 'muahha') |
|
}) |
|
|
|
encoder.end(data) |
|
}) |
|
|
|
test('decoding error wrapped', function (t) { |
|
t.plan(1) |
|
|
|
var pack = msgpack() |
|
var encoder = pack.encoder() |
|
var decoder = pack.decoder() |
|
var data = new MyType() |
|
|
|
function MyType () { |
|
} |
|
|
|
function mytypeEncode () { |
|
return Buffer.allocUnsafe(0) |
|
} |
|
|
|
function mytypeDecode () { |
|
throw new Error('muahha') |
|
} |
|
|
|
pack.register(0x42, MyType, mytypeEncode, mytypeDecode) |
|
|
|
decoder.on('error', function (err) { |
|
t.equal(err.message, 'muahha') |
|
}) |
|
|
|
encoder.end(data) |
|
|
|
encoder.pipe(decoder) |
|
}) |
|
|
|
test('decoding error wrapped', function (t) { |
|
t.plan(1) |
|
|
|
var pack = msgpack() |
|
var encoder = pack.encoder({ header: false }) |
|
var decoder = pack.decoder({ header: false }) |
|
var data = new MyType() |
|
|
|
function MyType () { |
|
} |
|
|
|
function mytypeEncode () { |
|
return Buffer.allocUnsafe(0) |
|
} |
|
|
|
function mytypeDecode () { |
|
throw new Error('muahha') |
|
} |
|
|
|
pack.register(0x42, MyType, mytypeEncode, mytypeDecode) |
|
|
|
decoder.on('error', function (err) { |
|
t.equal(err.message, 'muahha') |
|
}) |
|
|
|
encoder.end(data) |
|
|
|
encoder.pipe(decoder) |
|
}) |
|
|
|
test('concatenated buffers work', function (t) { |
|
var pack = msgpack() |
|
var encoder = pack.encoder() |
|
var decoder = pack.decoder() |
|
var data = [ |
|
{ hello: 1 }, |
|
{ hello: 2 }, |
|
{ hello: 3 } |
|
] |
|
|
|
t.plan(data.length) |
|
|
|
var bl = new BufferList() |
|
encoder.on('data', bl.append.bind(bl)) |
|
|
|
data.forEach(encoder.write.bind(encoder)) |
|
|
|
decoder.on('data', function (d) { |
|
t.deepEqual(d, data.shift()) |
|
}) |
|
|
|
encoder.once('finish', function () { |
|
var buf = bl.slice() |
|
decoder.write(buf) |
|
}) |
|
|
|
encoder.end() |
|
})
|
|
|