18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* The contents of this file are subject to the Netscape Public 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * License Version 1.1 (the "License"); you may not use this file 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * except in compliance with the License. You may obtain a copy of 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the License at http://www.mozilla.org/NPL/ 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Software distributed under the License is distributed on an "AS 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * implied. See the License for the specific language governing 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * rights and limitations under the License. 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * The Original Code is Mozilla Communicator client code, released March 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 31, 1998. 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * The Initial Developer of the Original Code is Netscape Communications 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Corporation. Portions created by Netscape are 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 1998 Netscape Communications Corporation. All 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Rights Reserved. 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Contributor(s): 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * JavaScript test library shared functions file for running the tests 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * in the browser. Overrides the shell's print function with document.write 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * and make everything HTML pretty. 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * To run the tests in the browser, use the mkhtml.pl script to generate 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * html pages that include the shell.js, browser.js (this file), and the 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * test js file in script tags. 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * The source of the page that is generated should look something like this: 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * <script src="./../shell.js"></script> 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * <script src="./../browser.js"></script> 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * <script src="./mytest.js"></script> 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectonerror = err; 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar GLOBAL = "[object Window]"; 408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction startTest() { 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project writeHeaderToLog( SECTION + " "+ TITLE); 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if ( BUGNUMBER ) { 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project writeLineToLog ("BUGNUMBER: " + BUGNUMBER ); 458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project testcases = new Array(); 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project tc = 0; 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction writeLineToLog( string ) { 528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project document.write( string + "<br>\n"); 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction writeHeaderToLog( string ) { 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project document.write( "<h2>" + string + "</h2>" ); 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction stopTest() { 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var gc; 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if ( gc != undefined ) { 608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project gc(); 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project document.write( "<hr>" ); 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction writeFormattedResult( expect, actual, string, passed ) { 658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var s = "<tt>"+ string ; 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project s += "<b>" ; 678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project s += ( passed ) ? "<font color=#009900> " + PASSED 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project : "<font color=#aa0000> " + FAILED + expect + "</tt>"; 698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project writeLineToLog( s + "</font></b></tt>" ); 708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return passed; 718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction err ( msg, page, line ) { 738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project writeLineToLog( "Test " + page + " failed on line " + line +" with the message: " + msg ); 748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project testcases[tc].actual = "error"; 768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project testcases[tc].reason = msg; 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project writeTestCaseResult( testcases[tc].expect, 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project testcases[tc].actual, 798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project testcases[tc].description +" = "+ testcases[tc].actual + 808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ": " + testcases[tc].reason ); 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project stopTest(); 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return true; 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 84