123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- 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;
- }
|