S11.4.6_A2.2_T1.js (3132B)
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 +x uses [[Default Value]] 6 es5id: 11.4.6_A2.2_T1 7 description: If Type(value) is Object, evaluate ToPrimitive(value, Number) 8 ---*/ 9 10 //CHECK#1 11 var object = {valueOf: function() {return 1}}; 12 if (+object !== 1) { 13 throw new Test262Error('#1: var object = {valueOf: function() {return 1}}; +object === 1. Actual: ' + (+object)); 14 } 15 16 //CHECK#2 17 var object = {valueOf: function() {return 1}, toString: function() {return 0}}; 18 if (+object !== 1) { 19 throw new Test262Error('#2: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; +object === 1. Actual: ' + (+object)); 20 } 21 22 //CHECK#3 23 var object = {valueOf: function() {return 1}, toString: function() {return {}}}; 24 if (+object !== 1) { 25 throw new Test262Error('#3: var object = {valueOf: function() {return 1}, toString: function() {return {}}}; +object === 1. Actual: ' + (+object)); 26 } 27 28 //CHECK#4 29 try { 30 var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; 31 if (+object !== 1) { 32 throw new Test262Error('#4.1: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; +object === 1. Actual: ' + (+object)); 33 } 34 } 35 catch (e) { 36 if (e === "error") { 37 throw new Test262Error('#4.2: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; +object not throw "error"'); 38 } else { 39 throw new Test262Error('#4.3: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; +object not throw Error. Actual: ' + (e)); 40 } 41 } 42 43 //CHECK#5 44 var object = {toString: function() {return 1}}; 45 if (+object !== 1) { 46 throw new Test262Error('#5: var object = {toString: function() {return 1}}; +object === 1. Actual: ' + (+object)); 47 } 48 49 //CHECK#6 50 var object = {valueOf: function() {return {}}, toString: function() {return 1}} 51 if (+object !== 1) { 52 throw new Test262Error('#6: var object = {valueOf: function() {return {}}, toString: function() {return 1}}; +object === 1. Actual: ' + (+object)); 53 } 54 55 //CHECK#7 56 try { 57 var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; 58 +object; 59 throw new Test262Error('#7.1: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; +object throw "error". Actual: ' + (+object)); 60 } 61 catch (e) { 62 if (e !== "error") { 63 throw new Test262Error('#7.2: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; +object throw "error". Actual: ' + (e)); 64 } 65 } 66 67 //CHECK#8 68 try { 69 var object = {valueOf: function() {return {}}, toString: function() {return {}}}; 70 +object; 71 throw new Test262Error('#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; +object throw TypeError. Actual: ' + (+object)); 72 } 73 catch (e) { 74 if ((e instanceof TypeError) !== true) { 75 throw new Test262Error('#8.2: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; +object throw TypeError. Actual: ' + (e)); 76 } 77 } 78 79 reportCompare(0, 0);