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);