tor-browser

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

S15.1.2.2_A3.1_T7.js (3148B)


      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: Operator use ToNumber
      6 esid: sec-parseint-string-radix
      7 description: If Type(value) is Object, evaluate ToPrimitive(value, Number)
      8 ---*/
      9 
     10 //CHECK#1
     11 var object = {
     12  valueOf: function() {
     13    return 2
     14  }
     15 };
     16 
     17 assert.sameValue(
     18  parseInt("11", object),
     19  parseInt("11", 2),
     20  'parseInt("11", {valueOf: function() {return 2}}) must return the same value returned by parseInt("11", 2)'
     21 );
     22 
     23 //CHECK#2
     24 var object = {
     25  valueOf: function() {
     26    return 2
     27  },
     28  toString: function() {
     29    return 1
     30  }
     31 };
     32 
     33 assert.sameValue(
     34  parseInt("11", object),
     35  parseInt("11", 2),
     36  'parseInt("11", {valueOf: function() {return 2}, toString: function() {return 1}}) must return the same value returned by parseInt("11", 2)'
     37 );
     38 
     39 //CHECK#3
     40 var object = {
     41  valueOf: function() {
     42    return 2
     43  },
     44  toString: function() {
     45    return {}
     46  }
     47 };
     48 
     49 assert.sameValue(
     50  parseInt("11", object),
     51  parseInt("11", 2),
     52  'parseInt("11", {valueOf: function() {return 2}, toString: function() {return {}}}) must return the same value returned by parseInt("11", 2)'
     53 );
     54 
     55 //CHECK#4
     56 try {
     57  var object = {
     58    valueOf: function() {
     59      return 2
     60    },
     61    toString: function() {
     62      throw "error"
     63    }
     64  };
     65 
     66  assert.sameValue(
     67    parseInt("11", object),
     68    parseInt("11", 2),
     69    'parseInt( "11", {valueOf: function() {return 2}, toString: function() {throw \\"error\\"}} ) must return the same value returned by parseInt("11", 2)'
     70  );
     71 }
     72 catch (e) {
     73  assert.notSameValue(e, "error", 'The value of `e` is not "error"');
     74 }
     75 
     76 //CHECK#5
     77 var object = {
     78  toString: function() {
     79    return 2
     80  }
     81 };
     82 
     83 assert.sameValue(
     84  parseInt("11", object),
     85  parseInt("11", 2),
     86  'parseInt("11", {toString: function() {return 2}}) must return the same value returned by parseInt("11", 2)'
     87 );
     88 
     89 //CHECK#6
     90 var object = {
     91  valueOf: function() {
     92    return {}
     93  },
     94  toString: function() {
     95    return 2
     96  }
     97 }
     98 
     99 assert.sameValue(
    100  parseInt("11", object),
    101  parseInt("11", 2),
    102  'parseInt("11", {valueOf: function() {return {}}, toString: function() {return 2}}) must return the same value returned by parseInt("11", 2)'
    103 );
    104 
    105 //CHECK#7
    106 try {
    107  var object = {
    108    valueOf: function() {
    109      throw "error"
    110    },
    111    toString: function() {
    112      return 2
    113    }
    114  };
    115  parseInt("11", object);
    116  Test262Error.thrower('#7.1: var object = {valueOf: function() {throw "error"}, toString: function() {return 2}}; parseInt("11", object) throw "error". Actual: ' + (parseInt("11", object)));
    117 }
    118 catch (e) {
    119  assert.sameValue(e, "error", 'The value of `e` is "error"');
    120 }
    121 
    122 //CHECK#8
    123 try {
    124  var object = {
    125    valueOf: function() {
    126      return {}
    127    },
    128    toString: function() {
    129      return {}
    130    }
    131  };
    132  parseInt("11", object);
    133  Test262Error.thrower('#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; parseInt("11", object) throw TypeError. Actual: ' + (parseInt("11", object)));
    134 }
    135 catch (e) {
    136  assert.sameValue(e instanceof TypeError, true, 'The result of `(e instanceof TypeError)` is true');
    137 }
    138 
    139 reportCompare(0, 0);