S9.3_A5_T2.js (4046B)
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 number conversion from object value is the result 7 of conversion from primitive value 8 es5id: 9.3_A5_T2 9 description: > 10 new Number(), new Number(0), new Number(Number.NaN), new 11 Number(null), new Number(void 0) and others convert to Number by 12 implicit transformation 13 ---*/ 14 15 // CHECK#1 16 if (+(new Number()) !== 0) { 17 throw new Test262Error('#1: +(new Number()) === 0. Actual: ' + (+(new Number()))); 18 } 19 20 // CHECK#2 21 if (+(new Number(0)) !== 0) { 22 throw new Test262Error('#2: +(new Number(0)) === 0. Actual: ' + (+(new Number(0)))); 23 } 24 25 // CHECK#3 26 if (isNaN(+(new Number(Number.NaN)) !== true)) { 27 throw new Test262Error('#3: +(new Number(Number.NaN)) === Not-a-Number. Actual: ' + (+(new Number(Number.NaN)))); 28 } 29 30 // CHECK#4 31 if (+(new Number(null)) !== 0) { 32 throw new Test262Error('#4.1: +(new Number(null)) === 0. Actual: ' + (+(new Number(null)))); 33 } else { 34 if (1/+(new Number(null)) !== Number.POSITIVE_INFINITY) { 35 throw new Test262Error('#4.2: +(new Number(null)) === +0. Actual: -0'); 36 } 37 } 38 39 // CHECK#5 40 if (isNaN(+(new Number(void 0)) !== true)) { 41 throw new Test262Error('#5: +(new Number(void 0)) === Not-a-Number. Actual: ' + (+(new Number(void 0)))); 42 } 43 44 // CHECK#6 45 if (+(new Number(true)) !== 1) { 46 throw new Test262Error('#6: +(new Number(true)) === 1. Actual: ' + (+(new Number(true)))); 47 } 48 49 // CHECK#7 50 if (+(new Number(false)) !== +0) { 51 throw new Test262Error('#7.1: +(new Number(false)) === 0. Actual: ' + (+(new Number(false)))); 52 } else { 53 if (1/+(new Number(false)) !== Number.POSITIVE_INFINITY) { 54 throw new Test262Error('#7.2: +(new Number(false)) === +0. Actual: -0'); 55 } 56 } 57 58 // CHECK#8 59 if (+(new Boolean(true)) !== 1) { 60 throw new Test262Error('#8: +(new Boolean(true)) === 1. Actual: ' + (+(new Boolean(true)))); 61 } 62 63 // CHECK#9 64 if (+(new Boolean(false)) !== +0) { 65 throw new Test262Error('#9.1: +(new Boolean(false)) === 0. Actual: ' + (+(new Boolean(false)))); 66 } else { 67 if (1/+(new Boolean(false)) !== Number.POSITIVE_INFINITY) { 68 throw new Test262Error('#9.2: +(new Boolean(false)) === +0. Actual: -0'); 69 } 70 } 71 72 // CHECK#10 73 if (isNaN(+(new Array(2,4,8,16,32))) !== true) { 74 throw new Test262Error('#10: +(new Array(2,4,8,16,32)) === Not-a-Number. Actual: ' + (+(new Array(2,4,8,16,32)))); 75 } 76 77 // CHECK#11 78 var myobj1 = { 79 ToNumber : function(){return 12345;}, 80 toString : function(){return "67890";}, 81 valueOf : function(){return "[object MyObj]";} 82 }; 83 84 if (isNaN(+(myobj1)) !== true){ 85 throw new Test262Error("#11: +(myobj1) calls ToPrimitive with hint +. Exptected: Not-a-Number. Actual: " + (+(myobj1))); 86 } 87 88 // CHECK#12 89 var myobj2 = { 90 ToNumber : function(){return 12345;}, 91 toString : function(){return "67890";}, 92 valueOf : function(){return "9876543210";} 93 }; 94 95 if (+(myobj2) !== 9876543210){ 96 throw new Test262Error("#12: +(myobj2) calls ToPrimitive with hint +. Exptected: 9876543210. Actual: " + (+(myobj2))); 97 } 98 99 100 // CHECK#13 101 var myobj3 = { 102 ToNumber : function(){return 12345;}, 103 toString : function(){return "[object MyObj]";} 104 }; 105 106 if (isNaN(+(myobj3)) !== true){ 107 throw new Test262Error("#13: +(myobj3) calls ToPrimitive with hint +. Exptected: Not-a-Number. Actual: " + (+(myobj3))); 108 } 109 110 // CHECK#14 111 var myobj4 = { 112 ToNumber : function(){return 12345;}, 113 toString : function(){return "67890";} 114 }; 115 116 if (+(myobj4) !== 67890){ 117 throw new Test262Error("#14: +(myobj4) calls ToPrimitive with hint +. Exptected: 67890. Actual: " + (+(myobj4))); 118 } 119 120 // CHECK#15 121 var myobj5 = { 122 ToNumber : function(){return 12345;} 123 }; 124 125 if (isNaN(+(myobj5)) !== true){ 126 throw new Test262Error("#15: +(myobj5) calls ToPrimitive with hint +. Exptected: 12345. Actual: " + (+(myobj5))); 127 } 128 129 reportCompare(0, 0);