S11.4.8_A2.2_T1.js (3144B)
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.8_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 !== -2) { 13 throw new Test262Error('#1: var object = {valueOf: function() {return 1}}; ~object === -2. Actual: ' + (~object)); 14 } 15 16 //CHECK#2 17 var object = {valueOf: function() {return 1}, toString: function() {return 0}}; 18 if (~object !== -2) { 19 throw new Test262Error('#2: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; ~object === -2. Actual: ' + (~object)); 20 } 21 22 //CHECK#3 23 var object = {valueOf: function() {return 1}, toString: function() {return {}}}; 24 if (~object !== -2) { 25 throw new Test262Error('#3: var object = {valueOf: function() {return 1}, toString: function() {return {}}}; ~object === -2. Actual: ' + (~object)); 26 } 27 28 //CHECK#4 29 try { 30 var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; 31 if (~object !== -2) { 32 throw new Test262Error('#4.1: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; ~object === -2. 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 !== -2) { 46 throw new Test262Error('#5: var object = {toString: function() {return 1}}; ~object === -2. Actual: ' + (~object)); 47 } 48 49 //CHECK#6 50 var object = {valueOf: function() {return {}}, toString: function() {return 1}} 51 if (~object !== -2) { 52 throw new Test262Error('#6: var object = {valueOf: function() {return {}}, toString: function() {return 1}}; ~object === -2. 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);