|
1 // |jit-test| |
|
2 // vim: set ts=8 sts=4 et sw=4 tw=99: |
|
3 |
|
4 function assertObjectsEqual(obj1, obj2) { |
|
5 assertEq(obj1.a, obj2.a); |
|
6 assertEq(obj1.b, obj2.b); |
|
7 assertEq(obj1.c, obj2.c); |
|
8 assertEq(obj1.d, obj2.d); |
|
9 assertEq(obj2.a, 1); |
|
10 assertEq(obj2.b, "bee"); |
|
11 assertEq(obj2.c, "crab"); |
|
12 assertEq(obj2.d, 12); |
|
13 } |
|
14 |
|
15 function forName(obj) { |
|
16 eval(''); |
|
17 var r = { }; |
|
18 for (x in obj) |
|
19 r[x] = obj[x]; |
|
20 return r; |
|
21 } |
|
22 |
|
23 function forGlobalName(obj) { |
|
24 var r = { }; |
|
25 for (x in obj) |
|
26 r[x] = obj[x]; |
|
27 return r; |
|
28 } |
|
29 |
|
30 function forProp(obj) { |
|
31 var r = { }; |
|
32 var c = { }; |
|
33 for (c.x in obj) |
|
34 r[c.x] = obj[c.x]; |
|
35 return r; |
|
36 } |
|
37 |
|
38 function forElem(obj, x) { |
|
39 var r = { }; |
|
40 var c = { }; |
|
41 for (c[x] in obj) |
|
42 r[c[x]] = obj[c[x]]; |
|
43 return r; |
|
44 } |
|
45 |
|
46 function forLocal(obj) { |
|
47 var r = { }; |
|
48 for (var x in obj) |
|
49 r[x] = obj[x]; |
|
50 return r; |
|
51 } |
|
52 |
|
53 function forArg(obj, x) { |
|
54 var r = { }; |
|
55 for (x in obj) |
|
56 r[x] = obj[x]; |
|
57 return r; |
|
58 } |
|
59 |
|
60 var obj = { a: 1, b: "bee", c: "crab", d: 12 }; |
|
61 assertObjectsEqual(obj, forName(obj)); |
|
62 assertObjectsEqual(obj, forGlobalName(obj)); |
|
63 assertObjectsEqual(obj, forProp(obj)); |
|
64 assertObjectsEqual(obj, forElem(obj, "v")); |
|
65 assertObjectsEqual(obj, forLocal(obj)); |
|
66 assertObjectsEqual(obj, forArg(obj)); |
|
67 |