@@ -7,22 +7,66 @@ require('../common');
7
7
const assert = require ( 'assert' ) ;
8
8
const readline = require ( 'readline' ) ;
9
9
const PassThrough = require ( 'stream' ) . PassThrough ;
10
- const stream = new PassThrough ( ) ;
11
- const sequence = [ ] ;
12
- const keys = [ ] ;
13
10
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 = [
25
13
{ sequence : 'f' , name : 'f' , ctrl : false , meta : false , shift : false } ,
26
14
{ sequence : 'o' , name : 'o' , ctrl : false , meta : false , shift : false } ,
27
15
{ 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