@@ -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