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