123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- var test = require('tape')
- var path = require('path')
- var from = require('./')
- var fs = require('fs')
- var tmp = path.resolve(
- __dirname, 'tmp.txt'
- )
- function fromString(string) {
- return from(function(size, next) {
- if (string.length <= 0) return next(null, null)
- var chunk = string.slice(0, size)
- string = string.slice(size)
- next(null, chunk)
- })
- }
- test('from2', function(t) {
- var contents = fs.readFileSync(__filename, 'utf8')
- var stream = fromString(contents)
- stream
- .pipe(fs.createWriteStream(tmp))
- .on('close', function() {
- t.equal(fs.readFileSync(tmp, 'utf8'), contents)
- fs.unlinkSync(tmp)
- t.end()
- })
- })
- test('old mode', function(t) {
- var contents = fs.readFileSync(__filename, 'utf8')
- var stream = fromString(contents)
- var buffer = ''
- stream.on('data', function(data) {
- buffer += data
- }).on('end', function() {
- t.equal(buffer, contents)
- t.end()
- })
- })
- test('destroy', function(t) {
- var stream = from(function(size, next) {
- process.nextTick(function() {
- next(null, 'no')
- })
- })
- stream.on('data', function(data) {
- t.ok(false)
- }).on('close', function() {
- t.ok(true)
- t.end()
- })
- stream.destroy()
- })
- test('arrays', function (t) {
- var input = ['a', 'b', 'c']
- var stream = from(input)
- var output = []
- stream.on('data', function (letter) {
- output.push(letter.toString())
- })
- stream.on('end', function () {
- t.deepEqual(input, output)
- t.end()
- })
- })
- test('obj arrays', function (t) {
- var input = [{foo:'a'}, {foo:'b'}, {foo:'c'}]
- var stream = from.obj(input)
- var output = []
- stream.on('data', function (letter) {
- output.push(letter)
- })
- stream.on('end', function () {
- t.deepEqual(input, output)
- t.end()
- })
- })
- test('arrays can emit errors', function (t) {
- var input = ['a', 'b', new Error('ooops'), 'c']
- var stream = from(input)
- var output = []
- stream.on('data', function (letter) {
- output.push(letter.toString())
- })
- stream.on('error', function(e){
- t.deepEqual(['a', 'b'], output)
- t.equal('ooops', e.message)
- t.end()
- })
- stream.on('end', function () {
- t.fail('the stream should have errored')
- })
- })
- test('obj arrays can emit errors', function (t) {
- var input = [{foo:'a'}, {foo:'b'}, new Error('ooops'), {foo:'c'}]
- var stream = from.obj(input)
- var output = []
- stream.on('data', function (letter) {
- output.push(letter)
- })
- stream.on('error', function(e){
- t.deepEqual([{foo:'a'}, {foo:'b'}], output)
- t.equal('ooops', e.message)
- t.end()
- })
- stream.on('end', function () {
- t.fail('the stream should have errored')
- })
- })
|