Bug 1892041 - Part 2: Update test262. r=spidermonkey-reviewers,dminor
[gecko.git] / js / src / tests / test262 / built-ins / Array / prototype / join / S15.4.4.5_A3.1_T2.js
blob7ceea3ef984b118ea8a0563363a7f66582153083
1 // Copyright 2009 the Sputnik authors.  All rights reserved.
2 // This code is governed by the BSD license found in the LICENSE file.
4 /*---
5 info: Operator use ToString from separator
6 esid: sec-array.prototype.join
7 description: >
8     If Type(separator) is Object, evaluate ToPrimitive(separator,
9     String)
10 ---*/
12 var x = new Array(0, 1, 2, 3);
13 var object = {
14   valueOf() {
15     return "+"
16   }
19 assert.sameValue(
20   x.join(object),
21   "0[object Object]1[object Object]2[object Object]3",
22   'x.join({valueOf() {return "+"}}) must return "0[object Object]1[object Object]2[object Object]3"'
25 var object = {
26   valueOf() {
27     return "+"
28   },
29   toString() {
30     return "*"
31   }
34 assert.sameValue(
35   x.join(object),
36   "0*1*2*3",
37   'x.join("{valueOf() {return "+"}, toString() {return "*"}}) must return "0*1*2*3"'
40 var object = {
41   valueOf() {
42     return "+"
43   },
44   toString() {
45     return {}
46   }
49 assert.sameValue(
50   x.join(object),
51   "0+1+2+3",
52   'x.join({valueOf() {return "+"}, toString() {return {}}}) must return "0+1+2+3"'
55 try {
56   var object = {
57     valueOf() {
58       throw "error"
59     },
60     toString() {
61       return "*"
62     }
63   };
65   assert.sameValue(
66     x.join(object),
67     "0*1*2*3",
68     'x.join("{valueOf() {throw "error"}, toString() {return "*"}}) must return "0*1*2*3"'
69   );
71 catch (e) {
72   assert.notSameValue(e, "error", 'The value of e is not "error"');
75 var object = {
76   toString() {
77     return "*"
78   }
80 assert.sameValue(x.join(object), "0*1*2*3", 'x.join({toString() {return "*"}}) must return "0*1*2*3"');
82 var object = {
83   valueOf() {
84     return {}
85   },
86   toString() {
87     return "*"
88   }
91 assert.sameValue(
92   x.join(object),
93   "0*1*2*3",
94   'x.join({valueOf() {return {}}, toString() {return "*"}}) must return "0*1*2*3"'
97 try {
98   var object = {
99     valueOf() {
100       return "+"
101     },
102     toString() {
103       throw "error"
104     }
105   };
106   x.join(object);
107   throw new Test262Error('#7.1: var object = {valueOf() {return "+"}, toString() {throw "error"}}; x.join(object) throw "error". Actual: ' + (x.join(object)));
109 catch (e) {
110   assert.sameValue(e, "error", 'The value of e is expected to be "error"');
113 try {
114   var object = {
115     valueOf() {
116       return {}
117     },
118     toString() {
119       return {}
120     }
121   };
122   x.join(object);
123   throw new Test262Error('#8.1: var object = {valueOf() {return {}}, toString() {return {}}}; x.join(object) throw TypeError. Actual: ' + (x.join(object)));
125 catch (e) {
126   assert.sameValue(
127     e instanceof TypeError,
128     true,
129     'The result of evaluating (e instanceof TypeError) is expected to be true'
130   );
133 try {
134   var object = {
135     toString() {
136       throw "error"
137     }
138   };
139   [].join(object);
140   throw new Test262Error('#9.1: var object = {toString() {throw "error"}}; [].join(object) throw "error". Actual: ' + ([].join(object)));
142 catch (e) {
143   assert.sameValue(e, "error", 'The value of e is expected to be "error"');
146 reportCompare(0, 0);