Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(641)

Side by Side Diff: chrome/browser/resources/hterm/js/scrollport_tests.js

Issue 8680034: Initial landing of Screen, Terminal, and VT100 classes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address review comments Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 ScrollPort.Tests = new TestManager.Suite('ScrollPort.Tests'); 5 hterm.ScrollPort.Tests = new TestManager.Suite('hterm.ScrollPort.Tests');
6 6
7 ScrollPort.Tests.prototype.setup = function(cx) { 7 hterm.ScrollPort.Tests.prototype.setup = function(cx) {
8 this.setDefaults(cx, 8 this.setDefaults(cx,
9 { visibleColumnCount: 80, 9 { visibleColumnCount: 80,
10 visibleRowCount: 25, 10 visibleRowCount: 25,
11 fontSize: 15, 11 fontSize: 15,
12 lineHeight: 17, 12 lineHeight: 17,
13 totalRowCount: 10000 13 totalRowCount: 10000
14 }); 14 });
15 15
16 var document = cx.window.document; 16 var document = cx.window.document;
17 17
18 document.body.innerHTML = ''; 18 document.body.innerHTML = '';
19 19
20 this.rowProvider = new MockRowProvider(document, this.totalRowCount); 20 this.rowProvider = new MockRowProvider(document, this.totalRowCount);
21 21
22 var div = document.createElement('div'); 22 var div = document.createElement('div');
23 div.style.position = 'relative'; 23 div.style.position = 'relative';
24 div.style.height = this.lineHeight * this.visibleRowCount + 'px'; 24 div.style.height = this.lineHeight * this.visibleRowCount + 'px';
25 div.style.width = '100%'; 25 div.style.width = '100%';
26 document.body.appendChild(div); 26 document.body.appendChild(div);
27 27
28 this.scrollPort = new ScrollPort(this.rowProvider, 28 this.scrollPort = new hterm.ScrollPort(this.rowProvider,
29 this.fontSize, this.lineHeight); 29 this.fontSize, this.lineHeight);
30 this.scrollPort.decorate(div); 30 this.scrollPort.decorate(div);
31 }; 31 };
32 32
33 /** 33 /**
34 * Ensure the selection is collapsed, row caching is on, and we're at the 34 * Ensure the selection is collapsed, row caching is on, and we're at the
35 * top of the scroll port. 35 * top of the scroll port.
36 */ 36 */
37 ScrollPort.Tests.prototype.preamble = function(result, cx) { 37 hterm.ScrollPort.Tests.prototype.preamble = function(result, cx) {
38 var selection = cx.window.getSelection(); 38 var selection = cx.window.getSelection();
39 if (!selection.isCollapsed) 39 if (!selection.isCollapsed)
40 selection.collapseToStart(); 40 selection.collapseToStart();
41 41
42 this.rowProvider.setCacheEnabled(true); 42 this.rowProvider.setCacheEnabled(true);
43 43
44 this.scrollPort.scrollRowToBottom(this.totalRowCount); 44 this.scrollPort.scrollRowToBottom(this.totalRowCount);
45 this.scrollPort.scrollRowToTop(0); 45 this.scrollPort.scrollRowToTop(0);
46 }; 46 };
47 47
48 /** 48 /**
49 * Basic test to make sure that the viewport contains the right number of 49 * Basic test to make sure that the viewport contains the right number of
50 * rows at the right places after some scrolling. 50 * rows at the right places after some scrolling.
51 */ 51 */
52 ScrollPort.Tests.addTest('basic-scroll', function(result, cx) { 52 hterm.ScrollPort.Tests.addTest('basic-scroll', function(result, cx) {
53 var topRow = this.scrollPort.getTopRowIndex(); 53 var topRow = this.scrollPort.getTopRowIndex();
54 result.assertEQ(topRow, 0); 54 result.assertEQ(topRow, 0);
55 result.assertEQ(this.scrollPort.getBottomRowIndex(topRow), 55 result.assertEQ(this.scrollPort.getBottomRowIndex(topRow),
56 this.visibleRowCount - 1); 56 this.visibleRowCount - 1);
57 57
58 this.scrollPort.scrollRowToBottom(this.totalRowCount); 58 this.scrollPort.scrollRowToBottom(this.totalRowCount);
59 topRow = this.scrollPort.getTopRowIndex(); 59 topRow = this.scrollPort.getTopRowIndex();
60 result.assertEQ(topRow, 60 result.assertEQ(topRow,
61 this.totalRowCount - this.visibleRowCount); 61 this.totalRowCount - this.visibleRowCount);
62 result.assertEQ(this.scrollPort.getBottomRowIndex(topRow), 62 result.assertEQ(this.scrollPort.getBottomRowIndex(topRow),
63 this.totalRowCount - 1); 63 this.totalRowCount - 1);
64 64
65 result.pass(); 65 result.pass();
66 }); 66 });
67 67
68 /** 68 /**
69 * Make sure the ScrollPort is reusing the same row nodes when it can. 69 * Make sure the hterm.ScrollPort is reusing the same row nodes when it can.
70 */ 70 */
71 ScrollPort.Tests.addTest('node-recycler', function(result, cx) { 71 hterm.ScrollPort.Tests.addTest('node-recycler', function(result, cx) {
72 this.rowProvider.resetCallCount('getRowNode'); 72 this.rowProvider.resetCallCount('getRowNode');
73 this.scrollPort.scrollRowToTop(1); 73 this.scrollPort.scrollRowToTop(1);
74 var count = this.rowProvider.getCallCount('getRowNode'); 74 var count = this.rowProvider.getCallCount('getRowNode');
75 75
76 // Scrolling from 0 to 1 should result in only one call to getRowNode. 76 // Scrolling from 0 to 1 should result in only one call to getRowNode.
77 result.assertEQ(count, 1); 77 result.assertEQ(count, 1);
78 78
79 result.pass(); 79 result.pass();
80 }); 80 });
81 81
82 /** 82 /**
83 * Make sure the selection is maintained even after scrolling off screen. 83 * Make sure the selection is maintained even after scrolling off screen.
84 */ 84 */
85 ScrollPort.Tests.addTest('scroll-selection', function(result, cx) { 85 hterm.ScrollPort.Tests.addTest('scroll-selection', function(result, cx) {
86 var doc = this.scrollPort.getDocument(); 86 var doc = this.scrollPort.getDocument();
87 87
88 // Scroll into a part of the buffer that can be scrolled off the top 88 // Scroll into a part of the buffer that can be scrolled off the top
89 // and the bottom of the screen. 89 // and the bottom of the screen.
90 this.scrollPort.scrollRowToTop(50); 90 this.scrollPort.scrollRowToTop(50);
91 91
92 // And select some text in the middle of the visible range. 92 // And select some text in the middle of the visible range.
93 var s = doc.getSelection(); 93 var s = doc.getSelection();
94 94
95 var anchorRow = this.rowProvider.getRowNode(55); 95 var anchorRow = this.rowProvider.getRowNode(55);
(...skipping 19 matching lines...) Expand all
115 result.assertEQ(anchorNode, s.anchorNode); 115 result.assertEQ(anchorNode, s.anchorNode);
116 result.assertEQ(focusNode, s.focusNode); 116 result.assertEQ(focusNode, s.focusNode);
117 } 117 }
118 118
119 result.pass(); 119 result.pass();
120 }); 120 });
121 121
122 /** 122 /**
123 * Test the select-all function. 123 * Test the select-all function.
124 */ 124 */
125 ScrollPort.Tests.addTest('select-all', function(result, cx) { 125 hterm.ScrollPort.Tests.addTest('select-all', function(result, cx) {
126 this.scrollPort.selectAll(); 126 this.scrollPort.selectAll();
127 result.assertEQ(0, this.scrollPort.selection_.startRow.rowIndex); 127 result.assertEQ(0, this.scrollPort.selection_.startRow.rowIndex);
128 result.assertEQ(this.totalRowCount - 1, 128 result.assertEQ(this.totalRowCount - 1,
129 this.scrollPort.selection_.endRow.rowIndex); 129 this.scrollPort.selection_.endRow.rowIndex);
130 result.pass(); 130 result.pass();
131 }); 131 });
132 132
133 /** 133 /**
134 * Remove the scrollPort that was set up and leave the user with a full-page 134 * Remove the scrollPort that was set up and leave the user with a full-page
135 * scroll port. 135 * scroll port.
136 * 136 *
137 * This should always be the last test of the suite, since it leaves the user 137 * This should always be the last test of the suite, since it leaves the user
138 * with a full page scrollPort to poke at. 138 * with a full page scrollPort to poke at.
139 */ 139 */
140 ScrollPort.Tests.addTest('fullscreen', function(result, cx) { 140 hterm.ScrollPort.Tests.addTest('fullscreen', function(result, cx) {
141 var document = cx.window.document; 141 var document = cx.window.document;
142 142
143 document.body.innerHTML = ''; 143 document.body.innerHTML = '';
144 144
145 this.rowProvider = new MockRowProvider(document, this.totalRowCount); 145 this.rowProvider = new MockRowProvider(document, this.totalRowCount);
146 146
147 var div = document.createElement('div'); 147 var div = document.createElement('div');
148 div.style.position = 'absolute'; 148 div.style.position = 'absolute';
149 div.style.height = '100%'; 149 div.style.height = '100%';
150 div.style.width = '100%'; 150 div.style.width = '100%';
151 document.body.appendChild(div); 151 document.body.appendChild(div);
152 152
153 this.scrollPort = new ScrollPort(this.rowProvider, 153 this.scrollPort = new hterm.ScrollPort(this.rowProvider,
154 this.fontSize, this.lineHeight); 154 this.fontSize, this.lineHeight);
155 this.scrollPort.decorate(div); 155 this.scrollPort.decorate(div);
156 156
157 cx.window.scrollPort = this.scrollPort; 157 cx.window.scrollPort = this.scrollPort;
158 158
159 result.assert(div.clientHeight > 0); 159 result.assert(div.clientHeight > 0);
160 result.assert(div.clientWidth > 0); 160 result.assert(div.clientWidth > 0);
161 result.assertEQ(div.clientHeight, this.scrollPort.iframe_.clientHeight); 161 result.assertEQ(div.clientHeight, this.scrollPort.iframe_.clientHeight);
162 162
163 result.pass(); 163 result.pass();
164 }); 164 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698