blob: d636c9e85eefa08c7e305d600a6310939f41dbe8 [file] [log] [blame]
benjamin@webkit.orgc4dc1712015-05-18 06:23:31 +00001Verify that we do not recurse infinitely through one of the Array->string conversion.
2
3On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
4
5
6PASS var arrayDirectlyContainingItself = [];
7 arrayDirectlyContainingItself.push(arrayDirectlyContainingItself);
8 arrayDirectlyContainingItself.toString(); is ""
9PASS var arrayDirectlyContainingItself = [];
10 arrayDirectlyContainingItself.push(arrayDirectlyContainingItself);
11 arrayDirectlyContainingItself.toLocaleString(); is ""
12PASS var arrayDirectlyContainingItself = [];
13 arrayDirectlyContainingItself.push(arrayDirectlyContainingItself);
14 arrayDirectlyContainingItself.join(","); is ""
15PASS var arrayDirectlyContainingItself = [];
16 arrayDirectlyContainingItself.push(1);
17 arrayDirectlyContainingItself.push(arrayDirectlyContainingItself);
18 arrayDirectlyContainingItself.push("WebKit!");
19 arrayDirectlyContainingItself.push(arrayDirectlyContainingItself);
20 arrayDirectlyContainingItself.toString(); is "1,,WebKit!,"
21PASS var arrayDirectlyContainingItself = [];
22 arrayDirectlyContainingItself.push(1);
23 arrayDirectlyContainingItself.push(arrayDirectlyContainingItself);
24 arrayDirectlyContainingItself.push("WebKit!");
25 arrayDirectlyContainingItself.push(arrayDirectlyContainingItself);
26 arrayDirectlyContainingItself.toLocaleString(); is "1,,WebKit!,"
27PASS var arrayDirectlyContainingItself = [];
28 arrayDirectlyContainingItself.push(1);
29 arrayDirectlyContainingItself.push(arrayDirectlyContainingItself);
30 arrayDirectlyContainingItself.push("WebKit!");
31 arrayDirectlyContainingItself.push(arrayDirectlyContainingItself);
32 arrayDirectlyContainingItself.join("-"); is "1--WebKit!-"
33PASS var arrayIndirectlyContainingItself = [];
34 arrayIndirectlyContainingItself.push(1);
35 arrayIndirectlyContainingItself.push([1, 2, [5, 6, [arrayIndirectlyContainingItself]]]);
36 arrayIndirectlyContainingItself.push("WebKit!");
37 arrayIndirectlyContainingItself.toString(); is "1,1,2,5,6,,WebKit!"
38PASS var arrayIndirectlyContainingItself = [];
39 arrayIndirectlyContainingItself.push(1);
40 arrayIndirectlyContainingItself.push([1, 2, [5, 6, [arrayIndirectlyContainingItself]]]);
41 arrayIndirectlyContainingItself.push("WebKit!");
42 arrayIndirectlyContainingItself.toLocaleString(); is "1,1,2,5,6,,WebKit!"
43PASS var arrayIndirectlyContainingItself = [];
44 arrayIndirectlyContainingItself.push(1);
45 arrayIndirectlyContainingItself.push([1, 2, [5, 6, [arrayIndirectlyContainingItself]]]);
46 arrayIndirectlyContainingItself.push("WebKit!");
47 arrayIndirectlyContainingItself.join("="); is "1=1,2,5,6,=WebKit!"
48PASS var arrayIndirectlyContainingItself = [];
49 arrayIndirectlyContainingItself.push(1);
50 arrayIndirectlyContainingItself.push([1, 2, [5, 6, [arrayIndirectlyContainingItself]]]);
51 arrayIndirectlyContainingItself.push("WebKit!");
52 ["z", arrayIndirectlyContainingItself, 9].toString(); is "z,1,1,2,5,6,,WebKit!,9"
53PASS var arrayIndirectlyContainingItself = [];
54 arrayIndirectlyContainingItself.push(1);
55 arrayIndirectlyContainingItself.push([1, 2, [5, 6, [arrayIndirectlyContainingItself]]]);
56 arrayIndirectlyContainingItself.push("WebKit!");
57 ["z", arrayIndirectlyContainingItself, 9].toLocaleString(); is "z,1,1,2,5,6,,WebKit!,9"
58PASS var arrayIndirectlyContainingItself = [];
59 arrayIndirectlyContainingItself.push(1);
60 arrayIndirectlyContainingItself.push([1, 2, [5, 6, [arrayIndirectlyContainingItself]]]);
61 arrayIndirectlyContainingItself.push("WebKit!");
62 ["z", arrayIndirectlyContainingItself, 9].join("&"); is "z&1,1,2,5,6,,WebKit!&9"
63PASS var arrayIndirectlyConvertingItself = ["a"];
64 arrayIndirectlyConvertingItself.push({ array: arrayIndirectlyConvertingItself, toString: function() { return this.array.toString() } });
65 arrayIndirectlyConvertingItself.push({ array: arrayIndirectlyConvertingItself, toString: function() { return this.array.toLocaleString() } });
66 arrayIndirectlyConvertingItself.push({ array: arrayIndirectlyConvertingItself, toString: function() { return this.array.join("~") } });
67 arrayIndirectlyConvertingItself.push("WebKit!");
68 ["z", arrayIndirectlyConvertingItself, 9].toString(); is "z,a,,,,WebKit!,9"
69PASS var arrayIndirectlyConvertingItself = ["a"];
70 arrayIndirectlyConvertingItself.push({ array: arrayIndirectlyConvertingItself, toString: function() { return this.array.toString() } });
71 arrayIndirectlyConvertingItself.push({ array: arrayIndirectlyConvertingItself, toString: function() { return this.array.toLocaleString() } });
72 arrayIndirectlyConvertingItself.push({ array: arrayIndirectlyConvertingItself, toString: function() { return this.array.join("~") } });
73 arrayIndirectlyConvertingItself.push("WebKit!");
74 ["z", arrayIndirectlyConvertingItself, 9].toLocaleString(); is "z,a,,,,WebKit!,9"
75PASS var arrayIndirectlyConvertingItself = ["a"];
76 arrayIndirectlyConvertingItself.push({ array: arrayIndirectlyConvertingItself, toString: function() { return this.array.toString() } });
77 arrayIndirectlyConvertingItself.push({ array: arrayIndirectlyConvertingItself, toString: function() { return this.array.toLocaleString() } });
78 arrayIndirectlyConvertingItself.push({ array: arrayIndirectlyConvertingItself, toString: function() { return this.array.join("~") } });
79 arrayIndirectlyConvertingItself.push("WebKit!");
80 ["z", arrayIndirectlyConvertingItself, 9].join("*"); is "z*a,,,,WebKit!*9"
81PASS successfullyParsed is true
82
83TEST COMPLETE
84