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.
|
|
var Dicer = require('..'); var assert = require('assert');
var CRLF = '\r\n'; var boundary = 'boundary';
var writeSep = '--' + boundary;
var writePart = [ writeSep, 'Content-Type: text/plain', 'Content-Length: 0' ].join(CRLF) + CRLF + CRLF + 'some data' + CRLF;
var writeEnd = '--' + CRLF;
var firedEnd = false; var firedFinish = false;
var dicer = new Dicer({boundary: boundary}); dicer.on('part', partListener); dicer.on('finish', finishListener); dicer.write(writePart+writeSep);
function partListener(partReadStream) { partReadStream.on('data', function(){}); partReadStream.on('end', partEndListener); } function partEndListener() { firedEnd = true; setImmediate(afterEnd); } function afterEnd() { dicer.end(writeEnd); setImmediate(afterWrite); } function finishListener() { assert(firedEnd, 'Failed to end before finishing'); firedFinish = true; test2(); } function afterWrite() { assert(firedFinish, 'Failed to finish'); }
var isPausePush = true;
var firedPauseCallback = false; var firedPauseFinish = false;
var dicer2 = null;
function test2() { dicer2 = new Dicer({boundary: boundary}); dicer2.on('part', pausePartListener); dicer2.on('finish', pauseFinish); dicer2.write(writePart+writeSep, 'utf8', pausePartCallback); setImmediate(pauseAfterWrite); } function pausePartListener(partReadStream) { partReadStream.on('data', function(){}); partReadStream.on('end', function(){}); var realPush = partReadStream.push; partReadStream.push = function fakePush() { realPush.apply(partReadStream, arguments); if (!isPausePush) return true; isPausePush = false; return false; }; } function pauseAfterWrite() { dicer2.end(writeEnd); setImmediate(pauseAfterEnd); } function pauseAfterEnd() { assert(firedPauseCallback, 'Failed to call callback after pause'); assert(firedPauseFinish, 'Failed to finish after pause'); } function pauseFinish() { firedPauseFinish = true; } function pausePartCallback() { firedPauseCallback = true; }
|