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.
77 lines
1.9 KiB
77 lines
1.9 KiB
2 years ago
|
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){}
|
||
|
})
|
||
|
})
|
||
|
|