]> git.saurik.com Git - apple/javascriptcore.git/blame - tests/stress/weak-set-constructor.js
JavaScriptCore-7601.1.46.3.tar.gz
[apple/javascriptcore.git] / tests / stress / weak-set-constructor.js
CommitLineData
ed1e77d3
A
1// WeakSet constructor behaviors.
2
3if (typeof WeakSet !== 'function')
4 throw new Error("bad value" + typeof WeakSet);
5
6function testCallTypeError(item) {
7 var error = null;
8 try {
9 var set = WeakSet(item);
10 } catch (e) {
11 error = e;
12 }
13 if (!error)
14 throw new Error("error not thrown");
15 if (String(error) !== "TypeError: WeakSet cannot be called as a function")
16 throw new Error("bad error " + String(error));
17}
18var obj1 = {};
19var obj2 = [];
20var obj3 = new Date();
21var obj4 = new Error();
22
23var pass = [
24 null,
25 undefined,
26 [],
27 new Set(),
28 new Map(),
29 "",
30
31 [
32 obj1,
33 obj2,
34 obj3,
35 ],
36
37 [
38 obj1,
39 obj1,
40 obj1,
41 ],
42
43 [
44 obj2,
45 obj3,
46 obj4,
47 ],
48
49 new Map([
50 [obj1, 1],
51 [obj2, 2],
52 [obj3, 3],
53 ]),
54
55 new Map([
56 [obj1, 1],
57 [obj1, 2],
58 [obj1, 3],
59 ]),
60
61 new Set([
62 obj1,
63 obj2,
64 obj3,
65 ]),
66
67 new Set([
68 obj1,
69 obj1,
70 obj1,
71 ]),
72
73 new Map([
74 { 0: obj2, 1: 'O' },
75 { 0: obj3, 1: 'K' },
76 { 0: obj4, 1: 'K' },
77 ]),
78
79 new Set([
80 obj2,
81 obj3,
82 obj4,
83 ])
84];
85
86for (var value of pass) {
87 var set = new WeakSet(value);
88 testCallTypeError(value);
89}
90
91function testTypeError(item, message) {
92 var error = null;
93 try {
94 var set = new WeakSet(item);
95 } catch (e) {
96 error = e;
97 }
98 if (!error)
99 throw new Error("error not thrown");
100 if (!message)
101 message = "TypeError: Type error";
102 if (String(error) !== message)
103 throw new Error("bad error " + String(error));
104}
105
106var nonIterable = [
107 42,
108 Symbol("Cappuccino"),
109 true,
110 false,
111 {},
112 new Date(),
113 new Error(),
114 Object(Symbol("Matcha")),
115 (function () { }),
116];
117
118for (var item of nonIterable) {
119 testTypeError(item);
120 testCallTypeError(item);
121}
122
123var nonObjectKeys = [
124 [
125 0,
126 1,
127 1,
128 ],
129
130 [
131 1,
132 1,
133 1,
134 ],
135
136 [
137 'C',
138 'C',
139 'V',
140 ],
141];
142
143for (var item of nonObjectKeys) {
144 testTypeError(item, 'TypeError: Attempted to add a non-object key to a WeakSet');
145 testCallTypeError(item);
146}