aboutsummaryrefslogtreecommitdiffstats
path: root/test/suite/sputnik_converted/09_Type_Conversion/9.8_ToString/S9.8_A5_T2.js
blob: 49878dd900e4de359a312e1925e163103cd9ff4d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
// Copyright 2009 the Sputnik authors.  All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/**
 * @name: S9.8_A5_T2;
 * @section: 9.8;
 * @assertion: Result of String conversion from Object value is conversion  
 * from primitive value;
 * @description: Some objects convert to String by implicit transformation;
*/


// Converted for Test262 from original Sputnik source

ES5Harness.registerTest( {
id: "S9.8_A5_T2",

path: "TestCases/09_Type_Conversion/9.8_ToString/S9.8_A5_T2.js",

assertion: "Result of String conversion from Object value is conversion",

description: "Some objects convert to String by implicit transformation",

test: function testcase() {
   // CHECK#1
if (new Number() + "" !== "0") {
  $ERROR('#1: new Number() + "" === "0". Actual: ' + (new Number() + ""));
}

// CHECK#2
if (new Number(0) + "" !== "0") {
  $ERROR('#2: new Number(0) + "" === "0". Actual: ' + (new Number(0) + ""));
}

// CHECK#3
if (new Number(Number.NaN) + "" !== "NaN") {
  $ERROR('#3: new Number(Number.NaN) + "" === "NaN". Actual: ' + (new Number(Number.NaN) + ""));
}

// CHECK#4
if (new Number(null) + "" !== "0") {
  $ERROR('#4: new Number(null) + "" === "0". Actual: ' + (new Number(null) + "")); 
}

// CHECK#5
if (new Number(void 0) + "" !== "NaN") {
  $ERROR('#5: new Number(void 0) + "" === "NaN. Actual: ' + (new Number(void 0) + ""));
}

// CHECK#6
if (new Number(true) + "" !== "1") {
  $ERROR('#6: new Number(true) + "" === "1". Actual: ' + (new Number(true) + ""));
}

// CHECK#7
if (new Number(false) + "" !== "0") {
  $ERROR('#7: new Number(false) + "" === "0". Actual: ' + (new Number(false) + ""));
}

// CHECK#8
if (new Boolean(true) + "" !== "true") {
  $ERROR('#8: new Boolean(true) + "" === "true". Actual: ' + (new Boolean(true) + ""));
}

// CHECK#9
if (new Boolean(false) + "" !== "false") {
  $ERROR('#9: Number(new Boolean(false)) === "false". Actual: ' + (Number(new Boolean(false))));
}

// CHECK#10
if (new Array(2,4,8,16,32) + "" !== "2,4,8,16,32") {
  $ERROR('#10: new Array(2,4,8,16,32) + "" === "2,4,8,16,32". Actual: ' + (new Array(2,4,8,16,32) + ""));
}

// CHECK#11
var myobj1 = {
                toNumber : function(){return 12345;}, 
                toString : function(){return 67890;},
                valueOf  : function(){return "[object MyObj]";} 
            };

if (myobj1 + "" !== "[object MyObj]"){
  $ERROR('#11: myobj1 + "" calls ToPrimitive with hint Number. Exptected: "[object MyObj]". Actual: ' + (myobj1 + ""));
}

// CHECK#12
var myobj2 = {
                toNumber : function(){return 12345;},
                toString : function(){return 67890}, 
                valueOf  : function(){return {}} 
            };

if (myobj2 + "" !== "67890"){
  $ERROR('#12: myobj2 + "" calls ToPrimitive with hint Number. Exptected: "67890". Actual: ' + (myobj2 + ""));
}

// CHECK#13
var myobj3 = {
                toNumber : function(){return 12345;} 
            };

if (myobj3 + "" !== "[object Object]"){
  $ERROR('#13: myobj3 + "" calls ToPrimitive with hint Number.  Exptected: "[object Object]". Actual: ' + (myobj3 + ""));
}

 }
});