S9.8_A5_T2.js (2969B)
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: | 6 Result of String conversion from Object value is conversion 7 from primitive value 8 es5id: 9.8_A5_T2 9 description: Some objects convert to String by implicit transformation 10 ---*/ 11 12 // CHECK#1 13 if (new Number() + "" !== "0") { 14 throw new Test262Error('#1: new Number() + "" === "0". Actual: ' + (new Number() + "")); 15 } 16 17 // CHECK#2 18 if (new Number(0) + "" !== "0") { 19 throw new Test262Error('#2: new Number(0) + "" === "0". Actual: ' + (new Number(0) + "")); 20 } 21 22 // CHECK#3 23 if (new Number(Number.NaN) + "" !== "NaN") { 24 throw new Test262Error('#3: new Number(Number.NaN) + "" === "NaN". Actual: ' + (new Number(Number.NaN) + "")); 25 } 26 27 // CHECK#4 28 if (new Number(null) + "" !== "0") { 29 throw new Test262Error('#4: new Number(null) + "" === "0". Actual: ' + (new Number(null) + "")); 30 } 31 32 // CHECK#5 33 if (new Number(void 0) + "" !== "NaN") { 34 throw new Test262Error('#5: new Number(void 0) + "" === "NaN. Actual: ' + (new Number(void 0) + "")); 35 } 36 37 // CHECK#6 38 if (new Number(true) + "" !== "1") { 39 throw new Test262Error('#6: new Number(true) + "" === "1". Actual: ' + (new Number(true) + "")); 40 } 41 42 // CHECK#7 43 if (new Number(false) + "" !== "0") { 44 throw new Test262Error('#7: new Number(false) + "" === "0". Actual: ' + (new Number(false) + "")); 45 } 46 47 // CHECK#8 48 if (new Boolean(true) + "" !== "true") { 49 throw new Test262Error('#8: new Boolean(true) + "" === "true". Actual: ' + (new Boolean(true) + "")); 50 } 51 52 // CHECK#9 53 if (new Boolean(false) + "" !== "false") { 54 throw new Test262Error('#9: Number(new Boolean(false)) === "false". Actual: ' + (Number(new Boolean(false)))); 55 } 56 57 // CHECK#10 58 if (new Array(2,4,8,16,32) + "" !== "2,4,8,16,32") { 59 throw new Test262Error('#10: new Array(2,4,8,16,32) + "" === "2,4,8,16,32". Actual: ' + (new Array(2,4,8,16,32) + "")); 60 } 61 62 // CHECK#11 63 var myobj1 = { 64 toNumber : function(){return 12345;}, 65 toString : function(){return 67890;}, 66 valueOf : function(){return "[object MyObj]";} 67 }; 68 69 if (myobj1 + "" !== "[object MyObj]"){ 70 throw new Test262Error('#11: myobj1 + "" calls ToPrimitive with hint Number. Exptected: "[object MyObj]". Actual: ' + (myobj1 + "")); 71 } 72 73 // CHECK#12 74 var myobj2 = { 75 toNumber : function(){return 12345;}, 76 toString : function(){return 67890}, 77 valueOf : function(){return {}} 78 }; 79 80 if (myobj2 + "" !== "67890"){ 81 throw new Test262Error('#12: myobj2 + "" calls ToPrimitive with hint Number. Exptected: "67890". Actual: ' + (myobj2 + "")); 82 } 83 84 // CHECK#13 85 var myobj3 = { 86 toNumber : function(){return 12345;} 87 }; 88 89 if (myobj3 + "" !== "[object Object]"){ 90 throw new Test262Error('#13: myobj3 + "" calls ToPrimitive with hint Number. Exptected: "[object Object]". Actual: ' + (myobj3 + "")); 91 } 92 93 reportCompare(0, 0);