js/src/tests/ecma_5/extensions/destructuring-for-inof-__proto__.js

branch
TOR_BUG_3246
changeset 6
8bccb770b82d
equal deleted inserted replaced
-1:000000000000 0:70a50a884fd0
1 /*
2 * Any copyright is dedicated to the Public Domain.
3 * http://creativecommons.org/licenses/publicdomain/
4 */
5
6 var gTestfile = 'destructuring-for-inof-__proto__.js';
7 var BUGNUMBER = 963641;
8 var summary =
9 "__proto__ should work in destructuring patterns as the targets of " +
10 "for-in/for-of loops";
11
12 print(BUGNUMBER + ": " + summary);
13
14 /**************
15 * BEGIN TEST *
16 **************/
17
18 function objectWithProtoProperty(v)
19 {
20 var obj = {};
21 return Object.defineProperty(obj, "__proto__",
22 {
23 enumerable: true,
24 configurable: true,
25 writable: true,
26 value: v
27 });
28 }
29
30 function* objectWithProtoGenerator(v)
31 {
32 yield objectWithProtoProperty(v);
33 }
34
35 function* identityGenerator(v)
36 {
37 yield v;
38 }
39
40 for (var { __proto__: target } of objectWithProtoGenerator(null))
41 assertEq(target, null);
42
43 for ({ __proto__: target } of objectWithProtoGenerator("aacchhorrt"))
44 assertEq(target, "aacchhorrt");
45
46 for ({ __proto__: target } of identityGenerator(42))
47 assertEq(target, Number.prototype);
48
49 for (var { __proto__: target } in { prop: "kneedle" })
50 assertEq(target, String.prototype);
51
52 for ({ __proto__: target } in { prop: "snork" })
53 assertEq(target, String.prototype);
54
55 for ({ __proto__: target } in { prop: "ohia" })
56 assertEq(target, String.prototype);
57
58 function nested()
59 {
60 for (var { __proto__: target } of objectWithProtoGenerator(null))
61 assertEq(target, null);
62
63 for ({ __proto__: target } of objectWithProtoGenerator("aacchhorrt"))
64 assertEq(target, "aacchhorrt");
65
66 for ({ __proto__: target } of identityGenerator(42))
67 assertEq(target, Number.prototype);
68
69 for (var { __proto__: target } in { prop: "kneedle" })
70 assertEq(target, String.prototype);
71
72 for ({ __proto__: target } in { prop: "snork" })
73 assertEq(target, String.prototype);
74
75 for ({ __proto__: target } in { prop: "ohia" })
76 assertEq(target, String.prototype);
77 }
78 nested();
79
80 /******************************************************************************/
81
82 if (typeof reportCompare === "function")
83 reportCompare(true, true);
84
85 print("Tests complete");

mercurial