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 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either expressed 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* or 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. 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* All Rights Reserved. 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Contributor(s): pschwartau@netscape.com 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Date: 2001-07-15 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* SUMMARY: Testing Number.prototype.toExponential(fractionDigits) 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* See EMCA 262 Edition 3 Section 15.7.4.6 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Also see http://bugzilla.mozilla.org/show_bug.cgi?id=90551 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project//----------------------------------------------------------------------------- 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar UBound = 0; 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar bug = '(none)'; 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar summary = 'Testing Number.prototype.toExponential(fractionDigits)'; 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar cnIsRangeError = 'instanceof RangeError'; 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar cnNotRangeError = 'NOT instanceof RangeError'; 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar cnNoErrorCaught = 'NO ERROR CAUGHT...'; 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar status = ''; 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar statusitems = []; 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar actual = ''; 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar actualvalues = []; 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar expect= ''; 408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar expectedvalues = []; 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar testNum = 77.1234; 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatus = 'Section A of test: no error intended!'; 458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectactual = testNum.toExponential(4); 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpect = '7.7123e+1'; 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectcaptureThis(); 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/////////////////////////// OOPS.... /////////////////////////////// 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/************************************************************************* 528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 15.7.4.6 Number.prototype.toExponential(fractionDigits) 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * An implementation is permitted to extend the behaviour of toExponential 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * for values of fractionDigits less than 0 or greater than 20. In this 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * case toExponential would not necessarily throw RangeError for such values. 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatus = 'Section B of test: expect RangeError because fractionDigits < 0'; 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectactual = catchError('testNum.toExponential(-4)'); 608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpect = cnIsRangeError; 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectcaptureThis(); 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatus = 'Section C of test: expect RangeError because fractionDigits > 20 '; 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectactual = catchError('testNum.toExponential(21)'); 658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpect = cnIsRangeError; 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectcaptureThis(); 678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*************************************************************************/ 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project//----------------------------------------------------------------------------- 728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecttest(); 738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project//----------------------------------------------------------------------------- 748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction captureThis() 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project statusitems[UBound] = status; 798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actualvalues[UBound] = actual; 808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expectedvalues[UBound] = expect; 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project UBound++; 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction test() 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project enterFunc ('test'); 888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project printBugNumber (bug); 898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project printStatus (summary); 908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for (var i = 0; i < UBound; i++) 928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expectedvalues[i], actualvalues[i], statusitems[i]); 948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project exitFunc ('test'); 978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction catchError(sEval) 1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project try {eval(sEval);} 1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project catch(e) {return isRangeError(e);} 1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return cnNoErrorCaught; 1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction isRangeError(obj) 1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (obj instanceof RangeError) 1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return cnIsRangeError; 1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return cnNotRangeError; 1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 114