From 46995fdbc1d5b308a04d746df5417d9e5b4e8c1d Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Sat, 11 May 2019 10:46:00 -0700 Subject: [PATCH] Add tests for buffer.getLine --- src/public/Terminal.api.ts | 45 ++++++++++++++++++++++++++++++++++++++ typings/xterm.d.ts | 7 +++++- 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/src/public/Terminal.api.ts b/src/public/Terminal.api.ts index daa160d3e..6d777ee17 100644 --- a/src/public/Terminal.api.ts +++ b/src/public/Terminal.api.ts @@ -298,6 +298,51 @@ describe('API Integration Tests', () => { await page.evaluate(`window.term.write('\\n\\n\\n\\n')`); assert.equal(await page.evaluate(`window.term.buffer.length`), 10); }); + + describe('getLine', () => { + it('isWrapped', async function(): Promise { + this.timeout(10000); + await openTerminal({ cols: 5 }); + assert.equal(await page.evaluate(`window.term.buffer.getLine(0).isWrapped`), false); + assert.equal(await page.evaluate(`window.term.buffer.getLine(1).isWrapped`), false); + await page.evaluate(`window.term.write('abcde')`); + assert.equal(await page.evaluate(`window.term.buffer.getLine(0).isWrapped`), false); + assert.equal(await page.evaluate(`window.term.buffer.getLine(1).isWrapped`), false); + await page.evaluate(`window.term.write('f')`); + assert.equal(await page.evaluate(`window.term.buffer.getLine(0).isWrapped`), false); + assert.equal(await page.evaluate(`window.term.buffer.getLine(1).isWrapped`), true); + }); + + it('translateToString', async function(): Promise { + this.timeout(10000); + await openTerminal({ cols: 5 }); + assert.equal(await page.evaluate(`window.term.buffer.getLine(0).translateToString()`), ' '); + assert.equal(await page.evaluate(`window.term.buffer.getLine(0).translateToString(true)`), ''); + await page.evaluate(`window.term.write('foo')`); + assert.equal(await page.evaluate(`window.term.buffer.getLine(0).translateToString()`), 'foo '); + assert.equal(await page.evaluate(`window.term.buffer.getLine(0).translateToString(true)`), 'foo'); + await page.evaluate(`window.term.write('bar')`); + assert.equal(await page.evaluate(`window.term.buffer.getLine(0).translateToString()`), 'fooba'); + assert.equal(await page.evaluate(`window.term.buffer.getLine(0).translateToString(true)`), 'fooba'); + assert.equal(await page.evaluate(`window.term.buffer.getLine(1).translateToString(true)`), 'r'); + assert.equal(await page.evaluate(`window.term.buffer.getLine(0).translateToString(false, 1)`), 'ooba'); + assert.equal(await page.evaluate(`window.term.buffer.getLine(0).translateToString(false, 1, 3)`), 'oo'); + }); + + it('getCell', async function(): Promise { + this.timeout(10000); + await openTerminal(); + assert.equal(await page.evaluate(`window.term.buffer.getLine(0).getCell(0).char`), ''); + assert.equal(await page.evaluate(`window.term.buffer.getLine(0).getCell(0).width`), 1); + await page.evaluate(`window.term.write('aĉ–‡')`); + assert.equal(await page.evaluate(`window.term.buffer.getLine(0).getCell(0).char`), 'a'); + assert.equal(await page.evaluate(`window.term.buffer.getLine(0).getCell(0).width`), 1); + assert.equal(await page.evaluate(`window.term.buffer.getLine(0).getCell(1).char`), 'ĉ–‡'); + assert.equal(await page.evaluate(`window.term.buffer.getLine(0).getCell(1).width`), 2); + assert.equal(await page.evaluate(`window.term.buffer.getLine(0).getCell(2).char`), ''); + assert.equal(await page.evaluate(`window.term.buffer.getLine(0).getCell(2).width`), 0); + }); + }); }); }); diff --git a/typings/xterm.d.ts b/typings/xterm.d.ts index 49bb6c319..00e7b215e 100644 --- a/typings/xterm.d.ts +++ b/typings/xterm.d.ts @@ -916,7 +916,12 @@ declare module 'xterm' { getCell(x: number): IBufferCell; /** - * Gets the line + * Gets the line as a string. Note that this is gets only the string for the line, not taking + * isWrapped into account. + * + * @param trimRight Whether to trim any whitespace at the right of the line. + * @param startColumn The column to start from (inclusive). + * @param endColumn The column to end at (exclusive). */ translateToString(trimRight?: boolean, startColumn?: number, endColumn?: number): string; }