Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 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 | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 /** | |
| 6 * @fileoverview hterm.Terminal unit tests. | |
| 7 */ | |
| 8 | |
| 9 hterm.Terminal.Tests = new TestManager.Suite('hterm.Terminal.Tests'); | |
| 10 | |
| 11 hterm.Terminal.Tests.prototype.setup = function(cx) { | |
| 12 this.setDefaults(cx, | |
| 13 { visibleColumnCount: 80, | |
| 14 visibleRowCount: 25, | |
| 15 fontSize: 15, | |
| 16 lineHeight: 17, | |
| 17 charWidth: 9, | |
| 18 scrollbarWidth: 16, | |
| 19 }); | |
| 20 }; | |
| 21 | |
| 22 /** | |
| 23 * Clear out the current document and create a new hterm.Terminal object for | |
| 24 * testing. | |
| 25 * | |
| 26 * Called before each test case in this suite. | |
| 27 */ | |
| 28 hterm.Terminal.Tests.prototype.preamble = function(result, cx) { | |
| 29 var document = cx.window.document; | |
| 30 | |
| 31 document.body.innerHTML = ''; | |
| 32 | |
| 33 var div = document.createElement('div'); | |
| 34 div.style.position = 'absolute'; | |
| 35 div.style.height = this.lineHeight * this.visibleRowCount + 'px'; | |
| 36 div.style.width = this.charWidth * this.visibleColumnCount + | |
| 37 this.scrollbarWidth + 'px'; | |
| 38 document.body.appendChild(div); | |
| 39 | |
| 40 cx.window.terminal = this.terminal = new hterm.Terminal( | |
| 41 this.fontSize, this.lineHeight); | |
| 42 | |
| 43 this.terminal.decorate(div); | |
| 44 }; | |
| 45 | |
| 46 /** | |
| 47 * Overridden addTest method. | |
| 48 * | |
| 49 * Every test in this suite needs to wait for the terminal initialization to | |
| 50 * complete asynchronously. Rather than stick a bunch of biolerplate into each | |
| 51 * test case, we use this overridden addText method to add a proxy around the | |
|
Vladislav Kaznacheev
2011/11/28 18:39:36
addText -> addTest
rginda
2011/11/29 19:26:12
Done.
| |
| 52 * actual test. | |
| 53 */ | |
| 54 hterm.Terminal.Tests.addTest = function(name, callback) { | |
| 55 function testProxy(result, cx) { | |
| 56 setTimeout(function() { | |
| 57 this.terminal.setCursorPosition(0, 0); | |
| 58 callback.apply(this, [result, cx]); | |
| 59 }, 0); | |
| 60 | |
| 61 result.requestTime(200); | |
| 62 } | |
| 63 | |
| 64 TestManager.Suite.addTest.apply(this, [name, testProxy]); | |
| 65 }; | |
| 66 | |
| 67 /** | |
| 68 * Fill the screen with 'X' characters once character at a time, in a way | |
| 69 * that should stress the cursor positioning code. | |
| 70 */ | |
| 71 hterm.Terminal.Tests.addTest('plaintext-stress-cursor-ltr', | |
| 72 function(result, cx) { | |
| 73 for (var col = 0; col < this.visibleColumnCount; col++) { | |
| 74 for (var row = 0; row < this.visibleRowCount; row++) { | |
| 75 console.log(row, col); | |
| 76 this.terminal.screen_.setCursorPosition(row, col); | |
| 77 this.terminal.screen_.insertString('X'); | |
| 78 } | |
| 79 } | |
| 80 | |
| 81 result.pass(); | |
| 82 }); | |
| 83 | |
| 84 /** | |
| 85 * Fill the screen with 'X' characters once character at a time, in a way | |
| 86 * that should stress the cursor positioning code and the overwriteString() | |
| 87 * code. | |
| 88 */ | |
| 89 hterm.Terminal.Tests.addTest('plaintext-stress-cursor-rtl', | |
| 90 function(result, cx) { | |
| 91 for (var col = this.visibleColumnCount - 1; col >= 0; col--) { | |
| 92 for (var row = 0; row < this.visibleRowCount; row++) { | |
| 93 this.terminal.screen_.setCursorPosition(row, col); | |
| 94 this.terminal.screen_.overwriteString('X'); | |
| 95 } | |
| 96 } | |
| 97 | |
| 98 result.pass(); | |
| 99 }); | |
| 100 | |
| 101 /** | |
| 102 * Fill the terminal with a lot of text as quickly as possible. | |
| 103 * | |
| 104 * This test doesn't actually assert anything, but the timing data in the test | |
| 105 * log is useful. | |
| 106 */ | |
| 107 hterm.Terminal.Tests.addTest('plaintext-stress-insert', | |
| 108 function(result, cx) { | |
| 109 var chunkSize = 1000; | |
| 110 var testCount = 10; | |
| 111 var self = this; | |
| 112 | |
| 113 function test(count) { | |
| 114 for (var i = count * chunkSize; i < (count + 1) * chunkSize; i++) { | |
| 115 if (i != 0) | |
| 116 self.terminal.newLine(); | |
| 117 self.terminal.screen_.insertString( | |
| 118 'line ' + i + ': All work and no play makes jack a dull boy.'); | |
| 119 } | |
| 120 | |
| 121 if (count + 1 >= testCount) { | |
| 122 result.pass(); | |
| 123 } else { | |
| 124 result.requestTime(200); | |
| 125 setTimeout(test, 0, count + 1); | |
| 126 } | |
| 127 } | |
| 128 | |
| 129 test(0); | |
| 130 }); | |
| OLD | NEW |