UNPKG

2.67 kBJavaScriptView Raw
1var test = require('tape')
2var path = require('path')
3var from = require('./')
4var fs = require('fs')
5
6var tmp = path.resolve(
7 __dirname, 'tmp.txt'
8)
9
10function fromString(string) {
11 return from(function(size, next) {
12 if (string.length <= 0) return next(null, null)
13 var chunk = string.slice(0, size)
14 string = string.slice(size)
15 next(null, chunk)
16 })
17}
18
19test('from2', function(t) {
20 var contents = fs.readFileSync(__filename, 'utf8')
21 var stream = fromString(contents)
22
23 stream
24 .pipe(fs.createWriteStream(tmp))
25 .on('close', function() {
26 t.equal(fs.readFileSync(tmp, 'utf8'), contents)
27 fs.unlinkSync(tmp)
28 t.end()
29 })
30})
31
32test('old mode', function(t) {
33 var contents = fs.readFileSync(__filename, 'utf8')
34 var stream = fromString(contents)
35 var buffer = ''
36
37 stream.on('data', function(data) {
38 buffer += data
39 }).on('end', function() {
40 t.equal(buffer, contents)
41 t.end()
42 })
43})
44
45test('destroy', function(t) {
46 var stream = from(function(size, next) {
47 process.nextTick(function() {
48 next(null, 'no')
49 })
50 })
51
52 stream.on('data', function(data) {
53 t.ok(false)
54 }).on('close', function() {
55 t.ok(true)
56 t.end()
57 })
58
59 stream.destroy()
60})
61
62test('arrays', function (t) {
63 var input = ['a', 'b', 'c']
64 var stream = from(input)
65 var output = []
66 stream.on('data', function (letter) {
67 output.push(letter.toString())
68 })
69 stream.on('end', function () {
70 t.deepEqual(input, output)
71 t.end()
72 })
73})
74
75test('obj arrays', function (t) {
76 var input = [{foo:'a'}, {foo:'b'}, {foo:'c'}]
77 var stream = from.obj(input)
78 var output = []
79 stream.on('data', function (letter) {
80 output.push(letter)
81 })
82 stream.on('end', function () {
83 t.deepEqual(input, output)
84 t.end()
85 })
86})
87
88
89test('arrays can emit errors', function (t) {
90 var input = ['a', 'b', new Error('ooops'), 'c']
91 var stream = from(input)
92 var output = []
93 stream.on('data', function (letter) {
94 output.push(letter.toString())
95 })
96 stream.on('error', function(e){
97 t.deepEqual(['a', 'b'], output)
98 t.equal('ooops', e.message)
99 t.end()
100 })
101 stream.on('end', function () {
102 t.fail('the stream should have errored')
103 })
104})
105
106test('obj arrays can emit errors', function (t) {
107 var input = [{foo:'a'}, {foo:'b'}, new Error('ooops'), {foo:'c'}]
108 var stream = from.obj(input)
109 var output = []
110 stream.on('data', function (letter) {
111 output.push(letter)
112 })
113 stream.on('error', function(e){
114 t.deepEqual([{foo:'a'}, {foo:'b'}], output)
115 t.equal('ooops', e.message)
116 t.end()
117 })
118 stream.on('end', function () {
119 t.fail('the stream should have errored')
120 })
121})
122
123