tor-browser

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

S9.3_A5_T1.js (2947B)


      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_T1
      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    explicit transformation
     13 ---*/
     14 assert.sameValue(Number(new Number()), 0, 'Number(new Number()) must return 0');
     15 assert.sameValue(Number(new Number(0)), 0, 'Number(new Number(0)) must return 0');
     16 
     17 // CHECK#3
     18 assert.sameValue(Number(new Number(NaN)), NaN, 'Number(new Number(NaN)) returns NaN');
     19 
     20 assert.sameValue(Number(new Number(null)), 0, 'Number(new Number(null)) must return 0');
     21 
     22 // CHECK#5
     23 assert.sameValue(Number(new Number(void 0)), NaN, 'Number(new Number(void 0)) returns NaN');
     24 
     25 assert.sameValue(Number(new Number(true)), 1, 'Number(new Number(true)) must return 1');
     26 assert.sameValue(Number(new Number(false)), +0, 'Number(new Number(false)) must return +0');
     27 assert.sameValue(Number(new Boolean(true)), 1, 'Number(new Boolean(true)) must return 1');
     28 assert.sameValue(Number(new Boolean(false)), +0, 'Number(new Boolean(false)) must return +0');
     29 
     30 // CHECK#10
     31 assert.sameValue(Number(new Array(2, 4, 8, 16, 32)), NaN, 'Number(new Array(2, 4, 8, 16, 32)) returns NaN');
     32 
     33 // CHECK#11
     34 var myobj1 = {
     35  ToNumber: function() {
     36    return 12345;
     37  },
     38  toString: function() {
     39    return "67890";
     40  },
     41  valueOf: function() {
     42    return "[object MyObj]";
     43  }
     44 };
     45 
     46 assert.sameValue(Number(myobj1), NaN, 'Number("{ToNumber: function() {return 12345;}, toString: function() {return "67890";}, valueOf: function() {return "[object MyObj]";}}) returns NaN');
     47 
     48 // CHECK#12
     49 var myobj2 = {
     50  ToNumber: function() {
     51    return 12345;
     52  },
     53  toString: function() {
     54    return "67890";
     55  },
     56  valueOf: function() {
     57    return "9876543210";
     58  }
     59 };
     60 
     61 assert.sameValue(
     62  Number(myobj2),
     63  9876543210,
     64  'Number("{ToNumber: function() {return 12345;}, toString: function() {return "67890";}, valueOf: function() {return "9876543210";}}) must return 9876543210'
     65 );
     66 
     67 
     68 // CHECK#13
     69 var myobj3 = {
     70  ToNumber: function() {
     71    return 12345;
     72  },
     73  toString: function() {
     74    return "[object MyObj]";
     75  }
     76 };
     77 
     78 assert.sameValue(Number(myobj3), NaN, 'Number("{ToNumber: function() {return 12345;}, toString: function() {return "[object MyObj]";}}) returns NaN');
     79 
     80 // CHECK#14
     81 var myobj4 = {
     82  ToNumber: function() {
     83    return 12345;
     84  },
     85  toString: function() {
     86    return "67890";
     87  }
     88 };
     89 
     90 assert.sameValue(
     91  Number(myobj4),
     92  67890,
     93  'Number("{ToNumber: function() {return 12345;}, toString: function() {return "67890";}}) must return 67890'
     94 );
     95 
     96 // CHECK#15
     97 var myobj5 = {
     98  ToNumber: function() {
     99    return 12345;
    100  }
    101 };
    102 
    103 assert.sameValue(Number(myobj5), NaN, 'Number({ToNumber: function() {return 12345;}}) returns NaN');
    104 
    105 reportCompare(0, 0);