1/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2/* ***** BEGIN LICENSE BLOCK ***** 3 * Version: MPL 1.1/GPL 2.0/LGPL 2.1 4 * 5 * The contents of this file are subject to the Mozilla Public License Version 6 * 1.1 (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * http://www.mozilla.org/MPL/ 9 * 10 * Software distributed under the License is distributed on an "AS IS" basis, 11 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License 12 * for the specific language governing rights and limitations under the 13 * License. 14 * 15 * The Original Code is mozilla.org code. 16 * 17 * The Initial Developer of the Original Code is 18 * Netscape Communications Corporation. 19 * Portions created by the Initial Developer are Copyright (C) 1998 20 * the Initial Developer. All Rights Reserved. 21 * 22 * Contributor(s): 23 * 24 * Alternatively, the contents of this file may be used under the terms of 25 * either the GNU General Public License Version 2 or later (the "GPL"), or 26 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), 27 * in which case the provisions of the GPL or the LGPL are applicable instead 28 * of those above. If you wish to allow use of your version of this file only 29 * under the terms of either the GPL or the LGPL, and not to allow others to 30 * use your version of this file under the terms of the MPL, indicate your 31 * decision by deleting the provisions above and replace them with the notice 32 * and other provisions required by the GPL or the LGPL. If you do not delete 33 * the provisions above, a recipient may use your version of this file under 34 * the terms of any one of the MPL, the GPL or the LGPL. 35 * 36 * ***** END LICENSE BLOCK ***** */ 37 38/* 39 * JavaScript test library shared functions file for running the tests 40 * in the browser. Overrides the shell's print function with document.write 41 * and make everything HTML pretty. 42 * 43 * To run the tests in the browser, use the mkhtml.pl script to generate 44 * html pages that include the shell.js, browser.js (this file), and the 45 * test js file in script tags. 46 * 47 * The source of the page that is generated should look something like this: 48 * <script src="./../shell.js"></script> 49 * <script src="./../browser.js"></script> 50 * <script src="./mytest.js"></script> 51 */ 52function writeLineToLog( string ) { 53 document.write( string + "<br>\n"); 54} 55 56var testcases = new Array(); 57var tc = testcases.length; 58var bug = ''; 59var summary = ''; 60var description = ''; 61var expected = ''; 62var actual = ''; 63var msg = ''; 64 65 66function TestCase(n, d, e, a) 67{ 68 this.path = (typeof gTestPath == 'undefined') ? '' : gTestPath; 69 this.name = n; 70 this.description = d; 71 this.expect = e; 72 this.actual = a; 73 this.passed = ( e == a ); 74 this.reason = ''; 75 this.bugnumber = typeof(bug) != 'undefined' ? bug : ''; 76 testcases[tc++] = this; 77} 78 79var gInReportCompare = false; 80 81var _reportCompare = reportCompare; 82 83reportCompare = function(expected, actual, description) 84{ 85 gInReportCompare = true; 86 87 var testcase = new TestCase(gTestName, description, expected, actual); 88 testcase.passed = _reportCompare(expected, actual, description); 89 90 gInReportCompare = false; 91}; 92 93var _reportFailure = reportFailure; 94reportFailure = function (msg, page, line) 95{ 96 var testcase; 97 98 if (gInReportCompare) 99 { 100 testcase = testcases[tc - 1]; 101 testcase.passed = false; 102 } 103 else 104 { 105 if (typeof DESCRIPTION == 'undefined') 106 { 107 DESCRIPTION = 'Unknown'; 108 } 109 if (typeof EXPECTED == 'undefined') 110 { 111 EXPECTED = 'Unknown'; 112 } 113 testcase = new TestCase(gTestName, DESCRIPTION, EXPECTED, "error"); 114 if (document.location.href.indexOf('-n.js') != -1) 115 { 116 // negative test 117 testcase.passed = true; 118 } 119 } 120 121 testcase.reason += msg; 122 123 if (typeof(page) != 'undefined') 124 { 125 testcase.reason += ' Page: ' + page; 126 } 127 if (typeof(line) != 'undefined') 128 { 129 testcase.reason += ' Line: ' + line; 130 } 131 if (!testcase.passed) 132 { 133 _reportFailure(msg); 134 } 135 136}; 137 138function gc() 139{ 140} 141 142function quit() 143{ 144} 145 146window.onerror = reportFailure; 147 148