S11.4.5_A2.2_T1.js (4381B)
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.5_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 - 1) { 13 throw new Test262Error('#1: var object = {valueOf: function() {return 1}}; --object === 1 - 1. Actual: ' + (--object)); 14 } else { 15 if (object !== 1 - 1) { 16 throw new Test262Error('#1: var object = {valueOf: function() {return 1}}; --object; object === 1 - 1. Actual: ' + (object)); 17 } 18 } 19 20 //CHECK#2 21 var object = {valueOf: function() {return 1}, toString: function() {return 0}}; 22 if (--object !== 1 - 1) { 23 throw new Test262Error('#2: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; --object === 1 - 1. Actual: ' + (--object)); 24 } else { 25 if (object !== 1 - 1) { 26 throw new Test262Error('#2: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; --object; object === 1 - 1. Actual: ' + (object)); 27 } 28 } 29 30 //CHECK#3 31 var object = {valueOf: function() {return 1}, toString: function() {return {}}}; 32 if (--object !== 1 - 1) { 33 throw new Test262Error('#3: var object = {valueOf: function() {return 1}, toString: function() {return {}}}; --object === 1 - 1. Actual: ' + (--object)); 34 } else { 35 if (object !== 1 - 1) { 36 throw new Test262Error('#3: var object = {valueOf: function() {return 1}, toString: function() {return {}}}; --object; object === 1 - 1. Actual: ' + (object)); 37 } 38 } 39 40 //CHECK#4 41 try { 42 var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; 43 if (--object !== 1 - 1) { 44 throw new Test262Error('#4.1: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; --object === 1 - 1. Actual: ' + (--object)); 45 } else { 46 if (object !== 1 - 1) { 47 throw new Test262Error('#4.1: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; --object; object === 1 - 1. Actual: ' + (object)); 48 } 49 } 50 } 51 catch (e) { 52 if (e === "error") { 53 throw new Test262Error('#4.2: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; --object not throw "error"'); 54 } else { 55 throw new Test262Error('#4.3: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; --object not throw Error. Actual: ' + (e)); 56 } 57 } 58 59 //CHECK#5 60 var object = {toString: function() {return 1}}; 61 if (--object !== 1 - 1) { 62 throw new Test262Error('#5.1: var object = {toString: function() {return 1}}; --object === 1 - 1. Actual: ' + (--object)); 63 } else { 64 if (object !== 1 - 1) { 65 throw new Test262Error('#5.2: var object = {toString: function() {return 1}}; --object; object === 1 - 1. Actual: ' + (object)); 66 } 67 } 68 69 70 //CHECK#6 71 var object = {valueOf: function() {return {}}, toString: function() {return 1}} 72 if (--object !== 1 - 1) { 73 throw new Test262Error('#6.1: var object = {valueOf: function() {return {}}, toString: function() {return 1}}; --object === 1 - 1. Actual: ' + (--object)); 74 } else { 75 if (object !== 1 - 1) { 76 throw new Test262Error('#6.2: var object = {valueOf: function() {return {}}, toString: function() {return 1}}; --object; object === 1 - 1. Actual: ' + (object)); 77 } 78 } 79 80 //CHECK#7 81 try { 82 var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; 83 --object; 84 throw new Test262Error('#7.1: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; --object throw "error". Actual: ' + (--object)); 85 } 86 catch (e) { 87 if (e !== "error") { 88 throw new Test262Error('#7.2: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; --object throw "error". Actual: ' + (e)); 89 } 90 } 91 92 //CHECK#8 93 try { 94 var object = {valueOf: function() {return {}}, toString: function() {return {}}}; 95 --object; 96 throw new Test262Error('#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; --object throw TypeError. Actual: ' + (--object)); 97 } 98 catch (e) { 99 if ((e instanceof TypeError) !== true) { 100 throw new Test262Error('#8.2: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; --object throw TypeError. Actual: ' + (e)); 101 } 102 } 103 104 reportCompare(0, 0);