tor-browser

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

S15.1.2.2_A1_T7.js (2670B)


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