S9.8_A5_T1.js (2920B)
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_T1 9 description: Some objects convert to String by explicit transformation 10 ---*/ 11 12 // CHECK#1 13 if (String(new Number()) !== "0") { 14 throw new Test262Error('#1: String(new Number()) === "0". Actual: ' + (String(new Number()))); 15 } 16 17 // CHECK#2 18 if (String(new Number(0)) !== "0") { 19 throw new Test262Error('#2: String(new Number(0)) === "0". Actual: ' + (String(new Number(0)))); 20 } 21 22 // CHECK#3 23 if (String(new Number(Number.NaN)) !== "NaN") { 24 throw new Test262Error('#3: String(new Number(Number.NaN)) === Not-a-Number. Actual: ' + (String(new Number(Number.NaN)))); 25 } 26 27 // CHECK#4 28 if (String(new Number(null)) !== "0") { 29 throw new Test262Error('#4: String(new Number(null)) === "0". Actual: ' + (String(new Number(null)))); 30 } 31 32 // CHECK#5 33 if (String(new Number(void 0)) !== "NaN") { 34 throw new Test262Error('#5: String(new Number(void 0)) === Not-a-Number. Actual: ' + (String(new Number(void 0)))); 35 } 36 37 // CHECK#6 38 if (String(new Number(true)) !== "1") { 39 throw new Test262Error('#6: String(new Number(true)) === "1". Actual: ' + (String(new Number(true)))); 40 } 41 42 // CHECK#7 43 if (String(new Number(false)) !== "0") { 44 throw new Test262Error('#7: String(new Number(false)) === "0". Actual: ' + (String(new Number(false)))); 45 } 46 47 // CHECK#8 48 if (String(new Boolean(true)) !== "true") { 49 throw new Test262Error('#8: String(new Boolean(true)) === "true". Actual: ' + (String(new Boolean(true)))); 50 } 51 52 // CHECK#9 53 if (String(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 (String(new Array(2, 4, 8, 16, 32)) !== "2,4,8,16,32") { 59 throw new Test262Error('#10: String(new Array(2,4,8,16,32)) === "2,4,8,16,32". Actual: ' + (String(new Array(2, 4, 8, 16, 32)))); 60 } 61 62 // CHECK#11 63 var myobj1 = { 64 toNumber: function() { 65 return 12345; 66 }, 67 toString: function() { 68 return 67890; 69 }, 70 valueOf: function() { 71 return "[object MyObj]"; 72 } 73 }; 74 75 if (String(myobj1) !== "67890") { 76 throw new Test262Error("#11: String(myobj) calls ToPrimitive with hint String"); 77 } 78 79 // CHECK#12 80 var myobj2 = { 81 toNumber: function() { 82 return 12345; 83 }, 84 toString: function() { 85 return {} 86 }, 87 valueOf: function() { 88 return "[object MyObj]"; 89 } 90 }; 91 92 if (String(myobj2) !== "[object MyObj]") { 93 throw new Test262Error("#12: String(myobj) calls ToPrimitive with hint String"); 94 } 95 96 // CHECK#13 97 var myobj3 = { 98 toNumber: function() { 99 return 12345; 100 }, 101 valueOf: function() { 102 return "[object MyObj]"; 103 } 104 }; 105 106 if (String(myobj3) !== "[object Object]") { 107 throw new Test262Error("#13: String(myobj) calls ToPrimitive with hint String"); 108 } 109 110 reportCompare(0, 0);