From 5c1a4a7d01c93e6194397c8a8b1125c6932b9873 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Fri, 16 Mar 2018 16:34:14 -0700 Subject: [PATCH] Add tests for Buffer.addMarker --- src/Buffer.test.ts | 24 ++++++++++++++++++++++++ src/Buffer.ts | 3 ++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/Buffer.test.ts b/src/Buffer.test.ts index 0607a573..44687f0e 100644 --- a/src/Buffer.test.ts +++ b/src/Buffer.test.ts @@ -188,4 +188,28 @@ describe('Buffer', () => { assert.equal(buffer.lines.maxLength, INIT_ROWS / 2); }); }); + + describe('addMarker', () => { + it('should adjust a marker line when the buffer is trimmed', () => { + terminal.options.scrollback = 0; + buffer = new Buffer(terminal, true); + buffer.fillViewportRows(); + const marker = buffer.addMarker(buffer.lines.length - 1); + assert.equal(marker.line, buffer.lines.length - 1); + buffer.lines.emit('trim', 1); + assert.equal(marker.line, buffer.lines.length - 2); + }); + it('should dispose of a marker if it is trimmed off the buffer', () => { + terminal.options.scrollback = 0; + buffer = new Buffer(terminal, true); + buffer.fillViewportRows(); + assert.equal(buffer.markers.length, 0); + const marker = buffer.addMarker(0); + assert.equal(marker.isDisposed, false); + assert.equal(buffer.markers.length, 1); + buffer.lines.emit('trim', 1); + assert.equal(marker.isDisposed, true); + assert.equal(buffer.markers.length, 0); + }); + }); }); diff --git a/src/Buffer.ts b/src/Buffer.ts index e4c4468e..ddefa8ed 100644 --- a/src/Buffer.ts +++ b/src/Buffer.ts @@ -311,6 +311,7 @@ export class Buffer implements IBuffer { const marker = new Marker(y); this.markers.push(marker); marker.disposables.push(this._lines.addDisposableListener('trim', amount => { + console.log('trim!' + amount); marker.line -= amount; // The marker should be disposed when the line is trimmed from the buffer if (marker.line < 0) { @@ -324,7 +325,7 @@ export class Buffer implements IBuffer { private _removeMarker(marker: Marker): void { // TODO: This could probably be optimized by relying on sort order and trimming the array using .length - this.markers = this.markers.splice(this.markers.indexOf(marker), 1); + this.markers.splice(this.markers.indexOf(marker), 1); } }