summaryrefslogtreecommitdiff
path: root/test/parallel/test-readline.js
diff options
context:
space:
mode:
authorRich Trott <rtrott@gmail.com>2017-05-17 20:05:24 -0700
committerRich Trott <rtrott@gmail.com>2017-05-20 22:11:29 -0700
commit595e5e3b23a2c41a4abf01b0084b64f524a58a6a (patch)
treecde1bf090681c675bf8366656dfafac69d78bd5d /test/parallel/test-readline.js
parentbfade5aacd639fbac920647bf1ca4a6fb6df9e0d (diff)
downloadandroid-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.js104
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);
+ });
+}