diff options
author | Rich Trott <rtrott@gmail.com> | 2017-05-17 20:05:24 -0700 |
---|---|---|
committer | Rich Trott <rtrott@gmail.com> | 2017-05-20 22:11:29 -0700 |
commit | 595e5e3b23a2c41a4abf01b0084b64f524a58a6a (patch) | |
tree | cde1bf090681c675bf8366656dfafac69d78bd5d /test/parallel/test-readline.js | |
parent | bfade5aacd639fbac920647bf1ca4a6fb6df9e0d (diff) | |
download | android-node-v8-595e5e3b23a2c41a4abf01b0084b64f524a58a6a.tar.gz android-node-v8-595e5e3b23a2c41a4abf01b0084b64f524a58a6a.tar.bz2 android-node-v8-595e5e3b23a2c41a4abf01b0084b64f524a58a6a.zip |
test: port disabled readline test
Port the disabled readline test to make it runnable in our usual test
suite.
PR-URL: https://github.com/nodejs/node/pull/13091
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Diffstat (limited to 'test/parallel/test-readline.js')
-rw-r--r-- | test/parallel/test-readline.js | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/test/parallel/test-readline.js b/test/parallel/test-readline.js index 62a4fe6f48..4ec11fe8d8 100644 --- a/test/parallel/test-readline.js +++ b/test/parallel/test-readline.js @@ -43,3 +43,107 @@ const assert = require('assert'); input.write('abc\n'); } + +{ + const input = new PassThrough(); + const rl = readline.createInterface({ + terminal: true, + input: input + }); + + rl.write('foo'); + assert.strictEqual(rl.cursor, 3); + + const key = { + xterm: { + home: ['\x1b[H', {ctrl: true, name: 'a'}], + end: ['\x1b[F', {ctrl: true, name: 'e'}], + }, + gnome: { + home: ['\x1bOH', {ctrl: true, name: 'a'}], + end: ['\x1bOF', {ctrl: true, name: 'e'}] + }, + rxvt: { + home: ['\x1b[7', {ctrl: true, name: 'a'}], + end: ['\x1b[8', {ctrl: true, name: 'e'}] + }, + putty: { + home: ['\x1b[1~', {ctrl: true, name: 'a'}], + end: ['\x1b[>~', {ctrl: true, name: 'e'}] + } + }; + + [key.xterm, key.gnome, key.rxvt, key.putty].forEach(function(key) { + rl.write.apply(rl, key.home); + assert.strictEqual(rl.cursor, 0); + rl.write.apply(rl, key.end); + assert.strictEqual(rl.cursor, 3); + }); + +} + +{ + const input = new PassThrough(); + const rl = readline.createInterface({ + terminal: true, + input: input + }); + + const key = { + xterm: { + home: ['\x1b[H', {ctrl: true, name: 'a'}], + metab: ['\x1bb', {meta: true, name: 'b'}], + metaf: ['\x1bf', {meta: true, name: 'f'}], + } + }; + + rl.write('foo bar.hop/zoo'); + rl.write.apply(rl, key.xterm.home); + [ + {cursor: 4, key: key.xterm.metaf}, + {cursor: 7, key: key.xterm.metaf}, + {cursor: 8, key: key.xterm.metaf}, + {cursor: 11, key: key.xterm.metaf}, + {cursor: 12, key: key.xterm.metaf}, + {cursor: 15, key: key.xterm.metaf}, + {cursor: 12, key: key.xterm.metab}, + {cursor: 11, key: key.xterm.metab}, + {cursor: 8, key: key.xterm.metab}, + {cursor: 7, key: key.xterm.metab}, + {cursor: 4, key: key.xterm.metab}, + {cursor: 0, key: key.xterm.metab}, + ].forEach(function(action) { + rl.write.apply(rl, action.key); + assert.strictEqual(rl.cursor, action.cursor); + }); +} + +{ + const input = new PassThrough(); + const rl = readline.createInterface({ + terminal: true, + input: input + }); + + const key = { + xterm: { + home: ['\x1b[H', {ctrl: true, name: 'a'}], + metad: ['\x1bd', {meta: true, name: 'd'}] + } + }; + + rl.write('foo bar.hop/zoo'); + rl.write.apply(rl, key.xterm.home); + [ + 'bar.hop/zoo', + '.hop/zoo', + 'hop/zoo', + '/zoo', + 'zoo', + '' + ].forEach(function(expectedLine) { + rl.write.apply(rl, key.xterm.metad); + assert.strictEqual(0, rl.cursor); + assert.strictEqual(expectedLine, rl.line); + }); +} |