michael@0: // Copyright 2009 the Sputnik authors. All rights reserved. michael@0: // This code is governed by the BSD license found in the LICENSE file. michael@0: michael@0: /** michael@0: * Result of String conversion from Object value is conversion michael@0: * from primitive value michael@0: * michael@0: * @path ch09/9.8/S9.8_A5_T2.js michael@0: * @description Some objects convert to String by implicit transformation michael@0: */ michael@0: michael@0: // CHECK#1 michael@0: if (new Number() + "" !== "0") { michael@0: $ERROR('#1: new Number() + "" === "0". Actual: ' + (new Number() + "")); michael@0: } michael@0: michael@0: // CHECK#2 michael@0: if (new Number(0) + "" !== "0") { michael@0: $ERROR('#2: new Number(0) + "" === "0". Actual: ' + (new Number(0) + "")); michael@0: } michael@0: michael@0: // CHECK#3 michael@0: if (new Number(Number.NaN) + "" !== "NaN") { michael@0: $ERROR('#3: new Number(Number.NaN) + "" === "NaN". Actual: ' + (new Number(Number.NaN) + "")); michael@0: } michael@0: michael@0: // CHECK#4 michael@0: if (new Number(null) + "" !== "0") { michael@0: $ERROR('#4: new Number(null) + "" === "0". Actual: ' + (new Number(null) + "")); michael@0: } michael@0: michael@0: // CHECK#5 michael@0: if (new Number(void 0) + "" !== "NaN") { michael@0: $ERROR('#5: new Number(void 0) + "" === "NaN. Actual: ' + (new Number(void 0) + "")); michael@0: } michael@0: michael@0: // CHECK#6 michael@0: if (new Number(true) + "" !== "1") { michael@0: $ERROR('#6: new Number(true) + "" === "1". Actual: ' + (new Number(true) + "")); michael@0: } michael@0: michael@0: // CHECK#7 michael@0: if (new Number(false) + "" !== "0") { michael@0: $ERROR('#7: new Number(false) + "" === "0". Actual: ' + (new Number(false) + "")); michael@0: } michael@0: michael@0: // CHECK#8 michael@0: if (new Boolean(true) + "" !== "true") { michael@0: $ERROR('#8: new Boolean(true) + "" === "true". Actual: ' + (new Boolean(true) + "")); michael@0: } michael@0: michael@0: // CHECK#9 michael@0: if (new Boolean(false) + "" !== "false") { michael@0: $ERROR('#9: Number(new Boolean(false)) === "false". Actual: ' + (Number(new Boolean(false)))); michael@0: } michael@0: michael@0: // CHECK#10 michael@0: if (new Array(2,4,8,16,32) + "" !== "2,4,8,16,32") { michael@0: $ERROR('#10: new Array(2,4,8,16,32) + "" === "2,4,8,16,32". Actual: ' + (new Array(2,4,8,16,32) + "")); michael@0: } michael@0: michael@0: // CHECK#11 michael@0: var myobj1 = { michael@0: toNumber : function(){return 12345;}, michael@0: toString : function(){return 67890;}, michael@0: valueOf : function(){return "[object MyObj]";} michael@0: }; michael@0: michael@0: if (myobj1 + "" !== "[object MyObj]"){ michael@0: $ERROR('#11: myobj1 + "" calls ToPrimitive with hint Number. Exptected: "[object MyObj]". Actual: ' + (myobj1 + "")); michael@0: } michael@0: michael@0: // CHECK#12 michael@0: var myobj2 = { michael@0: toNumber : function(){return 12345;}, michael@0: toString : function(){return 67890}, michael@0: valueOf : function(){return {}} michael@0: }; michael@0: michael@0: if (myobj2 + "" !== "67890"){ michael@0: $ERROR('#12: myobj2 + "" calls ToPrimitive with hint Number. Exptected: "67890". Actual: ' + (myobj2 + "")); michael@0: } michael@0: michael@0: // CHECK#13 michael@0: var myobj3 = { michael@0: toNumber : function(){return 12345;} michael@0: }; michael@0: michael@0: if (myobj3 + "" !== "[object Object]"){ michael@0: $ERROR('#13: myobj3 + "" calls ToPrimitive with hint Number. Exptected: "[object Object]". Actual: ' + (myobj3 + "")); michael@0: } michael@0: