From 62ea2c691e9a0e288bd3733f9e3c7f2b97dbf48a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Breitbart?= Date: Mon, 17 Feb 2020 12:39:36 +0100 Subject: [PATCH] wide char tests --- src/InputHandler.test.ts | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/InputHandler.test.ts b/src/InputHandler.test.ts index 645a905db..6b98d61e8 100644 --- a/src/InputHandler.test.ts +++ b/src/InputHandler.test.ts @@ -1507,6 +1507,29 @@ describe('InputHandler', () => { assert.equal(term.buffer.x, 0); assert.equal(term.buffer.y, 1); }); + it('handles wide chars correctly', () => { + term.writeSync('\x1b[?45h'); + term.writeSync('¥¥¥'); + assert.deepEqual(getLines(term, 2), ['¥¥', '¥']); + term.writeSync(ttyBS); + assert.deepEqual(getLines(term, 2), ['¥¥', ' ']); + assert.equal(term.buffer.x, 1); + term.writeSync(ttyBS); + assert.deepEqual(getLines(term, 2), ['¥¥', ' ']); + assert.equal(term.buffer.x, 0); + term.writeSync(ttyBS); + assert.deepEqual(getLines(term, 2), ['¥ ', ' ']); + assert.equal(term.buffer.x, 3); // x=4 skipped due to early wrap-around + term.writeSync(ttyBS); + assert.deepEqual(getLines(term, 2), ['¥ ', ' ']); + assert.equal(term.buffer.x, 2); + term.writeSync(ttyBS); + assert.deepEqual(getLines(term, 2), [' ', ' ']); + assert.equal(term.buffer.x, 1); + term.writeSync(ttyBS); + assert.deepEqual(getLines(term, 2), [' ', ' ']); + assert.equal(term.buffer.x, 0); + }); }); }); });