Files
cannaiq/backend/node_modules/json-stream/test/json-stream-test.js
2025-11-28 19:45:44 -07:00

63 lines
1.6 KiB
JavaScript

var assert = require('assert'),
JSONStream = require('../');
function write(stream) {
var writes = [];
for (var i = 1; i < arguments.length; i++) {
writes[i - 1] = arguments[i];
}
writes.forEach(function (write) {
stream.write(write);
});
stream.end();
}
function expect(stream, events) {
var chunks = [], endCalled = false;
stream.on('readable', function () {
var chunk = stream.read();
if (chunk) {
chunks.push(chunk);
}
});
stream.on('end', function () {
endCalled = true;
});
process.on('exit', function () {
assert.deepEqual(chunks, events);
assert(endCalled);
});
}
var stream = JSONStream();
expect(stream, [ { a: 42 } ]);
write(stream, '{"a": 42}\n');
stream = JSONStream();
expect(stream, [ { a: 42 } ]);
write(stream, '{"a":', '42}\n');
stream = JSONStream();
expect(stream, [ { a: 42, b: 1337 } ]);
write(stream, '{"a":', '42', ',"b": 1337', '}\n');
stream = JSONStream();
expect(stream, [ { a: 42, b: 1337 }, { hello: 'world' } ]);
write(stream, '{"a":', '42', ',"b": 1337', '}\n{"hel', 'lo": "wor', 'ld"}\n');
stream = JSONStream();
expect(stream, [ { a: 42 }, { hello: 'world' } ]);
write(stream, '{"a":', '42}\n{ blah blah blah }\n{"hel', 'lo": "wor', 'ld"}\n');
stream = JSONStream();
expect(stream, [ { a: 42 }, { hello: 'world' } ]);
write(stream, '{"a":', '42}\n{ blah blah', 'blah }\n{"hel', 'lo": "wor', 'ld"}\n');
stream = JSONStream();
expect(stream, [ { å: '⇢ utf8!', b: 1337 } ]);
write(stream, '{"å": "⇢ utf8!", "b": 1337 }\n');
stream = JSONStream({ async: true });
expect(stream, [ { å: '⇢ utf8!', b: 1337 } ]);
write(stream, '{"å": "⇢ utf8!", "b": 1337 }\n');