Skip to content

Commit 50f115f

Browse files
committed
Converted all streamArray() tests.
1 parent b56cff7 commit 50f115f

File tree

1 file changed

+75
-0
lines changed

1 file changed

+75
-0
lines changed

tests/test-array.mjs

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,3 +88,78 @@ test.asPromise('parser: array filter', (t, resolve, reject) => {
8888

8989
readString(JSON.stringify(input)).pipe(stream);
9090
});
91+
92+
test.asPromise('parser: array filter include undecided', (t, resolve, reject) => {
93+
const f = assembler => {
94+
if (assembler.depth == 2 && assembler.key === null) {
95+
if (assembler.current instanceof Array) {
96+
return false; // reject
97+
}
98+
switch (assembler.current.a) {
99+
case 'accept':
100+
return true; // accept
101+
case 'reject':
102+
return false; // reject
103+
}
104+
}
105+
// undecided
106+
};
107+
108+
const stream = streamArray.withParserAsStream({objectFilter: f, includeUndecided: true}),
109+
input = [
110+
0,
111+
1,
112+
true,
113+
false,
114+
null,
115+
{},
116+
[],
117+
{a: 'reject', b: [[[]]]},
118+
['c'],
119+
{a: 'accept'},
120+
{a: 'neutral'},
121+
{x: true, a: 'reject'},
122+
{y: null, a: 'accept'},
123+
{z: 1234, a: 'neutral'},
124+
{w: '12', a: 'neutral'}
125+
],
126+
result = [];
127+
128+
stream.on('data', object => result.push(object.value));
129+
stream.on('error', reject);
130+
stream.on('end', () => {
131+
result.forEach(o => {
132+
if (typeof o == 'object' && o) {
133+
t.notOk(o instanceof Array);
134+
t.notEqual(o.a, 'reject');
135+
} else {
136+
t.ok(o === null || typeof o != 'object');
137+
}
138+
});
139+
resolve();
140+
});
141+
142+
readString(JSON.stringify(input)).pipe(stream);
143+
});
144+
145+
test.asPromise('parser: array with replacer and reviver', (t, resolve, reject) => {
146+
const reviver = (k, v) => {
147+
if (/Date$/.test(k) && typeof v == 'string') return new Date(Date.parse(v));
148+
return v;
149+
};
150+
151+
const source = [{createdDate: new Date(), updatedDate: new Date(), user: 'bob', life: 42}],
152+
json = JSON.stringify(source);
153+
154+
const stream = streamArray.withParserAsStream({reviver}),
155+
result = [];
156+
157+
stream.on('data', object => result.push(object.value));
158+
stream.on('error', reject);
159+
stream.on('end', () => {
160+
t.deepEqual(result, source);
161+
resolve();
162+
});
163+
164+
readString(json).pipe(stream);
165+
});

0 commit comments

Comments
 (0)