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