tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

S9.3_A5_T2.js (4046B)


      1 // Copyright 2009 the Sputnik authors.  All rights reserved.
      2 // This code is governed by the BSD license found in the LICENSE file.
      3 
      4 /*---
      5 info: |
      6    Result of number conversion from object value is the result
      7    of conversion from primitive value
      8 es5id: 9.3_A5_T2
      9 description: >
     10    new Number(), new Number(0), new Number(Number.NaN), new
     11    Number(null),  new Number(void 0) and others convert to Number by
     12    implicit transformation
     13 ---*/
     14 
     15 // CHECK#1
     16 if (+(new Number()) !== 0) {
     17  throw new Test262Error('#1: +(new Number()) === 0. Actual: ' + (+(new Number())));
     18 }
     19 
     20 // CHECK#2
     21 if (+(new Number(0)) !== 0) {
     22  throw new Test262Error('#2: +(new Number(0)) === 0. Actual: ' + (+(new Number(0))));
     23 }
     24 
     25 // CHECK#3
     26 if (isNaN(+(new Number(Number.NaN)) !== true)) {
     27  throw new Test262Error('#3: +(new Number(Number.NaN)) === Not-a-Number. Actual: ' + (+(new Number(Number.NaN))));
     28 }
     29 
     30 // CHECK#4
     31 if (+(new Number(null)) !== 0) {
     32  throw new Test262Error('#4.1: +(new Number(null)) === 0. Actual: ' + (+(new Number(null)))); 
     33 } else {
     34  if (1/+(new Number(null)) !== Number.POSITIVE_INFINITY) {
     35    throw new Test262Error('#4.2: +(new Number(null)) === +0. Actual: -0');
     36  }	
     37 }
     38 
     39 // CHECK#5
     40 if (isNaN(+(new Number(void 0)) !== true)) {
     41  throw new Test262Error('#5: +(new Number(void 0)) === Not-a-Number. Actual: ' + (+(new Number(void 0))));
     42 }
     43 
     44 // CHECK#6
     45 if (+(new Number(true)) !== 1) {
     46  throw new Test262Error('#6: +(new Number(true)) === 1. Actual: ' + (+(new Number(true))));
     47 }
     48 
     49 // CHECK#7
     50 if (+(new Number(false)) !== +0) {
     51  throw new Test262Error('#7.1: +(new Number(false)) === 0. Actual: ' + (+(new Number(false))));
     52 } else {
     53  if (1/+(new Number(false)) !== Number.POSITIVE_INFINITY) {
     54    throw new Test262Error('#7.2: +(new Number(false)) === +0. Actual: -0');
     55  }
     56 }
     57 
     58 // CHECK#8
     59 if (+(new Boolean(true)) !== 1) {
     60  throw new Test262Error('#8: +(new Boolean(true)) === 1. Actual: ' + (+(new Boolean(true))));
     61 }
     62 
     63 // CHECK#9
     64 if (+(new Boolean(false)) !== +0) {
     65  throw new Test262Error('#9.1: +(new Boolean(false)) === 0. Actual: ' + (+(new Boolean(false))));
     66 } else {
     67  if (1/+(new Boolean(false)) !== Number.POSITIVE_INFINITY) {
     68    throw new Test262Error('#9.2: +(new Boolean(false)) === +0. Actual: -0');
     69  }
     70 }
     71 
     72 // CHECK#10
     73 if (isNaN(+(new Array(2,4,8,16,32))) !== true) {
     74  throw new Test262Error('#10: +(new Array(2,4,8,16,32)) === Not-a-Number. Actual: ' + (+(new Array(2,4,8,16,32))));
     75 }
     76 
     77 // CHECK#11
     78 var myobj1 = {
     79                ToNumber : function(){return 12345;}, 
     80                toString : function(){return "67890";},
     81                valueOf  : function(){return "[object MyObj]";} 
     82            };
     83 
     84 if (isNaN(+(myobj1)) !== true){
     85  throw new Test262Error("#11: +(myobj1) calls ToPrimitive with hint +. Exptected: Not-a-Number. Actual: " + (+(myobj1)));
     86 }
     87 
     88 // CHECK#12
     89 var myobj2 = {
     90                ToNumber : function(){return 12345;}, 
     91                toString : function(){return "67890";},
     92                valueOf  : function(){return "9876543210";} 
     93            };
     94 
     95 if (+(myobj2) !== 9876543210){
     96  throw new Test262Error("#12: +(myobj2) calls ToPrimitive with hint +. Exptected: 9876543210. Actual: " + (+(myobj2)));
     97 }
     98 
     99 
    100 // CHECK#13
    101 var myobj3 = {
    102                ToNumber : function(){return 12345;}, 
    103                toString : function(){return "[object MyObj]";} 
    104            };
    105 
    106 if (isNaN(+(myobj3)) !== true){
    107  throw new Test262Error("#13: +(myobj3) calls ToPrimitive with hint +. Exptected: Not-a-Number. Actual: " + (+(myobj3)));
    108 }
    109 
    110 // CHECK#14
    111 var myobj4 = {
    112                ToNumber : function(){return 12345;}, 
    113                toString : function(){return "67890";} 
    114            };
    115 
    116 if (+(myobj4) !== 67890){
    117  throw new Test262Error("#14: +(myobj4) calls ToPrimitive with hint +. Exptected: 67890. Actual: " + (+(myobj4)));
    118 }
    119 
    120 // CHECK#15
    121 var myobj5 = {
    122                ToNumber : function(){return 12345;} 
    123            };
    124 
    125 if (isNaN(+(myobj5)) !== true){
    126  throw new Test262Error("#15: +(myobj5) calls ToPrimitive with hint +. Exptected: 12345. Actual: " + (+(myobj5)));
    127 }
    128 
    129 reportCompare(0, 0);