var tape = require('tape') var writer = require('./') tape('is a write stream', function (t) { var expected = ['hello', 'world', 'verden'] var ws = writer.obj(write) ws.write('hello') ws.write('world') ws.write('verden') ws.end(function () { t.same(expected.length, 0) t.end() }) function write (data, enc, cb) { t.same(data, expected.shift()) cb() } }) tape('is flushable', function (t) { var expected = ['hello', 'world', 'verden'] var flushed = false var ws = writer.obj(write, flush) ws.write('hello') ws.write('world') ws.write('verden') ws.end(function () { t.same(expected.length, 0) t.ok(flushed, 'was flushed') t.end() }) function write (data, enc, cb) { t.same(data, expected.shift()) cb() } function flush (cb) { flushed = true process.nextTick(cb) } }) tape('can pass options', function (t) { var expected = ['hello', 'world', 'verden'] var flushed = false var ws = writer({objectMode: true}, write, flush) ws.write('hello') ws.write('world') ws.write('verden') ws.end(function () { t.same(expected.length, 0) t.ok(flushed, 'was flushed') t.end() }) function write (data, enc, cb) { t.same(data, expected.shift()) cb() } function flush (cb) { flushed = true process.nextTick(cb) } }) tape('emits error on destroy', function (t) { var expected = new Error() var ws = writer({objectMode: true}, function () {}) ws.on('error', function (err) { t.equal(err, expected) }) ws.on('close', t.end) ws.destroy(expected) })