1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.2_T1.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,71 @@ 1.4 +// Copyright 2009 the Sputnik authors. All rights reserved. 1.5 +// This code is governed by the BSD license found in the LICENSE file. 1.6 + 1.7 +/** 1.8 + * Operator x + y uses [[Default Value]] 1.9 + * 1.10 + * @path ch11/11.6/11.6.1/S11.6.1_A2.2_T1.js 1.11 + * @description If Type(value) is Object, evaluate ToPrimitive(value, Number) 1.12 + */ 1.13 + 1.14 +//CHECK#1 1.15 +if ({valueOf: function() {return 1}} + 1 !== 2) { 1.16 + $ERROR('#1: {valueOf: function() {return 1}} + 1 === 2. Actual: ' + ({valueOf: function() {return 1}} + 1)); 1.17 +} 1.18 + 1.19 +//CHECK#2 1.20 +if ({valueOf: function() {return 1}, toString: function() {return 0}} + 1 !== 2) { 1.21 + $ERROR('#2: {valueOf: function() {return 1}, toString: function() {return 0}} + 1 === 2. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return 0}} + 1)); 1.22 +} 1.23 + 1.24 +//CHECK#3 1.25 +if ({valueOf: function() {return 1}, toString: function() {return {}}} + 1 !== 2) { 1.26 + $ERROR('#3: {valueOf: function() {return 1}, toString: function() {return {}}} + 1 === 2. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return {}}} + 1)); 1.27 +} 1.28 + 1.29 +//CHECK#4 1.30 +try { 1.31 + if ({valueOf: function() {return 1}, toString: function() {throw "error"}} + 1 !== 2) { 1.32 + $ERROR('#4.1: {valueOf: function() {return 1}, toString: function() {throw "error"}} + 1 === 2. Actual: ' + ({valueOf: function() {return 1}, toString: function() {throw "error"}} + 1)); 1.33 + } 1.34 +} 1.35 +catch (e) { 1.36 + if (e === "error") { 1.37 + $ERROR('#4.2: {valueOf: function() {return 1}, toString: function() {throw "error"}} + 1 not throw "error"'); 1.38 + } else { 1.39 + $ERROR('#4.3: {valueOf: function() {return 1}, toString: function() {throw "error"}} + 1 not throw Error. Actual: ' + (e)); 1.40 + } 1.41 +} 1.42 + 1.43 +//CHECK#5 1.44 +if (1 + {toString: function() {return 1}} !== 2) { 1.45 + $ERROR('#5: 1 + {toString: function() {return 1}} === 2. Actual: ' + (1 + {toString: function() {return 1}})); 1.46 +} 1.47 + 1.48 +//CHECK#6 1.49 +if (1 + {valueOf: function() {return {}}, toString: function() {return 1}} !== 2) { 1.50 + $ERROR('#6: 1 + {valueOf: function() {return {}}, toString: function() {return 1}} === 2. Actual: ' + (1 + {valueOf: function() {return {}}, toString: function() {return 1}})); 1.51 +} 1.52 + 1.53 +//CHECK#7 1.54 +try { 1.55 + 1 + {valueOf: function() {throw "error"}, toString: function() {return 1}}; 1.56 + $ERROR('#7.1: 1 + {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (1 + {valueOf: function() {throw "error"}, toString: function() {return 1}})); 1.57 +} 1.58 +catch (e) { 1.59 + if (e !== "error") { 1.60 + $ERROR('#7.2: 1 + {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (e)); 1.61 + } 1.62 +} 1.63 + 1.64 +//CHECK#8 1.65 +try { 1.66 + 1 + {valueOf: function() {return {}}, toString: function() {return {}}}; 1.67 + $ERROR('#8.1: 1 + {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (1 + {valueOf: function() {return {}}, toString: function() {return {}}})); 1.68 +} 1.69 +catch (e) { 1.70 + if ((e instanceof TypeError) !== true) { 1.71 + $ERROR('#8.2: 1 + {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (e)); 1.72 + } 1.73 +} 1.74 +