18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* The contents of this file are subject to the Netscape Public 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* License Version 1.1 (the "License"); you may not use this file 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* except in compliance with the License. You may obtain a copy of 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* the License at http://www.mozilla.org/NPL/ 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Software distributed under the License is distributed on an "AS 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* implied. See the License for the specific language governing 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* rights and limitations under the License. 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* The Original Code is mozilla.org code. 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* The Initial Developer of the Original Code is Netscape 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Communications 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/* 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * JavaScript shared functions file for running the tests in either 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * stand-alone JavaScript engine. To run a test, first load this file, 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * then load the test script. 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar completed = false; 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar testcases; 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar tc = 0; 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectSECTION = ""; 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectVERSION = ""; 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectBUGNUMBER=""; 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar TZ_DIFF = getTimeZoneDiff(); 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar DEBUG = false; 408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar GLOBAL = "[object global]"; 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar PASSED = " PASSED!" 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar FAILED = " FAILED! expected: "; 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction test() { 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for ( tc=0; tc < testcases.length; tc++ ) { 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project testcases[tc].passed = writeTestCaseResult( 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project testcases[tc].expect, 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project testcases[tc].actual, 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project testcases[tc].description +" = "+ 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project testcases[tc].actual ); 528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; 548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project stopTest(); 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return ( testcases ); 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction TestCase( n, d, e, a ) { 608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project this.name = n; 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project this.description = d; 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project this.expect = e; 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project this.actual = a; 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project this.passed = true; 658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project this.reason = ""; 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project this.bugnumber = BUGNUMBER; 678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project this.passed = getTestCaseResult( this.expect, this.actual ); 698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if ( DEBUG ) { 708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project writeLineToLog( "added " + this.description ); 718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction startTest() { 748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if ( version ) { 758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // JavaScript 1.3 is supposed to be compliant ecma version 1.0 768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if ( VERSION == "ECMA_1" ) { 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project version ( 130 ); 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if ( VERSION == "JS_13" ) { 808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project version ( 130 ); 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if ( VERSION == "JS_12" ) { 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project version ( 120 ); 848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if ( VERSION == "JS_11" ) { 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project version ( 110 ); 878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // for ecma version 2.0, we will leave the javascript version to 928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // the default ( for now ). 938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project writeHeaderToLog( SECTION + " "+ TITLE); 958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if ( BUGNUMBER ) { 968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project writeLineToLog ("BUGNUMBER: " + BUGNUMBER ); 978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project testcases = new Array(); 1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project tc = 0; 1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction getTestCaseResult( expect, actual ) { 1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // because ( NaN == NaN ) always returns false, need to do 1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // a special compare to see if we got the right result. 1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if ( actual != actual ) { 1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if ( typeof actual == "object" ) { 1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = "NaN object"; 1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } else { 1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = "NaN number"; 1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if ( expect != expect ) { 1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if ( typeof expect == "object" ) { 1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = "NaN object"; 1168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } else { 1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = "NaN number"; 1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var passed = ( expect == actual ) ? true : false; 1228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // if both objects are numbers 1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // need to replace w/ IEEE standard for rounding 1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if ( !passed 1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project && typeof(actual) == "number" 1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project && typeof(expect) == "number" 1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ) { 1298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if ( Math.abs(actual-expect) < 0.0000001 ) { 1308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project passed = true; 1318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // verify type is the same 1358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if ( typeof(expect) != typeof(actual) ) { 1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project passed = false; 1378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return passed; 1408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction writeTestCaseResult( expect, actual, string ) { 1438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var passed = getTestCaseResult( expect, actual ); 1448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project writeFormattedResult( expect, actual, string, passed ); 1458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return passed; 1468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction writeFormattedResult( expect, actual, string, passed ) { 1498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var s = string ; 1508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project s += ( passed ) ? PASSED : FAILED + expect; 1518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project writeLineToLog( s); 1528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return passed; 1538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction writeLineToLog( string ) { 1568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project print( string ); 1578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction writeHeaderToLog( string ) { 1598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project print( string ); 1608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction stopTest() { 1628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var gc; 1638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if ( gc != undefined ) { 1648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project gc(); 1658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction getFailedCases() { 1688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for ( var i = 0; i < testcases.length; i++ ) { 1698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if ( ! testcases[i].passed ) { 1708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project print( testcases[i].description +" = " +testcases[i].actual +" expected: "+ testcases[i].expect ); 1718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction err( msg, page, line ) { 1758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project writeLineToLog( page + " failed with error: " + msg + " on line " + line ); 1768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project testcases[tc].actual = "error"; 1778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project testcases[tc].reason = msg; 1788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project writeTestCaseResult( testcases[tc].expect, 1798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project testcases[tc].actual, 1808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project testcases[tc].description +" = "+ testcases[tc].actual + 1818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ": " + testcases[tc].reason ); 1828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project stopTest(); 1838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return true; 1848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction Enumerate ( o ) { 1878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var properties = new Array(); 1888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for ( p in o ) { 1898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project properties[ properties.length ] = new Array( p, o[p] ); 1908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return properties; 1928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction getFailedCases() { 1958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for ( var i = 0; i < testcases.length; i++ ) { 1968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if ( ! testcases[i].passed ) { 1978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project writeLineToLog( testcases[i].description +" = " +testcases[i].actual + 1988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project " expected: "+ testcases[i].expect ); 1998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction AddTestCase( description, expect, actual ) { 2038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project testcases[tc++] = new TestCase( SECTION, description, expect, actual ); 2048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 2088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Originally, the test suite used a hard-coded value TZ_DIFF = -8. 2098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * But that was only valid for testers in the Pacific Standard Time Zone! 2108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * We calculate the proper number dynamically for any tester. We just 2118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * have to be careful to use a date not subject to Daylight Savings Time... 2128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 2138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction getTimeZoneDiff() 2148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return -((new Date(2000, 1, 1)).getTimezoneOffset())/60; 2168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 217