/* -*- 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');
}
