S15.1.2.3_A1_T7.js (3531B)
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-parsefloat-string 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(parseFloat(object), NaN, "{valueOf: function() {return 1}}"); 17 18 //CHECK#2 19 var object = { 20 valueOf: function() { 21 return 1 22 }, 23 toString: function() { 24 return 0 25 } 26 }; 27 if (parseFloat(object) !== 0) { 28 throw new Test262Error('#2: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; parseFloat(object) === 0. Actual: ' + (parseFloat(object))); 29 } 30 31 //CHECK#3 32 var object = { 33 valueOf: function() { 34 return 1 35 }, 36 toString: function() { 37 return {} 38 } 39 }; 40 if (parseFloat(object) !== 1) { 41 throw new Test262Error('#3: var object = {valueOf: function() {return 1}, toString: function() {return {}}}; parseFloat(object) === 1. Actual: ' + (parseFloat(object))); 42 } 43 44 //CHECK#4 45 try { 46 var object = { 47 valueOf: function() { 48 throw "error" 49 }, 50 toString: function() { 51 return 1 52 } 53 }; 54 if (parseFloat(object) !== 1) { 55 throw new Test262Error('#4.1: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; parseFloat(object) === 1. Actual: ' + (parseFloat(object))); 56 } 57 } 58 catch (e) { 59 if (e === "error") { 60 throw new Test262Error('#4.2: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; parseFloat(object) not throw "error"'); 61 } else { 62 throw new Test262Error('#4.3: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; parseFloat(object) not throw Error. Actual: ' + (e)); 63 } 64 } 65 66 //CHECK#5 67 var object = { 68 toString: function() { 69 return 1 70 } 71 }; 72 if (parseFloat(object) !== 1) { 73 throw new Test262Error('#5: var object = {toString: function() {return 1}}; parseFloat(object) === 1. Actual: ' + (parseFloat(object))); 74 } 75 76 //CHECK#6 77 var object = { 78 valueOf: function() { 79 return {} 80 }, 81 toString: function() { 82 return 1 83 } 84 } 85 if (parseFloat(object) !== 1) { 86 throw new Test262Error('#6: var object = {valueOf: function() {return {}}, toString: function() {return 1}}; parseFloat(object) === 1. Actual: ' + (parseFloat(object))); 87 } 88 89 //CHECK#7 90 try { 91 var object = { 92 valueOf: function() { 93 return 1 94 }, 95 toString: function() { 96 throw "error" 97 } 98 }; 99 parseFloat(object); 100 throw new Test262Error('#7.1: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; parseFloat(object) throw "error". Actual: ' + (parseFloat(object))); 101 } 102 catch (e) { 103 if (e !== "error") { 104 throw new Test262Error('#7.2: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; parseFloat(object) throw "error". Actual: ' + (e)); 105 } 106 } 107 108 //CHECK#8 109 try { 110 var object = { 111 valueOf: function() { 112 return {} 113 }, 114 toString: function() { 115 return {} 116 } 117 }; 118 parseFloat(object); 119 throw new Test262Error('#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; parseFloat(object) throw TypeError. Actual: ' + (parseFloat(object))); 120 } 121 catch (e) { 122 if ((e instanceof TypeError) !== true) { 123 throw new Test262Error('#8.2: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; parseFloat(object) throw TypeError. Actual: ' + (e)); 124 } 125 } 126 127 reportCompare(0, 0);