michael@0: // Order of Array.of operations. michael@0: michael@0: load(libdir + "asserts.js"); michael@0: michael@0: var log; michael@0: michael@0: var dstdata = []; michael@0: var dst = new Proxy(dstdata, { michael@0: defineProperty: function (t, name, desc) { michael@0: log.push(["def", name, desc.value]); michael@0: }, michael@0: set: function (t, name, value) { michael@0: log.push(["set", name, value]); michael@0: } michael@0: }); michael@0: michael@0: function Troop() { michael@0: return dst; michael@0: } michael@0: Troop.of = Array.of; michael@0: michael@0: log = []; michael@0: assertEq(Troop.of("monkeys", "baboons", "kangaroos"), dst); michael@0: assertDeepEq(log, [ michael@0: ["def", "0", "monkeys"], michael@0: ["def", "1", "baboons"], michael@0: ["def", "2", "kangaroos"], michael@0: ["set", "length", 3] michael@0: ]); michael@0: