S9.3_A5_T1.js (2947B)
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_T1 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 explicit transformation 13 ---*/ 14 assert.sameValue(Number(new Number()), 0, 'Number(new Number()) must return 0'); 15 assert.sameValue(Number(new Number(0)), 0, 'Number(new Number(0)) must return 0'); 16 17 // CHECK#3 18 assert.sameValue(Number(new Number(NaN)), NaN, 'Number(new Number(NaN)) returns NaN'); 19 20 assert.sameValue(Number(new Number(null)), 0, 'Number(new Number(null)) must return 0'); 21 22 // CHECK#5 23 assert.sameValue(Number(new Number(void 0)), NaN, 'Number(new Number(void 0)) returns NaN'); 24 25 assert.sameValue(Number(new Number(true)), 1, 'Number(new Number(true)) must return 1'); 26 assert.sameValue(Number(new Number(false)), +0, 'Number(new Number(false)) must return +0'); 27 assert.sameValue(Number(new Boolean(true)), 1, 'Number(new Boolean(true)) must return 1'); 28 assert.sameValue(Number(new Boolean(false)), +0, 'Number(new Boolean(false)) must return +0'); 29 30 // CHECK#10 31 assert.sameValue(Number(new Array(2, 4, 8, 16, 32)), NaN, 'Number(new Array(2, 4, 8, 16, 32)) returns NaN'); 32 33 // CHECK#11 34 var myobj1 = { 35 ToNumber: function() { 36 return 12345; 37 }, 38 toString: function() { 39 return "67890"; 40 }, 41 valueOf: function() { 42 return "[object MyObj]"; 43 } 44 }; 45 46 assert.sameValue(Number(myobj1), NaN, 'Number("{ToNumber: function() {return 12345;}, toString: function() {return "67890";}, valueOf: function() {return "[object MyObj]";}}) returns NaN'); 47 48 // CHECK#12 49 var myobj2 = { 50 ToNumber: function() { 51 return 12345; 52 }, 53 toString: function() { 54 return "67890"; 55 }, 56 valueOf: function() { 57 return "9876543210"; 58 } 59 }; 60 61 assert.sameValue( 62 Number(myobj2), 63 9876543210, 64 'Number("{ToNumber: function() {return 12345;}, toString: function() {return "67890";}, valueOf: function() {return "9876543210";}}) must return 9876543210' 65 ); 66 67 68 // CHECK#13 69 var myobj3 = { 70 ToNumber: function() { 71 return 12345; 72 }, 73 toString: function() { 74 return "[object MyObj]"; 75 } 76 }; 77 78 assert.sameValue(Number(myobj3), NaN, 'Number("{ToNumber: function() {return 12345;}, toString: function() {return "[object MyObj]";}}) returns NaN'); 79 80 // CHECK#14 81 var myobj4 = { 82 ToNumber: function() { 83 return 12345; 84 }, 85 toString: function() { 86 return "67890"; 87 } 88 }; 89 90 assert.sameValue( 91 Number(myobj4), 92 67890, 93 'Number("{ToNumber: function() {return 12345;}, toString: function() {return "67890";}}) must return 67890' 94 ); 95 96 // CHECK#15 97 var myobj5 = { 98 ToNumber: function() { 99 return 12345; 100 } 101 }; 102 103 assert.sameValue(Number(myobj5), NaN, 'Number({ToNumber: function() {return 12345;}}) returns NaN'); 104 105 reportCompare(0, 0);