1/* The contents of this file are subject to the Netscape Public 2 * License Version 1.1 (the "License"); you may not use this file 3 * except in compliance with the License. You may obtain a copy of 4 * the License at http://www.mozilla.org/NPL/ 5 * 6 * Software distributed under the License is distributed on an "AS 7 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or 8 * implied. See the License for the specific language governing 9 * rights and limitations under the License. 10 * 11 * The Original Code is Mozilla Communicator client code, released March 12 * 31, 1998. 13 * 14 * The Initial Developer of the Original Code is Netscape Communications 15 * Corporation. Portions created by Netscape are 16 * Copyright (C) 1998 Netscape Communications Corporation. All 17 * Rights Reserved. 18 * 19 * Contributor(s): 20 * 21 */ 22/** 23 File Name: 7.7.3.js 24 ECMA Section: 7.7.3 Numeric Literals 25 26 Description: A numeric literal stands for a value of the Number type 27 This value is determined in two steps: first a 28 mathematical value (MV) is derived from the literal; 29 second, this mathematical value is rounded, ideally 30 using IEEE 754 round-to-nearest mode, to a reprentable 31 value of of the number type. 32 33 Author: christine@netscape.com 34 Date: 16 september 1997 35*/ 36 var SECTION = "7.7.3"; 37 var VERSION = "ECMA_1"; 38 startTest(); 39 var TITLE = "Numeric Literals"; 40 41 writeHeaderToLog( SECTION + " "+ TITLE); 42 43 var testcases = getTestCases(); 44 test(); 45 46 47function getTestCases() { 48 var array = new Array(); 49 var item = 0; 50 51 array[item++] = new TestCase( SECTION, "0", 0, 0 ); 52 array[item++] = new TestCase( SECTION, "1", 1, 1 ); 53 array[item++] = new TestCase( SECTION, "2", 2, 2 ); 54 array[item++] = new TestCase( SECTION, "3", 3, 3 ); 55 array[item++] = new TestCase( SECTION, "4", 4, 4 ); 56 array[item++] = new TestCase( SECTION, "5", 5, 5 ); 57 array[item++] = new TestCase( SECTION, "6", 6, 6 ); 58 array[item++] = new TestCase( SECTION, "7", 7, 7 ); 59 array[item++] = new TestCase( SECTION, "8", 8, 8 ); 60 array[item++] = new TestCase( SECTION, "9", 9, 9 ); 61 62 array[item++] = new TestCase( SECTION, "0.", 0, 0. ); 63 array[item++] = new TestCase( SECTION, "1.", 1, 1. ); 64 array[item++] = new TestCase( SECTION, "2.", 2, 2. ); 65 array[item++] = new TestCase( SECTION, "3.", 3, 3. ); 66 array[item++] = new TestCase( SECTION, "4.", 4, 4. ); 67 68 array[item++] = new TestCase( SECTION, "0.e0", 0, 0.e0 ); 69 array[item++] = new TestCase( SECTION, "1.e1", 10, 1.e1 ); 70 array[item++] = new TestCase( SECTION, "2.e2", 200, 2.e2 ); 71 array[item++] = new TestCase( SECTION, "3.e3", 3000, 3.e3 ); 72 array[item++] = new TestCase( SECTION, "4.e4", 40000, 4.e4 ); 73 74 array[item++] = new TestCase( SECTION, "0.1e0", .1, 0.1e0 ); 75 array[item++] = new TestCase( SECTION, "1.1e1", 11, 1.1e1 ); 76 array[item++] = new TestCase( SECTION, "2.2e2", 220, 2.2e2 ); 77 array[item++] = new TestCase( SECTION, "3.3e3", 3300, 3.3e3 ); 78 array[item++] = new TestCase( SECTION, "4.4e4", 44000, 4.4e4 ); 79 80 array[item++] = new TestCase( SECTION, ".1e0", .1, .1e0 ); 81 array[item++] = new TestCase( SECTION, ".1e1", 1, .1e1 ); 82 array[item++] = new TestCase( SECTION, ".2e2", 20, .2e2 ); 83 array[item++] = new TestCase( SECTION, ".3e3", 300, .3e3 ); 84 array[item++] = new TestCase( SECTION, ".4e4", 4000, .4e4 ); 85 86 array[item++] = new TestCase( SECTION, "0e0", 0, 0e0 ); 87 array[item++] = new TestCase( SECTION, "1e1", 10, 1e1 ); 88 array[item++] = new TestCase( SECTION, "2e2", 200, 2e2 ); 89 array[item++] = new TestCase( SECTION, "3e3", 3000, 3e3 ); 90 array[item++] = new TestCase( SECTION, "4e4", 40000, 4e4 ); 91 92 array[item++] = new TestCase( SECTION, "0e0", 0, 0e0 ); 93 array[item++] = new TestCase( SECTION, "1e1", 10, 1e1 ); 94 array[item++] = new TestCase( SECTION, "2e2", 200, 2e2 ); 95 array[item++] = new TestCase( SECTION, "3e3", 3000, 3e3 ); 96 array[item++] = new TestCase( SECTION, "4e4", 40000, 4e4 ); 97 98 array[item++] = new TestCase( SECTION, "0E0", 0, 0E0 ); 99 array[item++] = new TestCase( SECTION, "1E1", 10, 1E1 ); 100 array[item++] = new TestCase( SECTION, "2E2", 200, 2E2 ); 101 array[item++] = new TestCase( SECTION, "3E3", 3000, 3E3 ); 102 array[item++] = new TestCase( SECTION, "4E4", 40000, 4E4 ); 103 104 array[item++] = new TestCase( SECTION, "1.e-1", 0.1, 1.e-1 ); 105 array[item++] = new TestCase( SECTION, "2.e-2", 0.02, 2.e-2 ); 106 array[item++] = new TestCase( SECTION, "3.e-3", 0.003, 3.e-3 ); 107 array[item++] = new TestCase( SECTION, "4.e-4", 0.0004, 4.e-4 ); 108 109 array[item++] = new TestCase( SECTION, "0.1e-0", .1, 0.1e-0 ); 110 array[item++] = new TestCase( SECTION, "1.1e-1", 0.11, 1.1e-1 ); 111 array[item++] = new TestCase( SECTION, "2.2e-2", .022, 2.2e-2 ); 112 array[item++] = new TestCase( SECTION, "3.3e-3", .0033, 3.3e-3 ); 113 array[item++] = new TestCase( SECTION, "4.4e-4", .00044, 4.4e-4 ); 114 115 array[item++] = new TestCase( SECTION, ".1e-0", .1, .1e-0 ); 116 array[item++] = new TestCase( SECTION, ".1e-1", .01, .1e-1 ); 117 array[item++] = new TestCase( SECTION, ".2e-2", .002, .2e-2 ); 118 array[item++] = new TestCase( SECTION, ".3e-3", .0003, .3e-3 ); 119 array[item++] = new TestCase( SECTION, ".4e-4", .00004, .4e-4 ); 120 121 array[item++] = new TestCase( SECTION, "1.e+1", 10, 1.e+1 ); 122 array[item++] = new TestCase( SECTION, "2.e+2", 200, 2.e+2 ); 123 array[item++] = new TestCase( SECTION, "3.e+3", 3000, 3.e+3 ); 124 array[item++] = new TestCase( SECTION, "4.e+4", 40000, 4.e+4 ); 125 126 array[item++] = new TestCase( SECTION, "0.1e+0", .1, 0.1e+0 ); 127 array[item++] = new TestCase( SECTION, "1.1e+1", 11, 1.1e+1 ); 128 array[item++] = new TestCase( SECTION, "2.2e+2", 220, 2.2e+2 ); 129 array[item++] = new TestCase( SECTION, "3.3e+3", 3300, 3.3e+3 ); 130 array[item++] = new TestCase( SECTION, "4.4e+4", 44000, 4.4e+4 ); 131 132 array[item++] = new TestCase( SECTION, ".1e+0", .1, .1e+0 ); 133 array[item++] = new TestCase( SECTION, ".1e+1", 1, .1e+1 ); 134 array[item++] = new TestCase( SECTION, ".2e+2", 20, .2e+2 ); 135 array[item++] = new TestCase( SECTION, ".3e+3", 300, .3e+3 ); 136 array[item++] = new TestCase( SECTION, ".4e+4", 4000, .4e+4 ); 137 138 array[item++] = new TestCase( SECTION, "0x0", 0, 0x0 ); 139 array[item++] = new TestCase( SECTION, "0x1", 1, 0x1 ); 140 array[item++] = new TestCase( SECTION, "0x2", 2, 0x2 ); 141 array[item++] = new TestCase( SECTION, "0x3", 3, 0x3 ); 142 array[item++] = new TestCase( SECTION, "0x4", 4, 0x4 ); 143 array[item++] = new TestCase( SECTION, "0x5", 5, 0x5 ); 144 array[item++] = new TestCase( SECTION, "0x6", 6, 0x6 ); 145 array[item++] = new TestCase( SECTION, "0x7", 7, 0x7 ); 146 array[item++] = new TestCase( SECTION, "0x8", 8, 0x8 ); 147 array[item++] = new TestCase( SECTION, "0x9", 9, 0x9 ); 148 array[item++] = new TestCase( SECTION, "0xa", 10, 0xa ); 149 array[item++] = new TestCase( SECTION, "0xb", 11, 0xb ); 150 array[item++] = new TestCase( SECTION, "0xc", 12, 0xc ); 151 array[item++] = new TestCase( SECTION, "0xd", 13, 0xd ); 152 array[item++] = new TestCase( SECTION, "0xe", 14, 0xe ); 153 array[item++] = new TestCase( SECTION, "0xf", 15, 0xf ); 154 155 array[item++] = new TestCase( SECTION, "0X0", 0, 0X0 ); 156 array[item++] = new TestCase( SECTION, "0X1", 1, 0X1 ); 157 array[item++] = new TestCase( SECTION, "0X2", 2, 0X2 ); 158 array[item++] = new TestCase( SECTION, "0X3", 3, 0X3 ); 159 array[item++] = new TestCase( SECTION, "0X4", 4, 0X4 ); 160 array[item++] = new TestCase( SECTION, "0X5", 5, 0X5 ); 161 array[item++] = new TestCase( SECTION, "0X6", 6, 0X6 ); 162 array[item++] = new TestCase( SECTION, "0X7", 7, 0X7 ); 163 array[item++] = new TestCase( SECTION, "0X8", 8, 0X8 ); 164 array[item++] = new TestCase( SECTION, "0X9", 9, 0X9 ); 165 array[item++] = new TestCase( SECTION, "0Xa", 10, 0Xa ); 166 array[item++] = new TestCase( SECTION, "0Xb", 11, 0Xb ); 167 array[item++] = new TestCase( SECTION, "0Xc", 12, 0Xc ); 168 array[item++] = new TestCase( SECTION, "0Xd", 13, 0Xd ); 169 array[item++] = new TestCase( SECTION, "0Xe", 14, 0Xe ); 170 array[item++] = new TestCase( SECTION, "0Xf", 15, 0Xf ); 171 172 array[item++] = new TestCase( SECTION, "0x0", 0, 0x0 ); 173 array[item++] = new TestCase( SECTION, "0x1", 1, 0x1 ); 174 array[item++] = new TestCase( SECTION, "0x2", 2, 0x2 ); 175 array[item++] = new TestCase( SECTION, "0x3", 3, 0x3 ); 176 array[item++] = new TestCase( SECTION, "0x4", 4, 0x4 ); 177 array[item++] = new TestCase( SECTION, "0x5", 5, 0x5 ); 178 array[item++] = new TestCase( SECTION, "0x6", 6, 0x6 ); 179 array[item++] = new TestCase( SECTION, "0x7", 7, 0x7 ); 180 array[item++] = new TestCase( SECTION, "0x8", 8, 0x8 ); 181 array[item++] = new TestCase( SECTION, "0x9", 9, 0x9 ); 182 array[item++] = new TestCase( SECTION, "0xA", 10, 0xA ); 183 array[item++] = new TestCase( SECTION, "0xB", 11, 0xB ); 184 array[item++] = new TestCase( SECTION, "0xC", 12, 0xC ); 185 array[item++] = new TestCase( SECTION, "0xD", 13, 0xD ); 186 array[item++] = new TestCase( SECTION, "0xE", 14, 0xE ); 187 array[item++] = new TestCase( SECTION, "0xF", 15, 0xF ); 188 189 array[item++] = new TestCase( SECTION, "0X0", 0, 0X0 ); 190 array[item++] = new TestCase( SECTION, "0X1", 1, 0X1 ); 191 array[item++] = new TestCase( SECTION, "0X2", 2, 0X2 ); 192 array[item++] = new TestCase( SECTION, "0X3", 3, 0X3 ); 193 array[item++] = new TestCase( SECTION, "0X4", 4, 0X4 ); 194 array[item++] = new TestCase( SECTION, "0X5", 5, 0X5 ); 195 array[item++] = new TestCase( SECTION, "0X6", 6, 0X6 ); 196 array[item++] = new TestCase( SECTION, "0X7", 7, 0X7 ); 197 array[item++] = new TestCase( SECTION, "0X8", 8, 0X8 ); 198 array[item++] = new TestCase( SECTION, "0X9", 9, 0X9 ); 199 array[item++] = new TestCase( SECTION, "0XA", 10, 0XA ); 200 array[item++] = new TestCase( SECTION, "0XB", 11, 0XB ); 201 array[item++] = new TestCase( SECTION, "0XC", 12, 0XC ); 202 array[item++] = new TestCase( SECTION, "0XD", 13, 0XD ); 203 array[item++] = new TestCase( SECTION, "0XE", 14, 0XE ); 204 array[item++] = new TestCase( SECTION, "0XF", 15, 0XF ); 205 206 207 array[item++] = new TestCase( SECTION, "00", 0, 00 ); 208 array[item++] = new TestCase( SECTION, "01", 1, 01 ); 209 array[item++] = new TestCase( SECTION, "02", 2, 02 ); 210 array[item++] = new TestCase( SECTION, "03", 3, 03 ); 211 array[item++] = new TestCase( SECTION, "04", 4, 04 ); 212 array[item++] = new TestCase( SECTION, "05", 5, 05 ); 213 array[item++] = new TestCase( SECTION, "06", 6, 06 ); 214 array[item++] = new TestCase( SECTION, "07", 7, 07 ); 215 216 array[item++] = new TestCase( SECTION, "000", 0, 000 ); 217 array[item++] = new TestCase( SECTION, "011", 9, 011 ); 218 array[item++] = new TestCase( SECTION, "022", 18, 022 ); 219 array[item++] = new TestCase( SECTION, "033", 27, 033 ); 220 array[item++] = new TestCase( SECTION, "044", 36, 044 ); 221 array[item++] = new TestCase( SECTION, "055", 45, 055 ); 222 array[item++] = new TestCase( SECTION, "066", 54, 066 ); 223 array[item++] = new TestCase( SECTION, "077", 63, 077 ); 224 225 array[item++] = new TestCase( SECTION, "0.00000000001", 0.00000000001, 0.00000000001 ); 226 array[item++] = new TestCase( SECTION, "0.00000000001e-2", 0.0000000000001, 0.00000000001e-2 ); 227 228 229 array[item++] = new TestCase( SECTION, 230 "123456789012345671.9999", 231 "123456789012345660", 232 123456789012345671.9999 +""); 233 array[item++] = new TestCase( SECTION, 234 "123456789012345672", 235 "123456789012345660", 236 123456789012345672 +""); 237 238 array[item++] = new TestCase( SECTION, 239 "123456789012345672.000000000000000000000000000", 240 "123456789012345660", 241 123456789012345672.000000000000000000000000000 +""); 242 243 array[item++] = new TestCase( SECTION, 244 "123456789012345672.01", 245 "123456789012345680", 246 123456789012345672.01 +""); 247 248 array[item++] = new TestCase( SECTION, 249 "123456789012345672.000000000000000000000000001+'' == 123456789012345680 || 123456789012345660", 250 true, 251 ( 123456789012345672.00000000000000000000000000 +"" == 1234567890 * 100000000 + 12345680 ) 252 || 253 ( 123456789012345672.00000000000000000000000000 +"" == 1234567890 * 100000000 + 12345660) ); 254 255 array[item++] = new TestCase( SECTION, 256 "123456789012345673", 257 "123456789012345680", 258 123456789012345673 +"" ); 259 260 array[item++] = new TestCase( SECTION, 261 "-123456789012345671.9999", 262 "-123456789012345660", 263 -123456789012345671.9999 +"" ); 264 265 array[item++] = new TestCase( SECTION, 266 "-123456789012345672", 267 "-123456789012345660", 268 -123456789012345672+""); 269 270 array[item++] = new TestCase( SECTION, 271 "-123456789012345672.000000000000000000000000000", 272 "-123456789012345660", 273 -123456789012345672.000000000000000000000000000 +""); 274 275 array[item++] = new TestCase( SECTION, 276 "-123456789012345672.01", 277 "-123456789012345680", 278 -123456789012345672.01 +"" ); 279 280 array[item++] = new TestCase( SECTION, 281 "-123456789012345672.000000000000000000000000001 == -123456789012345680 or -123456789012345660", 282 true, 283 (-123456789012345672.000000000000000000000000001 +"" == -1234567890 * 100000000 -12345680) 284 || 285 (-123456789012345672.000000000000000000000000001 +"" == -1234567890 * 100000000 -12345660)); 286 287 array[item++] = new TestCase( SECTION, 288 -123456789012345673, 289 "-123456789012345680", 290 -123456789012345673 +""); 291 292 array[item++] = new TestCase( SECTION, 293 "12345678901234567890", 294 "12345678901234567000", 295 12345678901234567890 +"" ); 296 297 298/* 299 array[item++] = new TestCase( SECTION, "12345678901234567", "12345678901234567", 12345678901234567+"" ); 300 array[item++] = new TestCase( SECTION, "123456789012345678", "123456789012345678", 123456789012345678+"" ); 301 array[item++] = new TestCase( SECTION, "1234567890123456789", "1234567890123456789", 1234567890123456789+"" ); 302 array[item++] = new TestCase( SECTION, "12345678901234567890", "12345678901234567890", 12345678901234567890+"" ); 303 array[item++] = new TestCase( SECTION, "123456789012345678900", "123456789012345678900", 123456789012345678900+"" ); 304 array[item++] = new TestCase( SECTION, "1234567890123456789000", "1234567890123456789000", 1234567890123456789000+"" ); 305*/ 306 array[item++] = new TestCase( SECTION, "0x1", 1, 0x1 ); 307 array[item++] = new TestCase( SECTION, "0x10", 16, 0x10 ); 308 array[item++] = new TestCase( SECTION, "0x100", 256, 0x100 ); 309 array[item++] = new TestCase( SECTION, "0x1000", 4096, 0x1000 ); 310 array[item++] = new TestCase( SECTION, "0x10000", 65536, 0x10000 ); 311 array[item++] = new TestCase( SECTION, "0x100000", 1048576, 0x100000 ); 312 array[item++] = new TestCase( SECTION, "0x1000000", 16777216, 0x1000000 ); 313 array[item++] = new TestCase( SECTION, "0x10000000", 268435456, 0x10000000 ); 314/* 315 array[item++] = new TestCase( SECTION, "0x100000000", 4294967296, 0x100000000 ); 316 array[item++] = new TestCase( SECTION, "0x1000000000", 68719476736, 0x1000000000 ); 317 array[item++] = new TestCase( SECTION, "0x10000000000", 1099511627776, 0x10000000000 ); 318*/ 319 return ( array ); 320} 321 322function test() { 323 for ( tc=0; tc < testcases.length; tc++ ) { 324 testcases[tc].actual = testcases[tc].actual; 325 326 testcases[tc].passed = writeTestCaseResult( 327 testcases[tc].expect, 328 testcases[tc].actual, 329 testcases[tc].description +" = "+ testcases[tc].actual ); 330 331 testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value "; 332 333 } 334 335 stopTest(); 336 return ( testcases ); 337} 338