import { Viewport } from './Viewport';
describe('Viewport', () => {
- var terminal;
- var viewportElement;
- var charMeasureElement;
- var viewport;
- var scrollAreaElement;
+ let terminal;
+ let viewportElement;
+ let selectionContainer;
+ let charMeasure;
+ let viewport;
+ let scrollAreaElement;
const CHARACTER_HEIGHT = 10;
style: {
lineHeight: 0
}
+ },
+ selectionContainer: {
+ style: {
+ height: 0
+ }
}
};
viewportElement = {
height: 0
}
};
- charMeasureElement = {
- getBoundingClientRect: () => {
- return { width: null, height: CHARACTER_HEIGHT };
- }
+ charMeasure = {
+ height: CHARACTER_HEIGHT
};
- viewport = new Viewport(terminal, viewportElement, scrollAreaElement, charMeasureElement);
+ viewport = new Viewport(terminal, viewportElement, scrollAreaElement, charMeasure);
});
describe('refresh', () => {
- it('should set the line-height of the terminal', () => {
- assert.equal(viewportElement.style.lineHeight, CHARACTER_HEIGHT + 'px');
- assert.equal(terminal.rowContainer.style.lineHeight, CHARACTER_HEIGHT + 'px');
- charMeasureElement.getBoundingClientRect = () => {
- return { width: null, height: 1 };
- };
- viewport.refresh();
- assert.equal(viewportElement.style.lineHeight, '1px');
- assert.equal(terminal.rowContainer.style.lineHeight, '1px');
+ it('should set the line-height of the terminal', done => {
+ // Allow CharMeasure to be initialized
+ setTimeout(() => {
+ assert.equal(viewportElement.style.lineHeight, CHARACTER_HEIGHT + 'px');
+ assert.equal(terminal.rowContainer.style.lineHeight, CHARACTER_HEIGHT + 'px');
+ charMeasure.height = 1;
+ viewport.refresh();
+ assert.equal(viewportElement.style.lineHeight, '1px');
+ assert.equal(terminal.rowContainer.style.lineHeight, '1px');
+ done();
+ }, 0);
});
it('should set the height of the viewport when the line-height changed', () => {
terminal.lines.push('');
terminal.rows = 1;
viewport.refresh();
assert.equal(viewportElement.style.height, 1 * CHARACTER_HEIGHT + 'px');
- charMeasureElement.getBoundingClientRect = () => {
- return { width: null, height: 20 };
- };
+ charMeasure.height = 20;
viewport.refresh();
assert.equal(viewportElement.style.height, 20 + 'px');
});
});
describe('syncScrollArea', () => {
- it('should sync the scroll area', () => {
- terminal.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('');
- viewport.syncScrollArea();
- assert.equal(viewportElement.style.height, 1 * CHARACTER_HEIGHT + 'px');
- assert.equal(scrollAreaElement.style.height, 2 * CHARACTER_HEIGHT + 'px');
+ it('should sync the scroll area', done => {
+ // Allow CharMeasure to be initialized
+ setTimeout(() => {
+ terminal.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('');
+ viewport.syncScrollArea();
+ assert.equal(viewportElement.style.height, 1 * CHARACTER_HEIGHT + 'px');
+ assert.equal(scrollAreaElement.style.height, 2 * CHARACTER_HEIGHT + 'px');
+ done();
+ }, 0);
});
});
});