@@ -7,22 +7,66 @@ require('../common');
77const assert = require('assert');
88const readline = require('readline');
99const PassThrough = require('stream').PassThrough;
10- const stream = new PassThrough();
11- const sequence = [];
12- const keys = [];
1310
14- readline.emitKeypressEvents(stream);
15-
16- stream.on('keypress', (s, k) => {
17- sequence.push(s);
18- keys.push(k);
19- });
20-
21- stream.write('foo');
22-
23- assert.deepStrictEqual(sequence, ['f', 'o', 'o']);
24- assert.deepStrictEqual(keys, [
11+ const expectedSequence = ['f', 'o', 'o'];
12+ const expectedKeys = [
2513 { sequence: 'f', name: 'f', ctrl: false, meta: false, shift: false },
2614 { sequence: 'o', name: 'o', ctrl: false, meta: false, shift: false },
2715 { sequence: 'o', name: 'o', ctrl: false, meta: false, shift: false },
28- ]);
16+ ];
17+
18+ {
19+ const stream = new PassThrough();
20+ const sequence = [];
21+ const keys = [];
22+
23+ readline.emitKeypressEvents(stream);
24+ stream.on('keypress', (s, k) => {
25+ sequence.push(s);
26+ keys.push(k);
27+ });
28+ stream.write('foo');
29+
30+ assert.deepStrictEqual(sequence, expectedSequence);
31+ assert.deepStrictEqual(keys, expectedKeys);
32+ }
33+
34+ {
35+ const stream = new PassThrough();
36+ const sequence = [];
37+ const keys = [];
38+
39+ stream.on('keypress', (s, k) => {
40+ sequence.push(s);
41+ keys.push(k);
42+ });
43+ readline.emitKeypressEvents(stream);
44+ stream.write('foo');
45+
46+ assert.deepStrictEqual(sequence, expectedSequence);
47+ assert.deepStrictEqual(keys, expectedKeys);
48+ }
49+
50+ {
51+ const stream = new PassThrough();
52+ const sequence = [];
53+ const keys = [];
54+ const keypressListener = (s, k) => {
55+ sequence.push(s);
56+ keys.push(k);
57+ };
58+
59+ stream.on('keypress', keypressListener);
60+ readline.emitKeypressEvents(stream);
61+ stream.removeListener('keypress', keypressListener);
62+ stream.write('foo');
63+
64+ assert.deepStrictEqual(sequence, []);
65+ assert.deepStrictEqual(keys, []);
66+
67+ stream.on('keypress', keypressListener);
68+ stream.write('foo');
69+
70+ assert.deepStrictEqual(sequence, expectedSequence);
71+ assert.deepStrictEqual(keys, expectedKeys);
72+ }
0 commit comments