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