diff options
author | James M Snell <jasnell@gmail.com> | 2017-04-29 20:42:45 -0700 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2017-05-07 22:54:31 +0200 |
commit | d37f27a00830f364f3375fed996ecb75e61f7f9b (patch) | |
tree | 41d968594fe4c5fa20f28a7650efb700c0b51886 /test/parallel/test-readline-csi.js | |
parent | 4c070d489718b196d7950998ccfb54bcc50d9711 (diff) | |
download | android-node-v8-d37f27a00830f364f3375fed996ecb75e61f7f9b.tar.gz android-node-v8-d37f27a00830f364f3375fed996ecb75e61f7f9b.tar.bz2 android-node-v8-d37f27a00830f364f3375fed996ecb75e61f7f9b.zip |
test: expand test coverage of readline
PR-URL: https://github.com/nodejs/node/pull/12755
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Diffstat (limited to 'test/parallel/test-readline-csi.js')
-rw-r--r-- | test/parallel/test-readline-csi.js | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/test/parallel/test-readline-csi.js b/test/parallel/test-readline-csi.js new file mode 100644 index 0000000000..bde37138e3 --- /dev/null +++ b/test/parallel/test-readline-csi.js @@ -0,0 +1,90 @@ +// Flags: --expose-internals +'use strict'; + +const common = require('../common'); +const assert = require('assert'); +const readline = require('readline'); +const { Writable } = require('stream'); +const { CSI } = require('internal/readline'); + +{ + assert(CSI); + assert.strictEqual(CSI.kClearToBeginning, '\x1b[1K'); + assert.strictEqual(CSI.kClearToEnd, '\x1b[0K'); + assert.strictEqual(CSI.kClearLine, '\x1b[2K'); + assert.strictEqual(CSI.kClearScreenDown, '\x1b[0J'); + assert.strictEqual(CSI`1${2}3`, '\x1b[123'); +} + +class TestWritable extends Writable { + constructor() { + super(); + this.data = ''; + } + _write(chunk, encoding, callback) { + this.data += chunk.toString(); + callback(); + } +} + +const writable = new TestWritable(); + +readline.clearScreenDown(writable); +assert.deepStrictEqual(writable.data, CSI.kClearScreenDown); + +writable.data = ''; +readline.clearLine(writable, -1); +assert.deepStrictEqual(writable.data, CSI.kClearToBeginning); + +writable.data = ''; +readline.clearLine(writable, 1); +assert.deepStrictEqual(writable.data, CSI.kClearToEnd); + +writable.data = ''; +readline.clearLine(writable, 0); +assert.deepStrictEqual(writable.data, CSI.kClearLine); + +// Nothing is written when moveCursor 0, 0 +[ + [0, 0, ''], + [1, 0, '\x1b[1C'], + [-1, 0, '\x1b[1D'], + [0, 1, '\x1b[1B'], + [0, -1, '\x1b[1A'], + [1, 1, '\x1b[1C\x1b[1B'], + [-1, 1, '\x1b[1D\x1b[1B'], + [-1, -1, '\x1b[1D\x1b[1A'], + [1, -1, '\x1b[1C\x1b[1A'], +].forEach((set) => { + writable.data = ''; + readline.moveCursor(writable, set[0], set[1]); + assert.deepStrictEqual(writable.data, set[2]); +}); + +assert.doesNotThrow(() => readline.cursorTo(null)); +assert.doesNotThrow(() => readline.cursorTo()); + +writable.data = ''; +assert.doesNotThrow(() => readline.cursorTo(writable, 'a')); +assert.strictEqual(writable.data, ''); + +writable.data = ''; +assert.doesNotThrow(() => readline.cursorTo(writable, 'a', 'b')); +assert.strictEqual(writable.data, ''); + +writable.data = ''; +assert.throws( + () => readline.cursorTo(writable, 'a', 1), + common.expectsError({ + type: Error, + message: /^Can't set cursor row without also setting it's column$/ + })); +assert.strictEqual(writable.data, ''); + +writable.data = ''; +assert.doesNotThrow(() => readline.cursorTo(writable, 1, 'a')); +assert.strictEqual(writable.data, '\x1b[2G'); + +writable.data = ''; +assert.doesNotThrow(() => readline.cursorTo(writable, 1, 2)); +assert.strictEqual(writable.data, '\x1b[3;2H'); |