Fix some tests and docs, little code fix up.

Fix some tests and docs. Add ability to run one test file with help gulp task.

Signed-off-by: Oleksandr Andriienko <oandriie@redhat.com>
This commit is contained in:
Oleksandr Andriienko
2017-07-16 03:47:15 +03:00
committed by Paris Kasidiaris
parent d222eec9f7
commit de82bd00ae
8 changed files with 59 additions and 21 deletions
+2 -2
View File
@@ -9,7 +9,7 @@ import { CircularList } from './utils/CircularList';
* This class represents a terminal buffer (an internal state of the terminal)/
*/
export class Buffer {
public lines: CircularList<any>;
public lines: CircularList<string>;
/**
* Create a new Buffer.
@@ -29,7 +29,7 @@ export class Buffer {
public scrollTop: number = 0,
public tabs: any = {},
) {
this.lines = new CircularList(this.terminal.scrollback);
this.lines = new CircularList<string>(this.terminal.scrollback);
this.scrollBottom = this.terminal.rows - 1;
}
}
+21 -2
View File
@@ -8,6 +8,7 @@ import { CharMeasure } from './utils/CharMeasure';
import { CircularList } from './utils/CircularList';
import { SelectionManager } from './SelectionManager';
import { SelectionModel } from './SelectionModel';
import {BufferSet} from './BufferSet';
class TestSelectionManager extends SelectionManager {
constructor(
@@ -40,13 +41,31 @@ describe('SelectionManager', () => {
let rowContainer: HTMLElement;
let selectionManager: TestSelectionManager;
<<<<<<< HEAD
beforeEach(() => {
dom = new jsdom.JSDOM('');
window = dom.window;
document = window.document;
buffer = new CircularList<any>(100);
document = window.document
terminal = <any>{ cols: 80, rows: 2 };
terminal.scrollback = 100;
terminal.buffers = new BufferSet(terminal);
terminal.buffer = terminal.buffers.active;
selectionManager = new TestSelectionManager(terminal, buffer, rowContainer, null);
=======
beforeEach(done => {
jsdom.env('', (err, w) => {
window = w;
document = window.document;
buffer = new CircularList<any>(100);
terminal = <any>{ cols: 80, rows: 2 };
terminal.scrollback = 10;
terminal.buffers = new BufferSet(terminal);
terminal.buffer = terminal.buffers.active;
selectionManager = new TestSelectionManager(terminal, buffer, rowContainer, null);
done();
});
>>>>>>> Fix some tests and docs, little code fix up.
});
function stringToRow(text: string): [number, string, number][] {
+5
View File
@@ -4,6 +4,7 @@
import { assert } from 'chai';
import { ITerminal } from './Interfaces';
import { SelectionModel } from './SelectionModel';
import {BufferSet} from './BufferSet';
class TestSelectionModel extends SelectionModel {
constructor(
@@ -22,6 +23,10 @@ describe('SelectionManager', () => {
beforeEach(() => {
terminal = <any>{ cols: 80, rows: 2, ybase: 0 };
terminal.scrollback = 10;
terminal.buffers = new BufferSet(terminal);
terminal.buffer = terminal.buffers.active;
model = new TestSelectionModel(terminal);
});
+11 -9
View File
@@ -1,10 +1,10 @@
import { assert } from 'chai';
import { Viewport } from './Viewport';
import {BufferSet} from './BufferSet';
describe('Viewport', () => {
let terminal;
let viewportElement;
let selectionContainer;
let charMeasure;
let viewport;
let scrollAreaElement;
@@ -13,7 +13,6 @@ describe('Viewport', () => {
beforeEach(() => {
terminal = {
lines: [],
rows: 0,
ydisp: 0,
on: () => {},
@@ -26,8 +25,11 @@ describe('Viewport', () => {
style: {
height: 0
}
}
},
scrollback: 10
};
terminal.buffers = new BufferSet(terminal);
terminal.buffer = terminal.buffers.active;
viewportElement = {
addEventListener: () => {},
style: {
@@ -60,14 +62,14 @@ describe('Viewport', () => {
}, 0);
});
it('should set the height of the viewport when the line-height changed', () => {
terminal.lines.push('');
terminal.lines.push('');
terminal.buffer.lines.push('');
terminal.buffer.lines.push('');
terminal.rows = 1;
viewport.refresh();
assert.equal(viewportElement.style.height, 1 * CHARACTER_HEIGHT + 'px');
charMeasure.height = 20;
charMeasure.height = 2 * CHARACTER_HEIGHT;
viewport.refresh();
assert.equal(viewportElement.style.height, 20 + 'px');
assert.equal(viewportElement.style.height, 2 * CHARACTER_HEIGHT + 'px');
});
});
@@ -75,13 +77,13 @@ describe('Viewport', () => {
it('should sync the scroll area', done => {
// Allow CharMeasure to be initialized
setTimeout(() => {
terminal.lines.push('');
terminal.buffer.lines.push('');
terminal.rows = 1;
assert.equal(scrollAreaElement.style.height, 0 * CHARACTER_HEIGHT + 'px');
viewport.syncScrollArea();
assert.equal(viewportElement.style.height, 1 * CHARACTER_HEIGHT + 'px');
assert.equal(scrollAreaElement.style.height, 1 * CHARACTER_HEIGHT + 'px');
terminal.lines.push('');
terminal.buffer.lines.push('');
viewport.syncScrollArea();
assert.equal(viewportElement.style.height, 1 * CHARACTER_HEIGHT + 'px');
assert.equal(scrollAreaElement.style.height, 2 * CHARACTER_HEIGHT + 'px');
+1 -3
View File
@@ -20,7 +20,7 @@ export class Viewport {
* @param terminal The terminal this viewport belongs to.
* @param viewportElement The DOM element acting as the viewport.
* @param scrollArea The DOM element acting as the scroll area.
* @param charMeasureElement A DOM element used to measure the character size of. the terminal.
* @param charMeasure A DOM element used to measure the character size of. the terminal.
*/
constructor(
private terminal: ITerminal,
@@ -43,8 +43,6 @@ export class Viewport {
/**
* Refreshes row height, setting line-height, viewport height and scroll area height if
* necessary.
* @param charSize A character size measurement bounding rect object, if it doesn't exist it will
* be created.
*/
private refresh(): void {
if (this.charMeasure.height > 0) {
+2 -2
View File
@@ -415,7 +415,7 @@ Terminal.prototype.setOption = function(key, value) {
}
if (this.options[key] !== value) {
if (this.buffer.length > value) {
if (this.buffer.lines.length > value) {
const amountToTrim = this.buffer.lines.length - value;
const needsRefresh = (this.buffer.ydisp - amountToTrim < 0);
this.buffer.lines.trimStart(amountToTrim);
@@ -498,7 +498,7 @@ Terminal.prototype.blur = function() {
*/
Terminal.bindBlur = function (term) {
on(term.textarea, 'blur', function (ev) {
term.refresh(term.y, term.y);
term.refresh(term.buffer.y, term.buffer.y);
if (term.sendFocus) {
term.send(C0.ESC + '[O');
}