diff --git a/src/vs/workbench/parts/terminal/test/node/terminalCommandTracker.test.ts b/src/vs/workbench/parts/terminal/test/node/terminalCommandTracker.test.ts index e16d5aa856a24..003f76b383bf5 100644 --- a/src/vs/workbench/parts/terminal/test/node/terminalCommandTracker.test.ts +++ b/src/vs/workbench/parts/terminal/test/node/terminalCommandTracker.test.ts @@ -6,6 +6,7 @@ import * as assert from 'assert'; import { Terminal } from 'vscode-xterm'; import { TerminalCommandTracker } from 'vs/workbench/parts/terminal/node/terminalCommandTracker'; +import { isWindows } from 'vs/base/common/platform'; interface TestTerminal extends Terminal { writeBuffer: string[]; @@ -80,69 +81,70 @@ suite('Workbench - TerminalCommandTracker', () => { commandTracker.scrollToNextCommand(); assert.equal(xterm.buffer.ydisp, 20); }); - // test('should select to the next and previous commands', () => { - // (window).matchMedia = () => { - // return { addListener: () => {} } - // }; - // xterm.open(document.createElement('div')); - - // syncWrite(xterm, '\r0'); - // syncWrite(xterm, '\n\r1'); - // syncWrite(xterm, '\x1b[3G'); // Move cursor to column 3 - // xterm.emit('key', '\x0d'); // Mark line - // assert.equal(xterm.markers[0].line, 10); - // syncWrite(xterm, '\n\r2'); - // syncWrite(xterm, '\x1b[3G'); // Move cursor to column 3 - // xterm.emit('key', '\x0d'); // Mark line - // assert.equal(xterm.markers[1].line, 11); - // syncWrite(xterm, '\n\r3'); - - // assert.equal(xterm.buffer.ybase, 3); - // assert.equal(xterm.buffer.ydisp, 3); - - // assert.equal(xterm.getSelection(), ''); - // commandTracker.selectToPreviousCommand(); - // assert.equal(xterm.getSelection(), '2'); - // commandTracker.selectToPreviousCommand(); - // assert.equal(xterm.getSelection(), '1\n2'); - // commandTracker.selectToNextCommand(); - // assert.equal(xterm.getSelection(), '2'); - // commandTracker.selectToNextCommand(); - // assert.equal(xterm.getSelection(), '\n'); - // }); - // test('should select to the next and previous lines & commands', () => { - // (window).matchMedia = () => { - // return { addListener: () => {} }; - // }; - // xterm.open(document.createElement('div')); - - // syncWrite(xterm, '\r0'); - // syncWrite(xterm, '\n\r1'); - // syncWrite(xterm, '\x1b[3G'); // Move cursor to column 3 - // xterm.emit('key', '\x0d'); // Mark line - // assert.equal(xterm.markers[0].line, 10); - // syncWrite(xterm, '\n\r2'); - // syncWrite(xterm, '\x1b[3G'); // Move cursor to column 3 - // xterm.emit('key', '\x0d'); // Mark line - // assert.equal(xterm.markers[1].line, 11); - // syncWrite(xterm, '\n\r3'); - - // assert.equal(xterm.buffer.ybase, 3); - // assert.equal(xterm.buffer.ydisp, 3); - - // assert.equal(xterm.getSelection(), ''); - // commandTracker.selectToPreviousLine(); - // assert.equal(xterm.getSelection(), '2'); - // commandTracker.selectToNextLine(); - // commandTracker.selectToNextLine(); - // assert.equal(xterm.getSelection(), '3'); - // commandTracker.selectToPreviousCommand(); - // commandTracker.selectToPreviousCommand(); - // commandTracker.selectToNextLine(); - // assert.equal(xterm.getSelection(), '2'); - // commandTracker.selectToPreviousCommand(); - // commandTracker.selectToPreviousLine(); - // assert.equal(xterm.getSelection(), '0\r\n1\r\n2'); - // }); + test('should select to the next and previous commands', () => { + (window).matchMedia = () => { + return { addListener: () => { } }; + }; + xterm.open(document.createElement('div')); + + syncWrite(xterm, '\r0'); + syncWrite(xterm, '\n\r1'); + syncWrite(xterm, '\x1b[3G'); // Move cursor to column 3 + xterm.emit('key', '\x0d'); // Mark line + assert.equal(xterm.markers[0].line, 10); + syncWrite(xterm, '\n\r2'); + syncWrite(xterm, '\x1b[3G'); // Move cursor to column 3 + xterm.emit('key', '\x0d'); // Mark line + assert.equal(xterm.markers[1].line, 11); + syncWrite(xterm, '\n\r3'); + + assert.equal(xterm.buffer.ybase, 3); + assert.equal(xterm.buffer.ydisp, 3); + + assert.equal(xterm.getSelection(), ''); + commandTracker.selectToPreviousCommand(); + assert.equal(xterm.getSelection(), '2'); + commandTracker.selectToPreviousCommand(); + assert.equal(xterm.getSelection(), isWindows ? '1\r\n2' : '1\n2'); + commandTracker.selectToNextCommand(); + assert.equal(xterm.getSelection(), '2'); + commandTracker.selectToNextCommand(); + assert.equal(xterm.getSelection(), isWindows ? '\r\n' : '\n'); + }); + test('should select to the next and previous lines & commands', () => { + (window).matchMedia = () => { + return { addListener: () => { } }; + }; + xterm.open(document.createElement('div')); + + syncWrite(xterm, '\r0'); + syncWrite(xterm, '\n\r1'); + syncWrite(xterm, '\x1b[3G'); // Move cursor to column 3 + xterm.emit('key', '\x0d'); // Mark line + assert.equal(xterm.markers[0].line, 10); + syncWrite(xterm, '\n\r2'); + syncWrite(xterm, '\x1b[3G'); // Move cursor to column 3 + xterm.emit('key', '\x0d'); // Mark line + assert.equal(xterm.markers[1].line, 11); + syncWrite(xterm, '\n\r3'); + + assert.equal(xterm.buffer.ybase, 3); + assert.equal(xterm.buffer.ydisp, 3); + + assert.equal(xterm.getSelection(), ''); + commandTracker.selectToPreviousLine(); + assert.equal(xterm.getSelection(), '2'); + commandTracker.selectToNextLine(); + commandTracker.selectToNextLine(); + assert.equal(xterm.getSelection(), '3'); + commandTracker.selectToPreviousCommand(); + commandTracker.selectToPreviousCommand(); + commandTracker.selectToNextLine(); + assert.equal(xterm.getSelection(), '2'); + commandTracker.selectToPreviousCommand(); + assert.equal(xterm.getSelection(), isWindows ? '1\r\n2' : '1\n2'); + commandTracker.selectToPreviousLine(); + assert.equal(xterm.getSelection(), isWindows ? '0\r\n1\r\n2' : '0\n1\n2'); + }); }); }); \ No newline at end of file