| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 /** | 5 /** |
| 6 * Tests that an observation matches the expected value. | 6 * Tests that an observation matches the expected value. |
| 7 * @param {Object} expected The expected value. | 7 * @param {Object} expected The expected value. |
| 8 * @param {Object} observed The actual value. | 8 * @param {Object} observed The actual value. |
| 9 * @param {string=} opt_message Optional message to include with a test | 9 * @param {string=} opt_message Optional message to include with a test |
| 10 * failure. | 10 * failure. |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 57 } | 57 } |
| 58 | 58 |
| 59 /** | 59 /** |
| 60 * Verifies that a test evaluation results in an exception. | 60 * Verifies that a test evaluation results in an exception. |
| 61 * @param {!Function} f The test function. | 61 * @param {!Function} f The test function. |
| 62 */ | 62 */ |
| 63 function assertThrows(f) { | 63 function assertThrows(f) { |
| 64 var triggeredError = false; | 64 var triggeredError = false; |
| 65 try { | 65 try { |
| 66 f(); | 66 f(); |
| 67 } catch(err) { | 67 } catch (err) { |
| 68 triggeredError = true; | 68 triggeredError = true; |
| 69 } | 69 } |
| 70 if (!triggeredError) | 70 if (!triggeredError) |
| 71 throw new Error('Assertion Failed: throw expected.'); | 71 throw new Error('Assertion Failed: throw expected.'); |
| 72 } | 72 } |
| 73 | 73 |
| 74 /** | 74 /** |
| 75 * Verifies that the contents of the expected and observed arrays match. | 75 * Verifies that the contents of the expected and observed arrays match. |
| 76 * @param {!Array} expected The expected result. | 76 * @param {!Array} expected The expected result. |
| 77 * @param {!Array} observed The actual result. | 77 * @param {!Array} observed The actual result. |
| 78 */ | 78 */ |
| 79 function assertArrayEquals(expected, observed) { | 79 function assertArrayEquals(expected, observed) { |
| 80 var v1 = Array.prototype.slice.call(expected); | 80 var v1 = Array.prototype.slice.call(expected); |
| 81 var v2 = Array.prototype.slice.call(observed); | 81 var v2 = Array.prototype.slice.call(observed); |
| 82 var equal = v1.length == v2.length; | 82 var equal = v1.length == v2.length; |
| 83 if (equal) { | 83 if (equal) { |
| 84 for (var i = 0; i < v1.length; i++) { | 84 for (var i = 0; i < v1.length; i++) { |
| 85 if (v1[i] !== v2[i]) { | 85 if (v1[i] !== v2[i]) { |
| 86 equal = false; | 86 equal = false; |
| 87 break; | 87 break; |
| 88 } | 88 } |
| 89 } | 89 } |
| 90 } | 90 } |
| 91 if (!equal) { | 91 if (!equal) { |
| 92 var message = | 92 var message = |
| 93 ['Assertion Failed', 'Observed: ' + v2, 'Expected: ' + v1].join('\n '); | 93 ['Assertion Failed', 'Observed: ' + v2, 'Expected: ' + v1].join('\n '); |
| 94 throw new Error(message); | 94 throw new Error(message); |
| 95 } | 95 } |
| 96 } | 96 } |
| 97 | 97 |
| 98 /** | 98 /** |
| 99 * Verifies that the expected and observed result have the same content. | 99 * Verifies that the expected and observed result have the same content. |
| 100 * @param {*} expected The expected result. | 100 * @param {*} expected The expected result. |
| 101 * @param {*} observed The actual result. | 101 * @param {*} observed The actual result. |
| 102 */ | 102 */ |
| 103 function assertDeepEquals(expected, observed, opt_message) { | 103 function assertDeepEquals(expected, observed, opt_message) { |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 147 if (/^test/.test(name) && typeof window[name] == 'function') | 147 if (/^test/.test(name) && typeof window[name] == 'function') |
| 148 testCases.push(name); | 148 testCases.push(name); |
| 149 } | 149 } |
| 150 if (!testCases.length) { | 150 if (!testCases.length) { |
| 151 console.error('Failed to find test cases.'); | 151 console.error('Failed to find test cases.'); |
| 152 cleanTestRun = false; | 152 cleanTestRun = false; |
| 153 } | 153 } |
| 154 try { | 154 try { |
| 155 if (window.setUpPage) | 155 if (window.setUpPage) |
| 156 window.setUpPage(); | 156 window.setUpPage(); |
| 157 } catch(err) { | 157 } catch (err) { |
| 158 cleanTestRun = false; | 158 cleanTestRun = false; |
| 159 } | 159 } |
| 160 continueTesting(); | 160 continueTesting(); |
| 161 } | 161 } |
| 162 | 162 |
| 163 /** | 163 /** |
| 164 * Runs the next test in the queue. Reports the test results if the queue is | 164 * Runs the next test in the queue. Reports the test results if the queue is |
| 165 * empty. | 165 * empty. |
| 166 * @param {boolean=} opt_asyncTestFailure Optional parameter indicated if the | 166 * @param {boolean=} opt_asyncTestFailure Optional parameter indicated if the |
| 167 * last asynchronous test failed. | 167 * last asynchronous test failed. |
| 168 */ | 168 */ |
| 169 function continueTesting(opt_asyncTestFailure) { | 169 function continueTesting(opt_asyncTestFailure) { |
| 170 if (opt_asyncTestFailure) | 170 if (opt_asyncTestFailure) |
| 171 cleanTestRun = false; | 171 cleanTestRun = false; |
| 172 var done = false; | 172 var done = false; |
| 173 if (pendingTearDown) { | 173 if (pendingTearDown) { |
| 174 pendingTearDown(); | 174 pendingTearDown(); |
| 175 pendingTearDown = null; | 175 pendingTearDown = null; |
| 176 } | 176 } |
| 177 if (testCases.length > 0) { | 177 if (testCases.length > 0) { |
| 178 var fn = testCases.pop(); | 178 var fn = testCases.pop(); |
| 179 var isAsyncTest = window[fn].length; | 179 var isAsyncTest = window[fn].length; |
| 180 try { | 180 try { |
| 181 if (window.setUp) | 181 if (window.setUp) |
| 182 window.setUp(); | 182 window.setUp(); |
| 183 pendingTearDown = window.tearDown; | 183 pendingTearDown = window.tearDown; |
| 184 window[fn](continueTesting); | 184 window[fn](continueTesting); |
| 185 } catch(err) { | 185 } catch (err) { |
| 186 console.error('Failure in test ' + fn + '\n' + err); | 186 console.error('Failure in test ' + fn + '\n' + err); |
| 187 console.log(err.stack); | 187 console.log(err.stack); |
| 188 cleanTestRun = false; | 188 cleanTestRun = false; |
| 189 } | 189 } |
| 190 // Asynchronous tests must manually call continueTesting when complete. | 190 // Asynchronous tests must manually call continueTesting when complete. |
| 191 if (!isAsyncTest) | 191 if (!isAsyncTest) |
| 192 continueTesting(); | 192 continueTesting(); |
| 193 } else { | 193 } else { |
| 194 done = true; | 194 done = true; |
| 195 endTests(cleanTestRun); | 195 endTests(cleanTestRun); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 208 * @param {boolean} success Indicates if the test completed successfully. | 208 * @param {boolean} success Indicates if the test completed successfully. |
| 209 */ | 209 */ |
| 210 function endTests(success) { | 210 function endTests(success) { |
| 211 domAutomationController.setAutomationId(1); | 211 domAutomationController.setAutomationId(1); |
| 212 domAutomationController.send(success ? 'SUCCESS' : 'FAILURE'); | 212 domAutomationController.send(success ? 'SUCCESS' : 'FAILURE'); |
| 213 } | 213 } |
| 214 | 214 |
| 215 window.onerror = function() { | 215 window.onerror = function() { |
| 216 endTests(false); | 216 endTests(false); |
| 217 }; | 217 }; |
| OLD | NEW |