]>
Commit | Line | Data |
---|---|---|
5bddb937 DI |
1 | import { assert } from 'chai'; |
2 | import { Viewport } from './Viewport'; | |
de82bd00 | 3 | import {BufferSet} from './BufferSet'; |
7048f6ed | 4 | |
5bddb937 | 5 | describe('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 | }); |