diff options
Diffstat (limited to 'js/src/tests/js1_5/LexicalConventions/lexical-001.js')
-rw-r--r-- | js/src/tests/js1_5/LexicalConventions/lexical-001.js | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/js/src/tests/js1_5/LexicalConventions/lexical-001.js b/js/src/tests/js1_5/LexicalConventions/lexical-001.js new file mode 100644 index 000000000..47d049aaa --- /dev/null +++ b/js/src/tests/js1_5/LexicalConventions/lexical-001.js @@ -0,0 +1,149 @@ +/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + + +/* + * Date: 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 expression 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 BUGNUMBER = '49233'; +var summary = 'Testing numeric literals that begin with 0'; +var statprefix = 'Testing '; +var quote = "'"; +var asString = new Array(); +var actual = new Array(); +var expect = new Array(); + + + asString[0]='01' + actual[0]=01 + expect[0]=1 + + asString[1]='07' + actual[1]=07 + expect[1]=7 + + asString[2]='08' + actual[2]=08 + expect[2]=8 + + asString[3]='09' + actual[3]=09 + expect[3]=9 + + asString[4]='010' + actual[4]=010 + expect[4]=8 + + asString[5]='017' + actual[5]=017 + expect[5]=15 + + asString[6]='018' + actual[6]=018 + expect[6]=18 + + asString[7]='019' + actual[7]=019 + expect[7]=19 + + asString[8]='079' + actual[8]=079 + expect[8]=79 + + asString[9]='0079' + actual[9]=0079 + expect[9]=79 + + asString[10]='099' + actual[10]=099 + expect[10]=99 + + asString[11]='0099' + actual[11]=0099 + expect[11]=99 + + asString[12]='000000000077' + actual[12]=000000000077 + expect[12]=63 + + asString[13]='000000000078' + actual[13]=000000000078 + expect[13]=78 + + asString[14]='0000000000770000' + actual[14]=0000000000770000 + expect[14]=258048 + + asString[15]='0000000000780000' + actual[15]=0000000000780000 + expect[15]=780000 + + asString[16]='0765432198' + actual[16]=0765432198 + expect[16]=765432198 + + asString[17]='00076543219800' + actual[17]=00076543219800 + expect[17]=76543219800 + + asString[18]='0000001001007' + actual[18]=0000001001007 + expect[18]=262663 + + asString[19]='0000001001009' + actual[19]=0000001001009 + expect[19]=1001009 + + asString[20]='070' + actual[20]=070 + expect[20]=56 + + asString[21]='080' + actual[21]=080 + expect[21]=80 + + + +//------------------------------------------------------------------------------------------------- + test(); +//------------------------------------------------------------------------------------------------- + + +function showStatus(msg) +{ + return (statprefix + quote + msg + quote); +} + + +function test() +{ + enterFunc ('test'); + printBugNumber(BUGNUMBER); + printStatus (summary); + + + for (i=0; i !=asString.length; i++) + { + reportCompare (expect[i], actual[i], showStatus(asString[i])); + } + + exitFunc ('test'); +} |