Son CV dans un terminal web en Javascript!
https://terminal-cv.gregandev.fr
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.
76 lines
1.9 KiB
76 lines
1.9 KiB
import { PackrStream, UnpackrStream } from '../node-index.js'
|
|
import stream from 'stream'
|
|
import chai from 'chai'
|
|
import util from 'util'
|
|
import fs from 'fs'
|
|
const finished = util.promisify(stream.finished)
|
|
var assert = chai.assert
|
|
|
|
suite('msgpackr node stream tests', function(){
|
|
test('serialize/parse stream', () => {
|
|
const serializeStream = new PackrStream({
|
|
})
|
|
const parseStream = new UnpackrStream()
|
|
serializeStream.pipe(parseStream)
|
|
const received = []
|
|
parseStream.on('data', data => {
|
|
received.push(data)
|
|
})
|
|
const messages = [{
|
|
name: 'first'
|
|
}, {
|
|
name: 'second'
|
|
}, {
|
|
name: 'third'
|
|
}, {
|
|
name: 'third',
|
|
extra: [1, 3, { foo: 'hi'}, 'bye']
|
|
}]
|
|
for (const message of messages)
|
|
serializeStream.write(message)
|
|
return new Promise((resolve, reject) => {
|
|
setTimeout(() => {
|
|
assert.deepEqual(received, messages)
|
|
resolve()
|
|
}, 10)
|
|
})
|
|
})
|
|
test('stream from buffer', () => new Promise(async resolve => {
|
|
const parseStream = new UnpackrStream()
|
|
let values = []
|
|
parseStream.on('data', (value) => {
|
|
values.push(value)
|
|
})
|
|
parseStream.on('end', () => {
|
|
assert.deepEqual(values, [1, 2])
|
|
resolve()
|
|
})
|
|
let bufferStream = new stream.Duplex()
|
|
bufferStream.pipe(parseStream)
|
|
bufferStream.push(new Uint8Array([1, 2]))
|
|
bufferStream.push(null)
|
|
}))
|
|
test('serialize stream to file', async function() {
|
|
const serializeStream = new PackrStream({
|
|
})
|
|
const fileStream = fs.createWriteStream('test-output.msgpack');
|
|
serializeStream.pipe(fileStream);
|
|
const messages = [{
|
|
name: 'first'
|
|
}, {
|
|
name: 'second',
|
|
extra: [1, 3, { foo: 'hi'}, 'bye']
|
|
}]
|
|
for (const message of messages)
|
|
serializeStream.write(message)
|
|
setTimeout(() => serializeStream.end(), 10)
|
|
|
|
await finished(serializeStream)
|
|
})
|
|
teardown(function() {
|
|
try {
|
|
fs.unlinkSync('test-output.msgpack')
|
|
}catch(error){}
|
|
})
|
|
})
|
|
|
|
|