]> git.proxmox.com Git - mirror_xterm.js.git/blame - src/Viewport.test.ts
Merge pull request #926 from ficristo/search-fix
[mirror_xterm.js.git] / src / Viewport.test.ts
CommitLineData
5bddb937
DI
1import { assert } from 'chai';
2import { Viewport } from './Viewport';
de82bd00 3import {BufferSet} from './BufferSet';
7048f6ed 4
5bddb937 5describe('Viewport', () => {
07a8b8f4
DI
6 let terminal;
7 let viewportElement;
8 let charMeasure;
9 let viewport;
10 let scrollAreaElement;
7048f6ed 11
5bddb937 12 const CHARACTER_HEIGHT = 10;
7048f6ed 13
5bddb937 14 beforeEach(() => {
7048f6ed 15 terminal = {
7048f6ed
DI
16 rows: 0,
17 ydisp: 0,
5bddb937 18 on: () => {},
7048f6ed
DI
19 rowContainer: {
20 style: {
21 lineHeight: 0
22 }
f719a4e9
DI
23 },
24 selectionContainer: {
25 style: {
26 height: 0
27 }
de82bd00
OA
28 },
29 scrollback: 10
7048f6ed 30 };
de82bd00
OA
31 terminal.buffers = new BufferSet(terminal);
32 terminal.buffer = terminal.buffers.active;
7048f6ed 33 viewportElement = {
5bddb937 34 addEventListener: () => {},
7048f6ed
DI
35 style: {
36 height: 0,
37 lineHeight: 0
38 }
39 };
40 scrollAreaElement = {
41 style: {
42 height: 0
43 }
44 };
07a8b8f4
DI
45 charMeasure = {
46 height: CHARACTER_HEIGHT
7048f6ed 47 };
07a8b8f4 48 viewport = new Viewport(terminal, viewportElement, scrollAreaElement, charMeasure);
7048f6ed
DI
49 });
50
5bddb937 51 describe('refresh', () => {
92f27d31
DI
52 it('should set the line-height of the terminal', done => {
53 // Allow CharMeasure to be initialized
54 setTimeout(() => {
55 assert.equal(viewportElement.style.lineHeight, CHARACTER_HEIGHT + 'px');
56 assert.equal(terminal.rowContainer.style.lineHeight, CHARACTER_HEIGHT + 'px');
57 charMeasure.height = 1;
58 viewport.refresh();
59 assert.equal(viewportElement.style.lineHeight, '1px');
60 assert.equal(terminal.rowContainer.style.lineHeight, '1px');
61 done();
62 }, 0);
7048f6ed 63 });
5bddb937 64 it('should set the height of the viewport when the line-height changed', () => {
de82bd00
OA
65 terminal.buffer.lines.push('');
66 terminal.buffer.lines.push('');
dcc991bd 67 terminal.rows = 1;
68 viewport.refresh();
69 assert.equal(viewportElement.style.height, 1 * CHARACTER_HEIGHT + 'px');
de82bd00 70 charMeasure.height = 2 * CHARACTER_HEIGHT;
dcc991bd 71 viewport.refresh();
de82bd00 72 assert.equal(viewportElement.style.height, 2 * CHARACTER_HEIGHT + 'px');
dcc991bd 73 });
7048f6ed 74 });
2c9c95f5 75
5bddb937 76 describe('syncScrollArea', () => {
92f27d31
DI
77 it('should sync the scroll area', done => {
78 // Allow CharMeasure to be initialized
79 setTimeout(() => {
de82bd00 80 terminal.buffer.lines.push('');
92f27d31
DI
81 terminal.rows = 1;
82 assert.equal(scrollAreaElement.style.height, 0 * CHARACTER_HEIGHT + 'px');
83 viewport.syncScrollArea();
84 assert.equal(viewportElement.style.height, 1 * CHARACTER_HEIGHT + 'px');
85 assert.equal(scrollAreaElement.style.height, 1 * CHARACTER_HEIGHT + 'px');
de82bd00 86 terminal.buffer.lines.push('');
92f27d31
DI
87 viewport.syncScrollArea();
88 assert.equal(viewportElement.style.height, 1 * CHARACTER_HEIGHT + 'px');
89 assert.equal(scrollAreaElement.style.height, 2 * CHARACTER_HEIGHT + 'px');
90 done();
91 }, 0);
2c9c95f5
DI
92 });
93 });
7048f6ed 94});