diff --git a/js/tests/js1_5/LexicalConventions/lexical-001.js b/js/tests/js1_5/LexicalConventions/lexical-001.js new file mode 100644 index 000000000000..7829a0282020 --- /dev/null +++ b/js/tests/js1_5/LexicalConventions/lexical-001.js @@ -0,0 +1,161 @@ +/* +* The contents of this file are subject to the Netscape Public +* License Version 1.1 (the "License"); you may not use this file +* except in compliance with the License. You may obtain a copy of +* the License at http://www.mozilla.org/NPL/ +* +* Software distributed under the License is distributed on an "AS +* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +* implied. See the License for the specific language governing +* rights and limitations under the License. +* +* The Original Code is mozilla.org code. +* +* The Initial Developer of the Original Code is Netscape +* Communications Corporation. Portions created by Netscape are +* Copyright (C) 1998 Netscape Communications Corporation. All +* Rights Reserved. +* +* Contributor(s): pschwartau@netscape.com +* 26 November 2000 +* +* +*SUMMARY: Testing numeric literals that begin with 0. +*This test arose from Bugzilla bug 49233. +*The best explanation is from jsscan.c: +* +* "We permit 08 and 09 as decimal numbers, which makes +* our behaviour a superset of the ECMA numeric grammar. +* We might not always be so permissive, so we warn about it." +* +*Thus an expresion 010 will evaluate, as always, as an octal (to 8). +*However, 018 will evaluate as a decimal, to 18. Even though the +*user began the expression as an octal, he later used a non-octal +*digit. We forgive this and assume he intended a decimal. If the +*JavaScript "strict" option is set though, we will give a warning. +*/ +//------------------------------------------------------------------------------------------------- +var bug = '49233'; +var summary = 'Testing numeric literals that begin with 0'; +var statprefix = 'Testing '; +var quote = "'"; +var status = new Array(); +var actual = new Array(); +var expect = new Array(); + + +status[0]=showStatus('01') +actual[0]=01 +expect[0]=1 + +status[1]=showStatus('07') +actual[1]=07 +expect[1]=7 + +status[2]=showStatus('08') +actual[2]=08 +expect[2]=8 + +status[3]=showStatus('09') +actual[3]=09 +expect[3]=9 + +status[4]=showStatus('010') +actual[4]=010 +expect[4]=8 + +status[5]=showStatus('017') +actual[5]=017 +expect[5]=15 + +status[6]=showStatus('018') +actual[6]=018 +expect[6]=18 + +status[7]=showStatus('019') +actual[7]=019 +expect[7]=19 + +status[8]=showStatus('079') +actual[8]=079 +expect[8]=79 + +status[9]=showStatus('0079') +actual[9]=0079 +expect[9]=79 + +status[10]=showStatus('099') +actual[10]=099 +expect[10]=99 + +status[11]=showStatus('0099') +actual[11]=0099 +expect[11]=99 + +status[12]=showStatus('000000000077') +actual[12]=000000000077 +expect[12]=63 + +status[13]=showStatus('000000000078') +actual[13]=000000000078 +expect[13]=78 + +status[14]=showStatus('0000000000770000') +actual[14]=0000000000770000 +expect[14]=258048 + +status[15]=showStatus('0000000000780000') +actual[15]=0000000000780000 +expect[15]=780000 + +status[16]=showStatus('0765432198') +actual[16]=0765432198 +expect[16]=765432198 + +status[17]=showStatus('00076543219800') +actual[17]=00076543219800 +expect[17]=76543219800 + +status[18]=showStatus('0000001001007') +actual[18]=0000001001007 +expect[18]=262663 + +status[19]=showStatus('0000001001009') +actual[19]=0000001001009 +expect[19]=1001009 + +status[20]=showStatus('070') +actual[20]=070 +expect[20]=56 + +status[21]=showStatus('080') +actual[21]=080 +expect[21]=80 + + + +//------------------------------------------------------------------------------------------------- +test(); +//------------------------------------------------------------------------------------------------- + + +function showStatus(msg) +{ + return (statprefix + quote + msg + quote); +} + + +function test() +{ + enterFunc ('test'); + printBugNumber (bug); + printStatus (summary); + + + for (i=0; i !=status.length; i++) + { + reportCompare (expect[i], actual[i], status[i]); + } + + exitFunc ('test'); +} \ No newline at end of file