1 |
|
2 |
|
3 | var pull = require('pull-stream')
|
4 | var cat = require('../')
|
5 | var test = require('tape')
|
6 | var Pushable = require('pull-pushable')
|
7 | var Abortable = require('pull-abortable')
|
8 | test('cat', function (t) {
|
9 |
|
10 | pull(
|
11 | cat([pull.values([1,2,3]), pull.values([4,5,6])]),
|
12 | pull.collect(function (err, ary) {
|
13 | console.log(err, ary)
|
14 | t.notOk(err)
|
15 | t.deepEqual(ary, [1,2,3,4,5,6])
|
16 | t.end()
|
17 | })
|
18 | )
|
19 |
|
20 | })
|
21 |
|
22 | test('cat - with empty', function (t) {
|
23 |
|
24 | pull(
|
25 | cat([pull.values([1,2,3]), null, pull.values([4,5,6])]),
|
26 | pull.collect(function (err, ary) {
|
27 | console.log(err, ary)
|
28 | t.notOk(err)
|
29 | t.deepEqual(ary, [1,2,3,4,5,6])
|
30 | t.end()
|
31 | })
|
32 | )
|
33 |
|
34 | })
|
35 |
|
36 | test('cat - with empty stream', function (t) {
|
37 | var ended = false
|
38 | var justEnd = function (err, cb) { ended = true; cb(true) }
|
39 |
|
40 | pull(
|
41 | cat([pull.values([1,2,3]), justEnd, pull.values([4,5,6])]),
|
42 | pull.collect(function (err, ary) {
|
43 | console.log(err, ary)
|
44 | t.ok(ended)
|
45 | t.notOk(err)
|
46 | t.deepEqual(ary, [1,2,3,4,5,6])
|
47 | t.end()
|
48 | })
|
49 | )
|
50 | })
|
51 |
|
52 |
|
53 |
|
54 | test('abort - with empty', function (t) {
|
55 | pull(
|
56 | cat([pull.values([1,2,3]), null, pull.values([4,5,6])]),
|
57 | function (read) {
|
58 | read(true, function (err) {
|
59 | t.equal(err, true)
|
60 | t.end()
|
61 | })
|
62 | }
|
63 | )
|
64 | })
|
65 |
|
66 | test('error', function (t) {
|
67 | var err = new Error('test error')
|
68 | pull(
|
69 | cat([pull.values([1,2,3]), function (_, cb) {
|
70 | cb(err)
|
71 | }]),
|
72 | pull.collect(function (_err) {
|
73 | console.log('COLLECT END', _err)
|
74 | t.equal(_err, err)
|
75 | t.end()
|
76 | })
|
77 | )
|
78 | })
|
79 |
|
80 | test('abort stalled', function (t) {
|
81 | var err = new Error('intentional'), n = 2
|
82 | var abortable = Abortable()
|
83 | var pushable = Pushable(function (_err) {
|
84 | t.equal(_err, err)
|
85 | next()
|
86 | })
|
87 |
|
88 | pushable.push(4)
|
89 |
|
90 | pull(
|
91 | cat([pull.values([1,2,3]), undefined, pushable]),
|
92 | abortable,
|
93 | pull.drain(function (item) {
|
94 | if(item == 4)
|
95 | process.nextTick(function () {
|
96 | abortable.abort(err)
|
97 | })
|
98 | }, function (err) {
|
99 | next()
|
100 | })
|
101 | )
|
102 |
|
103 | function next () {
|
104 | if(--n) return
|
105 | t.end()
|
106 | }
|
107 | })
|
108 |
|
109 | test('abort empty', function (t) {
|
110 | cat([])(true, function (end) {
|
111 | t.equal(end, true)
|
112 | t.end()
|
113 | })
|
114 | })
|
115 |
|
116 | test('error + undefined', function (t) {
|
117 | var err = new Error('test error')
|
118 | pull(
|
119 | cat([pull.values([1,2,3]), function (_, cb) {
|
120 | cb(err)
|
121 | }, undefined]),
|
122 | pull.collect(function (_err) {
|
123 | t.equal(_err, err)
|
124 | t.end()
|
125 | })
|
126 | )
|
127 | })
|
128 |
|
129 | test('abort streams after error', function (t) {
|
130 | var err = new Error('test error')
|
131 | var aborted = false
|
132 | pull(
|
133 | cat([pull.values([1,2,3]), function (_, cb) {
|
134 | cb(err)
|
135 | }, function (_err, cb) {
|
136 |
|
137 | aborted = true
|
138 | t.strictEqual(_err, err)
|
139 | cb()
|
140 | }]),
|
141 | pull.collect(function (_err) {
|
142 | t.equal(aborted, true)
|
143 | t.equal(_err, err)
|
144 | t.end()
|
145 | })
|
146 | )
|
147 | })
|
148 |
|
149 |
|