michael@0: // |jit-test| michael@0: // vim: set ts=8 sts=4 et sw=4 tw=99: michael@0: michael@0: function assertObjectsEqual(obj1, obj2) { michael@0: assertEq(obj1.a, obj2.a); michael@0: assertEq(obj1.b, obj2.b); michael@0: assertEq(obj1.c, obj2.c); michael@0: assertEq(obj1.d, obj2.d); michael@0: assertEq(obj2.a, 1); michael@0: assertEq(obj2.b, "bee"); michael@0: assertEq(obj2.c, "crab"); michael@0: assertEq(obj2.d, 12); michael@0: } michael@0: michael@0: function forName(obj) { michael@0: eval(''); michael@0: var r = { }; michael@0: for (x in obj) michael@0: r[x] = obj[x]; michael@0: return r; michael@0: } michael@0: michael@0: function forGlobalName(obj) { michael@0: var r = { }; michael@0: for (x in obj) michael@0: r[x] = obj[x]; michael@0: return r; michael@0: } michael@0: michael@0: function forProp(obj) { michael@0: var r = { }; michael@0: var c = { }; michael@0: for (c.x in obj) michael@0: r[c.x] = obj[c.x]; michael@0: return r; michael@0: } michael@0: michael@0: function forElem(obj, x) { michael@0: var r = { }; michael@0: var c = { }; michael@0: for (c[x] in obj) michael@0: r[c[x]] = obj[c[x]]; michael@0: return r; michael@0: } michael@0: michael@0: function forLocal(obj) { michael@0: var r = { }; michael@0: for (var x in obj) michael@0: r[x] = obj[x]; michael@0: return r; michael@0: } michael@0: michael@0: function forArg(obj, x) { michael@0: var r = { }; michael@0: for (x in obj) michael@0: r[x] = obj[x]; michael@0: return r; michael@0: } michael@0: michael@0: var obj = { a: 1, b: "bee", c: "crab", d: 12 }; michael@0: assertObjectsEqual(obj, forName(obj)); michael@0: assertObjectsEqual(obj, forGlobalName(obj)); michael@0: assertObjectsEqual(obj, forProp(obj)); michael@0: assertObjectsEqual(obj, forElem(obj, "v")); michael@0: assertObjectsEqual(obj, forLocal(obj)); michael@0: assertObjectsEqual(obj, forArg(obj)); michael@0: