js/src/tests/ecma/GlobalObject/15.1.2.3-2.js

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/js/src/tests/ecma/GlobalObject/15.1.2.3-2.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,257 @@
     1.4 +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
     1.5 +/* This Source Code Form is subject to the terms of the Mozilla Public
     1.6 + * License, v. 2.0. If a copy of the MPL was not distributed with this
     1.7 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     1.8 +
     1.9 +
    1.10 +/**
    1.11 +   File Name:          15.1.2.3-2.js
    1.12 +   ECMA Section:       15.1.2.3 Function properties of the global object:
    1.13 +   parseFloat( string )
    1.14 +
    1.15 +   Description:        The parseFloat function produces a number value dictated
    1.16 +   by the interpretation of the contents of the string
    1.17 +   argument defined as a decimal literal.
    1.18 +
    1.19 +   When the parseFloat function is called, the following
    1.20 +   steps are taken:
    1.21 +
    1.22 +   1.  Call ToString( string ).
    1.23 +   2.  Remove leading whitespace Result(1).
    1.24 +   3.  If neither Result(2) nor any prefix of Result(2)
    1.25 +   satisfies the syntax of a StrDecimalLiteral,
    1.26 +   return NaN.
    1.27 +   4.  Compute the longest prefix of Result(2) which might
    1.28 +   be Resusult(2) itself, that satisfies the syntax of
    1.29 +   a StrDecimalLiteral
    1.30 +   5.  Return the number value for the MV of Result(4).
    1.31 +
    1.32 +   Note that parseFloate may interpret only a leading
    1.33 +   portion of the string as a number value; it ignores any
    1.34 +   characters that cannot be interpreted as part of the
    1.35 +   notation of a decimal literal, and no indication is given
    1.36 +   that such characters were ignored.
    1.37 +
    1.38 +   StrDecimalLiteral::
    1.39 +   Infinity
    1.40 +   DecimalDigits.DecimalDigits opt ExponentPart opt
    1.41 +   .DecimalDigits ExponentPart opt
    1.42 +   DecimalDigits ExponentPart opt
    1.43 +
    1.44 +   Author:             christine@netscape.com
    1.45 +   Date:               28 october 1997
    1.46 +
    1.47 +*/
    1.48 +var SECTION = "15.1.2.3-2";
    1.49 +var VERSION = "ECMA_1";
    1.50 +startTest();
    1.51 +
    1.52 +var BUGNUMBER="none";
    1.53 +
    1.54 +new TestCase( SECTION, "parseFloat(true)",      Number.NaN,     parseFloat(true) );
    1.55 +new TestCase( SECTION, "parseFloat(false)",     Number.NaN,     parseFloat(false) );
    1.56 +new TestCase( SECTION, "parseFloat('string')",  Number.NaN,     parseFloat("string") );
    1.57 +
    1.58 +new TestCase( SECTION, "parseFloat('     Infinity')",      Number.POSITIVE_INFINITY,    parseFloat("Infinity") );
    1.59 +//     new TestCase( SECTION, "parseFloat(Infinity)",      Number.POSITIVE_INFINITY,    parseFloat(Infinity) );
    1.60 +
    1.61 +new TestCase( SECTION,  "parseFloat('          0')",          0,          parseFloat("          0") );
    1.62 +new TestCase( SECTION,  "parseFloat('          -0')",         -0,         parseFloat("          -0") );
    1.63 +new TestCase( SECTION,  "parseFloat('          +0')",          0,         parseFloat("          +0") );
    1.64 +
    1.65 +new TestCase( SECTION,  "parseFloat('          1')",          1,          parseFloat("          1") );
    1.66 +new TestCase( SECTION,  "parseFloat('          -1')",         -1,         parseFloat("          -1") );
    1.67 +new TestCase( SECTION,  "parseFloat('          +1')",          1,         parseFloat("          +1") );
    1.68 +
    1.69 +new TestCase( SECTION,  "parseFloat('          2')",          2,          parseFloat("          2") );
    1.70 +new TestCase( SECTION,  "parseFloat('          -2')",         -2,         parseFloat("          -2") );
    1.71 +new TestCase( SECTION,  "parseFloat('          +2')",          2,         parseFloat("          +2") );
    1.72 +
    1.73 +new TestCase( SECTION,  "parseFloat('          3')",          3,          parseFloat("          3") );
    1.74 +new TestCase( SECTION,  "parseFloat('          -3')",         -3,         parseFloat("          -3") );
    1.75 +new TestCase( SECTION,  "parseFloat('          +3')",          3,         parseFloat("          +3") );
    1.76 +
    1.77 +new TestCase( SECTION,  "parseFloat('          4')",          4,          parseFloat("          4") );
    1.78 +new TestCase( SECTION,  "parseFloat('          -4')",         -4,         parseFloat("          -4") );
    1.79 +new TestCase( SECTION,  "parseFloat('          +4')",          4,         parseFloat("          +4") );
    1.80 +
    1.81 +new TestCase( SECTION,  "parseFloat('          5')",          5,          parseFloat("          5") );
    1.82 +new TestCase( SECTION,  "parseFloat('          -5')",         -5,         parseFloat("          -5") );
    1.83 +new TestCase( SECTION,  "parseFloat('          +5')",          5,         parseFloat("          +5") );
    1.84 +
    1.85 +new TestCase( SECTION,  "parseFloat('          6')",          6,          parseFloat("          6") );
    1.86 +new TestCase( SECTION,  "parseFloat('          -6')",         -6,         parseFloat("          -6") );
    1.87 +new TestCase( SECTION,  "parseFloat('          +6')",          6,         parseFloat("          +6") );
    1.88 +
    1.89 +new TestCase( SECTION,  "parseFloat('          7')",          7,          parseFloat("          7") );
    1.90 +new TestCase( SECTION,  "parseFloat('          -7')",         -7,         parseFloat("          -7") );
    1.91 +new TestCase( SECTION,  "parseFloat('          +7')",          7,         parseFloat("          +7") );
    1.92 +
    1.93 +new TestCase( SECTION,  "parseFloat('          8')",          8,          parseFloat("          8") );
    1.94 +new TestCase( SECTION,  "parseFloat('          -8')",         -8,         parseFloat("          -8") );
    1.95 +new TestCase( SECTION,  "parseFloat('          +8')",          8,         parseFloat("          +8") );
    1.96 +
    1.97 +new TestCase( SECTION,  "parseFloat('          9')",          9,          parseFloat("          9") );
    1.98 +new TestCase( SECTION,  "parseFloat('          -9')",         -9,         parseFloat("          -9") );
    1.99 +new TestCase( SECTION,  "parseFloat('          +9')",          9,         parseFloat("          +9") );
   1.100 +
   1.101 +new TestCase( SECTION,  "parseFloat('          3.14159')",    3.14159,    parseFloat("          3.14159") );
   1.102 +new TestCase( SECTION,  "parseFloat('          -3.14159')",   -3.14159,   parseFloat("          -3.14159") );
   1.103 +new TestCase( SECTION,  "parseFloat('          +3.14159')",   3.14159,    parseFloat("          +3.14159") );
   1.104 +
   1.105 +new TestCase( SECTION,  "parseFloat('          3.')",         3,          parseFloat("          3.") );
   1.106 +new TestCase( SECTION,  "parseFloat('          -3.')",        -3,         parseFloat("          -3.") );
   1.107 +new TestCase( SECTION,  "parseFloat('          +3.')",        3,          parseFloat("          +3.") );
   1.108 +
   1.109 +new TestCase( SECTION,  "parseFloat('          3.e1')",       30,         parseFloat("          3.e1") );
   1.110 +new TestCase( SECTION,  "parseFloat('          -3.e1')",      -30,        parseFloat("          -3.e1") );
   1.111 +new TestCase( SECTION,  "parseFloat('          +3.e1')",      30,         parseFloat("          +3.e1") );
   1.112 +
   1.113 +new TestCase( SECTION,  "parseFloat('          3.e+1')",       30,         parseFloat("          3.e+1") );
   1.114 +new TestCase( SECTION,  "parseFloat('          -3.e+1')",      -30,        parseFloat("          -3.e+1") );
   1.115 +new TestCase( SECTION,  "parseFloat('          +3.e+1')",      30,         parseFloat("          +3.e+1") );
   1.116 +
   1.117 +new TestCase( SECTION,  "parseFloat('          3.e-1')",       .30,         parseFloat("          3.e-1") );
   1.118 +new TestCase( SECTION,  "parseFloat('          -3.e-1')",      -.30,        parseFloat("          -3.e-1") );
   1.119 +new TestCase( SECTION,  "parseFloat('          +3.e-1')",      .30,         parseFloat("          +3.e-1") );
   1.120 +
   1.121 +// StrDecimalLiteral:::  .DecimalDigits ExponentPart opt
   1.122 +
   1.123 +new TestCase( SECTION,  "parseFloat('          .00001')",     0.00001,    parseFloat("          .00001") );
   1.124 +new TestCase( SECTION,  "parseFloat('          +.00001')",    0.00001,    parseFloat("          +.00001") );
   1.125 +new TestCase( SECTION,  "parseFloat('          -0.0001')",    -0.00001,   parseFloat("          -.00001") );
   1.126 +
   1.127 +new TestCase( SECTION,  "parseFloat('          .01e2')",      1,          parseFloat("          .01e2") );
   1.128 +new TestCase( SECTION,  "parseFloat('          +.01e2')",     1,          parseFloat("          +.01e2") );
   1.129 +new TestCase( SECTION,  "parseFloat('          -.01e2')",     -1,         parseFloat("          -.01e2") );
   1.130 +
   1.131 +new TestCase( SECTION,  "parseFloat('          .01e+2')",      1,         parseFloat("          .01e+2") );
   1.132 +new TestCase( SECTION,  "parseFloat('          +.01e+2')",     1,         parseFloat("          +.01e+2") );
   1.133 +new TestCase( SECTION,  "parseFloat('          -.01e+2')",     -1,        parseFloat("          -.01e+2") );
   1.134 +
   1.135 +new TestCase( SECTION,  "parseFloat('          .01e-2')",      0.0001,    parseFloat("          .01e-2") );
   1.136 +new TestCase( SECTION,  "parseFloat('          +.01e-2')",     0.0001,    parseFloat("          +.01e-2") );
   1.137 +new TestCase( SECTION,  "parseFloat('          -.01e-2')",     -0.0001,   parseFloat("          -.01e-2") );
   1.138 +
   1.139 +//  StrDecimalLiteral:::    DecimalDigits ExponentPart opt
   1.140 +
   1.141 +new TestCase( SECTION,  "parseFloat('          1234e5')",     123400000,  parseFloat("          1234e5") );
   1.142 +new TestCase( SECTION,  "parseFloat('          +1234e5')",    123400000,  parseFloat("          +1234e5") );
   1.143 +new TestCase( SECTION,  "parseFloat('          -1234e5')",    -123400000, parseFloat("          -1234e5") );
   1.144 +
   1.145 +new TestCase( SECTION,  "parseFloat('          1234e+5')",    123400000,  parseFloat("          1234e+5") );
   1.146 +new TestCase( SECTION,  "parseFloat('          +1234e+5')",   123400000,  parseFloat("          +1234e+5") );
   1.147 +new TestCase( SECTION,  "parseFloat('          -1234e+5')",   -123400000, parseFloat("          -1234e+5") );
   1.148 +
   1.149 +new TestCase( SECTION,  "parseFloat('          1234e-5')",     0.01234,  parseFloat("          1234e-5") );
   1.150 +new TestCase( SECTION,  "parseFloat('          +1234e-5')",    0.01234,  parseFloat("          +1234e-5") );
   1.151 +new TestCase( SECTION,  "parseFloat('          -1234e-5')",    -0.01234, parseFloat("          -1234e-5") );
   1.152 +
   1.153 +
   1.154 +new TestCase( SECTION,  "parseFloat('          .01E2')",      1,          parseFloat("          .01E2") );
   1.155 +new TestCase( SECTION,  "parseFloat('          +.01E2')",     1,          parseFloat("          +.01E2") );
   1.156 +new TestCase( SECTION,  "parseFloat('          -.01E2')",     -1,         parseFloat("          -.01E2") );
   1.157 +
   1.158 +new TestCase( SECTION,  "parseFloat('          .01E+2')",      1,         parseFloat("          .01E+2") );
   1.159 +new TestCase( SECTION,  "parseFloat('          +.01E+2')",     1,         parseFloat("          +.01E+2") );
   1.160 +new TestCase( SECTION,  "parseFloat('          -.01E+2')",     -1,        parseFloat("          -.01E+2") );
   1.161 +
   1.162 +new TestCase( SECTION,  "parseFloat('          .01E-2')",      0.0001,    parseFloat("          .01E-2") );
   1.163 +new TestCase( SECTION,  "parseFloat('          +.01E-2')",     0.0001,    parseFloat("          +.01E-2") );
   1.164 +new TestCase( SECTION,  "parseFloat('          -.01E-2')",     -0.0001,   parseFloat("          -.01E-2") );
   1.165 +
   1.166 +//  StrDecimalLiteral:::    DecimalDigits ExponentPart opt
   1.167 +new TestCase( SECTION,  "parseFloat('          1234E5')",     123400000,  parseFloat("          1234E5") );
   1.168 +new TestCase( SECTION,  "parseFloat('          +1234E5')",    123400000,  parseFloat("          +1234E5") );
   1.169 +new TestCase( SECTION,  "parseFloat('          -1234E5')",    -123400000, parseFloat("          -1234E5") );
   1.170 +
   1.171 +new TestCase( SECTION,  "parseFloat('          1234E+5')",    123400000,  parseFloat("          1234E+5") );
   1.172 +new TestCase( SECTION,  "parseFloat('          +1234E+5')",   123400000,  parseFloat("          +1234E+5") );
   1.173 +new TestCase( SECTION,  "parseFloat('          -1234E+5')",   -123400000, parseFloat("          -1234E+5") );
   1.174 +
   1.175 +new TestCase( SECTION,  "parseFloat('          1234E-5')",     0.01234,  parseFloat("          1234E-5") );
   1.176 +new TestCase( SECTION,  "parseFloat('          +1234E-5')",    0.01234,  parseFloat("          +1234E-5") );
   1.177 +new TestCase( SECTION,  "parseFloat('          -1234E-5')",    -0.01234, parseFloat("          -1234E-5") );
   1.178 +
   1.179 +
   1.180 +// hex cases should all return NaN
   1.181 +
   1.182 +new TestCase( SECTION,  "parseFloat('          0x0')",        0,         parseFloat("          0x0"));
   1.183 +new TestCase( SECTION,  "parseFloat('          0x1')",        0,         parseFloat("          0x1"));
   1.184 +new TestCase( SECTION,  "parseFloat('          0x2')",        0,         parseFloat("          0x2"));
   1.185 +new TestCase( SECTION,  "parseFloat('          0x3')",        0,         parseFloat("          0x3"));
   1.186 +new TestCase( SECTION,  "parseFloat('          0x4')",        0,         parseFloat("          0x4"));
   1.187 +new TestCase( SECTION,  "parseFloat('          0x5')",        0,         parseFloat("          0x5"));
   1.188 +new TestCase( SECTION,  "parseFloat('          0x6')",        0,         parseFloat("          0x6"));
   1.189 +new TestCase( SECTION,  "parseFloat('          0x7')",        0,         parseFloat("          0x7"));
   1.190 +new TestCase( SECTION,  "parseFloat('          0x8')",        0,         parseFloat("          0x8"));
   1.191 +new TestCase( SECTION,  "parseFloat('          0x9')",        0,         parseFloat("          0x9"));
   1.192 +new TestCase( SECTION,  "parseFloat('          0xa')",        0,         parseFloat("          0xa"));
   1.193 +new TestCase( SECTION,  "parseFloat('          0xb')",        0,         parseFloat("          0xb"));
   1.194 +new TestCase( SECTION,  "parseFloat('          0xc')",        0,         parseFloat("          0xc"));
   1.195 +new TestCase( SECTION,  "parseFloat('          0xd')",        0,         parseFloat("          0xd"));
   1.196 +new TestCase( SECTION,  "parseFloat('          0xe')",        0,         parseFloat("          0xe"));
   1.197 +new TestCase( SECTION,  "parseFloat('          0xf')",        0,         parseFloat("          0xf"));
   1.198 +new TestCase( SECTION,  "parseFloat('          0xA')",        0,         parseFloat("          0xA"));
   1.199 +new TestCase( SECTION,  "parseFloat('          0xB')",        0,         parseFloat("          0xB"));
   1.200 +new TestCase( SECTION,  "parseFloat('          0xC')",        0,         parseFloat("          0xC"));
   1.201 +new TestCase( SECTION,  "parseFloat('          0xD')",        0,         parseFloat("          0xD"));
   1.202 +new TestCase( SECTION,  "parseFloat('          0xE')",        0,         parseFloat("          0xE"));
   1.203 +new TestCase( SECTION,  "parseFloat('          0xF')",        0,         parseFloat("          0xF"));
   1.204 +
   1.205 +new TestCase( SECTION,  "parseFloat('          0X0')",        0,         parseFloat("          0X0"));
   1.206 +new TestCase( SECTION,  "parseFloat('          0X1')",        0,         parseFloat("          0X1"));
   1.207 +new TestCase( SECTION,  "parseFloat('          0X2')",        0,         parseFloat("          0X2"));
   1.208 +new TestCase( SECTION,  "parseFloat('          0X3')",        0,         parseFloat("          0X3"));
   1.209 +new TestCase( SECTION,  "parseFloat('          0X4')",        0,         parseFloat("          0X4"));
   1.210 +new TestCase( SECTION,  "parseFloat('          0X5')",        0,         parseFloat("          0X5"));
   1.211 +new TestCase( SECTION,  "parseFloat('          0X6')",        0,         parseFloat("          0X6"));
   1.212 +new TestCase( SECTION,  "parseFloat('          0X7')",        0,         parseFloat("          0X7"));
   1.213 +new TestCase( SECTION,  "parseFloat('          0X8')",        0,         parseFloat("          0X8"));
   1.214 +new TestCase( SECTION,  "parseFloat('          0X9')",        0,         parseFloat("          0X9"));
   1.215 +new TestCase( SECTION,  "parseFloat('          0Xa')",        0,         parseFloat("          0Xa"));
   1.216 +new TestCase( SECTION,  "parseFloat('          0Xb')",        0,         parseFloat("          0Xb"));
   1.217 +new TestCase( SECTION,  "parseFloat('          0Xc')",        0,         parseFloat("          0Xc"));
   1.218 +new TestCase( SECTION,  "parseFloat('          0Xd')",        0,         parseFloat("          0Xd"));
   1.219 +new TestCase( SECTION,  "parseFloat('          0Xe')",        0,         parseFloat("          0Xe"));
   1.220 +new TestCase( SECTION,  "parseFloat('          0Xf')",        0,         parseFloat("          0Xf"));
   1.221 +new TestCase( SECTION,  "parseFloat('          0XA')",        0,         parseFloat("          0XA"));
   1.222 +new TestCase( SECTION,  "parseFloat('          0XB')",        0,         parseFloat("          0XB"));
   1.223 +new TestCase( SECTION,  "parseFloat('          0XC')",        0,         parseFloat("          0XC"));
   1.224 +new TestCase( SECTION,  "parseFloat('          0XD')",        0,         parseFloat("          0XD"));
   1.225 +new TestCase( SECTION,  "parseFloat('          0XE')",        0,         parseFloat("          0XE"));
   1.226 +new TestCase( SECTION,  "parseFloat('          0XF')",        0,         parseFloat("          0XF"));
   1.227 +
   1.228 +// A StringNumericLiteral may not use octal notation
   1.229 +
   1.230 +new TestCase( SECTION,  "parseFloat('          00')",        0,         parseFloat("          00"));
   1.231 +new TestCase( SECTION,  "parseFloat('          01')",        1,         parseFloat("          01"));
   1.232 +new TestCase( SECTION,  "parseFloat('          02')",        2,         parseFloat("          02"));
   1.233 +new TestCase( SECTION,  "parseFloat('          03')",        3,         parseFloat("          03"));
   1.234 +new TestCase( SECTION,  "parseFloat('          04')",        4,         parseFloat("          04"));
   1.235 +new TestCase( SECTION,  "parseFloat('          05')",        5,         parseFloat("          05"));
   1.236 +new TestCase( SECTION,  "parseFloat('          06')",        6,         parseFloat("          06"));
   1.237 +new TestCase( SECTION,  "parseFloat('          07')",        7,         parseFloat("          07"));
   1.238 +new TestCase( SECTION,  "parseFloat('          010')",       10,        parseFloat("          010"));
   1.239 +new TestCase( SECTION,  "parseFloat('          011')",       11,        parseFloat("          011"));
   1.240 +
   1.241 +// A StringNumericLIteral may have any number of leading 0 digits
   1.242 +
   1.243 +new TestCase( SECTION,  "parseFloat('          001')",        1,         parseFloat("          001"));
   1.244 +new TestCase( SECTION,  "parseFloat('          0001')",       1,         parseFloat("          0001"));
   1.245 +
   1.246 +// A StringNumericLIteral may have any number of leading 0 digits
   1.247 +
   1.248 +new TestCase( SECTION,  "parseFloat(001)",        1,         parseFloat(001));
   1.249 +new TestCase( SECTION,  "parseFloat(0001)",       1,         parseFloat(0001));
   1.250 +
   1.251 +// make sure it'          s reflexive
   1.252 +new TestCase( SECTION,  "parseFloat( '                    '          +Math.PI+'          ')",      Math.PI,        parseFloat( '                    '          +Math.PI+'          '));
   1.253 +new TestCase( SECTION,  "parseFloat( '                    '          +Math.LN2+'          ')",     Math.LN2,       parseFloat( '                    '          +Math.LN2+'          '));
   1.254 +new TestCase( SECTION,  "parseFloat( '                    '          +Math.LN10+'          ')",    Math.LN10,      parseFloat( '                    '          +Math.LN10+'          '));
   1.255 +new TestCase( SECTION,  "parseFloat( '                    '          +Math.LOG2E+'          ')",   Math.LOG2E,     parseFloat( '                    '          +Math.LOG2E+'          '));
   1.256 +new TestCase( SECTION,  "parseFloat( '                    '          +Math.LOG10E+'          ')",  Math.LOG10E,    parseFloat( '                    '          +Math.LOG10E+'          '));
   1.257 +new TestCase( SECTION,  "parseFloat( '                    '          +Math.SQRT2+'          ')",   Math.SQRT2,     parseFloat( '                    '          +Math.SQRT2+'          '));
   1.258 +new TestCase( SECTION,  "parseFloat( '                    '          +Math.SQRT1_2+'          ')", Math.SQRT1_2,   parseFloat( '                    '          +Math.SQRT1_2+'          '));
   1.259 +
   1.260 +test();

mercurial