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