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