react / react-0.13.3 / examples / basic-commonjs / node_modules / reactify / node_modules / react-tools / node_modules / commoner / node_modules / private / test / run.js
81169 viewsvar assert = require("assert");1var makeAccessor = require("../private").makeAccessor;2var acc1 = makeAccessor();3var obj = {};4var hasOwn = obj.hasOwnProperty;56acc1(obj).foo = 42;7assert.deepEqual(obj, {});8assert.deepEqual(acc1(obj), { foo: 42 });9assert.deepEqual(acc1(acc1(obj)), {});10assert.deepEqual(acc1(obj), { foo: 42 });11assert.deepEqual(Object.keys(acc1(obj)), ["foo"]);12assert.strictEqual(Object.getOwnPropertyNames(acc1(obj)).length, 1);13assert.strictEqual(Object.getOwnPropertyNames(acc1(acc1(obj))).length, 0);14acc1(obj).bar = "baz";15assert.deepEqual(acc1(obj), { foo: 42, bar: "baz" });16delete acc1(obj).foo;17assert.deepEqual(acc1(obj), { bar: "baz" });1819try {20acc1(42);21throw new Error("threw wrong error");22} catch (err) {23assert.ok(err);24}2526var acc2 = makeAccessor();27assert.notStrictEqual(acc1, acc2);28assert.notStrictEqual(acc1(obj), acc2(obj));29assert.deepEqual(acc2(obj), {});30assert.strictEqual(Object.getOwnPropertyNames(obj).length, 0);31assert.strictEqual(Object.keys(obj).length, 0);32acc2(obj).bar = "asdf";33assert.deepEqual(acc2(obj), { bar: "asdf" });3435acc2.forget(obj);36acc2(obj).bar = "asdf";37var oldSecret = acc2(obj);38assert.strictEqual(oldSecret.bar, "asdf");39acc2.forget(obj);40var newSecret = acc2(obj);41assert.notStrictEqual(oldSecret, newSecret);42assert.ok(hasOwn.call(oldSecret, "bar"));43assert.ok(!hasOwn.call(newSecret, "bar"));44newSecret.bar = "zxcv";45assert.strictEqual(oldSecret.bar, "asdf");46assert.strictEqual(acc2(obj).bar, "zxcv");4748function creatorFn(object) {49return { self: object };50}5152var acc3 = makeAccessor(creatorFn);5354acc3(obj).xxx = "yyy";55assert.deepEqual(acc3(obj), {56self: obj,57xxx: "yyy"58});5960acc3.forget(obj);61assert.deepEqual(acc3(obj), {62self: obj63});6465var green = "\033[32m";66var reset = "\033[0m";67console.log(green + "ALL PASS" + reset);686970