aboutsummaryrefslogtreecommitdiff
path: root/node_modules/d/test
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/d/test')
-rw-r--r--node_modules/d/test/auto-bind.js12
-rw-r--r--node_modules/d/test/index.js182
-rw-r--r--node_modules/d/test/lazy.js82
3 files changed, 276 insertions, 0 deletions
diff --git a/node_modules/d/test/auto-bind.js b/node_modules/d/test/auto-bind.js
new file mode 100644
index 000000000..89edfb88b
--- /dev/null
+++ b/node_modules/d/test/auto-bind.js
@@ -0,0 +1,12 @@
+'use strict';
+
+var d = require('../');
+
+module.exports = function (t, a) {
+ var o = Object.defineProperties({}, t({
+ bar: d(function () { return this === o; }),
+ bar2: d(function () { return this; })
+ }));
+
+ a.deep([(o.bar)(), (o.bar2)()], [true, o]);
+};
diff --git a/node_modules/d/test/index.js b/node_modules/d/test/index.js
new file mode 100644
index 000000000..3db0af10a
--- /dev/null
+++ b/node_modules/d/test/index.js
@@ -0,0 +1,182 @@
+'use strict';
+
+var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
+
+module.exports = function (t, a) {
+ var o, c, cg, cs, ce, ceg, ces, cew, cw, e, eg, es, ew, v, vg, vs, w, df, dfg
+ , dfs;
+
+ o = Object.create(Object.prototype, {
+ c: t('c', c = {}),
+ cgs: t.gs('c', cg = function () {}, cs = function () {}),
+ ce: t('ce', ce = {}),
+ cegs: t.gs('ce', ceg = function () {}, ces = function () {}),
+ cew: t('cew', cew = {}),
+ cw: t('cw', cw = {}),
+ e: t('e', e = {}),
+ egs: t.gs('e', eg = function () {}, es = function () {}),
+ ew: t('ew', ew = {}),
+ v: t('', v = {}),
+ vgs: t.gs('', vg = function () {}, vs = function () {}),
+ w: t('w', w = {}),
+
+ df: t(df = {}),
+ dfgs: t.gs(dfg = function () {}, dfs = function () {})
+ });
+
+ return {
+ c: function (a) {
+ var d = getOwnPropertyDescriptor(o, 'c');
+ a(d.value, c, "Value");
+ a(d.get, undefined, "Get");
+ a(d.set, undefined, "Set");
+ a(d.configurable, true, "Configurable");
+ a(d.enumerable, false, "Enumerable");
+ a(d.writable, false, "Writable");
+
+ d = getOwnPropertyDescriptor(o, 'cgs');
+ a(d.value, undefined, "GS Value");
+ a(d.get, cg, "GS Get");
+ a(d.set, cs, "GS Set");
+ a(d.configurable, true, "GS Configurable");
+ a(d.enumerable, false, "GS Enumerable");
+ a(d.writable, undefined, "GS Writable");
+ },
+ ce: function (a) {
+ var d = getOwnPropertyDescriptor(o, 'ce');
+ a(d.value, ce, "Value");
+ a(d.get, undefined, "Get");
+ a(d.set, undefined, "Set");
+ a(d.configurable, true, "Configurable");
+ a(d.enumerable, true, "Enumerable");
+ a(d.writable, false, "Writable");
+
+ d = getOwnPropertyDescriptor(o, 'cegs');
+ a(d.value, undefined, "GS Value");
+ a(d.get, ceg, "GS Get");
+ a(d.set, ces, "GS Set");
+ a(d.configurable, true, "GS Configurable");
+ a(d.enumerable, true, "GS Enumerable");
+ a(d.writable, undefined, "GS Writable");
+ },
+ cew: function (a) {
+ var d = getOwnPropertyDescriptor(o, 'cew');
+ a(d.value, cew, "Value");
+ a(d.get, undefined, "Get");
+ a(d.set, undefined, "Set");
+ a(d.configurable, true, "Configurable");
+ a(d.enumerable, true, "Enumerable");
+ a(d.writable, true, "Writable");
+ },
+ cw: function (a) {
+ var d = getOwnPropertyDescriptor(o, 'cw');
+ a(d.value, cw, "Value");
+ a(d.get, undefined, "Get");
+ a(d.set, undefined, "Set");
+ a(d.configurable, true, "Configurable");
+ a(d.enumerable, false, "Enumerable");
+ a(d.writable, true, "Writable");
+ },
+ e: function (a) {
+ var d = getOwnPropertyDescriptor(o, 'e');
+ a(d.value, e, "Value");
+ a(d.get, undefined, "Get");
+ a(d.set, undefined, "Set");
+ a(d.configurable, false, "Configurable");
+ a(d.enumerable, true, "Enumerable");
+ a(d.writable, false, "Writable");
+
+ d = getOwnPropertyDescriptor(o, 'egs');
+ a(d.value, undefined, "GS Value");
+ a(d.get, eg, "GS Get");
+ a(d.set, es, "GS Set");
+ a(d.configurable, false, "GS Configurable");
+ a(d.enumerable, true, "GS Enumerable");
+ a(d.writable, undefined, "GS Writable");
+ },
+ ew: function (a) {
+ var d = getOwnPropertyDescriptor(o, 'ew');
+ a(d.value, ew, "Value");
+ a(d.get, undefined, "Get");
+ a(d.set, undefined, "Set");
+ a(d.configurable, false, "Configurable");
+ a(d.enumerable, true, "Enumerable");
+ a(d.writable, true, "Writable");
+ },
+ v: function (a) {
+ var d = getOwnPropertyDescriptor(o, 'v');
+ a(d.value, v, "Value");
+ a(d.get, undefined, "Get");
+ a(d.set, undefined, "Set");
+ a(d.configurable, false, "Configurable");
+ a(d.enumerable, false, "Enumerable");
+ a(d.writable, false, "Writable");
+
+ d = getOwnPropertyDescriptor(o, 'vgs');
+ a(d.value, undefined, "GS Value");
+ a(d.get, vg, "GS Get");
+ a(d.set, vs, "GS Set");
+ a(d.configurable, false, "GS Configurable");
+ a(d.enumerable, false, "GS Enumerable");
+ a(d.writable, undefined, "GS Writable");
+ },
+ w: function (a) {
+ var d = getOwnPropertyDescriptor(o, 'w');
+ a(d.value, w, "Value");
+ a(d.get, undefined, "Get");
+ a(d.set, undefined, "Set");
+ a(d.configurable, false, "Configurable");
+ a(d.enumerable, false, "Enumerable");
+ a(d.writable, true, "Writable");
+ },
+ d: function (a) {
+ var d = getOwnPropertyDescriptor(o, 'df');
+ a(d.value, df, "Value");
+ a(d.get, undefined, "Get");
+ a(d.set, undefined, "Set");
+ a(d.configurable, true, "Configurable");
+ a(d.enumerable, false, "Enumerable");
+ a(d.writable, true, "Writable");
+
+ d = getOwnPropertyDescriptor(o, 'dfgs');
+ a(d.value, undefined, "GS Value");
+ a(d.get, dfg, "GS Get");
+ a(d.set, dfs, "GS Set");
+ a(d.configurable, true, "GS Configurable");
+ a(d.enumerable, false, "GS Enumerable");
+ a(d.writable, undefined, "GS Writable");
+ },
+ Options: {
+ v: function (a) {
+ var x = {}, d = t(x, { foo: true });
+ a.deep(d, { configurable: true, enumerable: false, writable: true,
+ value: x, foo: true }, "No descriptor");
+ d = t('c', 'foo', { marko: 'elo' });
+ a.deep(d, { configurable: true, enumerable: false, writable: false,
+ value: 'foo', marko: 'elo' }, "Descriptor");
+ },
+ gs: function (a) {
+ var gFn = function () {}, sFn = function () {}, d;
+ d = t.gs(gFn, sFn, { foo: true });
+ a.deep(d, { configurable: true, enumerable: false, get: gFn, set: sFn,
+ foo: true }, "No descriptor");
+ d = t.gs(null, sFn, { foo: true });
+ a.deep(d, { configurable: true, enumerable: false, get: undefined,
+ set: sFn, foo: true }, "No descriptor: Just set");
+ d = t.gs(gFn, { foo: true });
+ a.deep(d, { configurable: true, enumerable: false, get: gFn,
+ set: undefined, foo: true }, "No descriptor: Just get");
+
+ d = t.gs('e', gFn, sFn, { bar: true });
+ a.deep(d, { configurable: false, enumerable: true, get: gFn, set: sFn,
+ bar: true }, "Descriptor");
+ d = t.gs('e', null, sFn, { bar: true });
+ a.deep(d, { configurable: false, enumerable: true, get: undefined,
+ set: sFn, bar: true }, "Descriptor: Just set");
+ d = t.gs('e', gFn, { bar: true });
+ a.deep(d, { configurable: false, enumerable: true, get: gFn,
+ set: undefined, bar: true }, "Descriptor: Just get");
+ }
+ }
+ };
+};
diff --git a/node_modules/d/test/lazy.js b/node_modules/d/test/lazy.js
new file mode 100644
index 000000000..e4023faf3
--- /dev/null
+++ b/node_modules/d/test/lazy.js
@@ -0,0 +1,82 @@
+'use strict';
+
+var d = require('../')
+
+ , getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
+
+module.exports = function (t, a) {
+ var Foo = function () {}, i = 1, o, o2, desc;
+ Object.defineProperties(Foo.prototype, t({
+ bar: d(function () { return ++i; }),
+ bar2: d(function () { return this.bar + 23; }),
+ bar3: d(function () { return this.bar2 + 34; }, { desc: 'ew' }),
+ bar4: d(function () { return this.bar3 + 12; }, { cacheName: '_bar4_' }),
+ bar5: d(function () { return this.bar4 + 3; },
+ { cacheName: '_bar5_', desc: 'e' })
+ }));
+
+ desc = getOwnPropertyDescriptor(Foo.prototype, 'bar');
+ a(desc.configurable, true, "Configurable: default");
+ a(desc.enumerable, false, "Enumerable: default");
+
+ o = new Foo();
+ a.deep([o.bar, o.bar2, o.bar3, o.bar4, o.bar5], [2, 25, 59, 71, 74],
+ "Values");
+
+ a.deep(getOwnPropertyDescriptor(o, 'bar3'), { configurable: false,
+ enumerable: true, writable: true, value: 59 }, "Desc");
+ a(o.hasOwnProperty('bar4'), false, "Cache not exposed");
+ desc = getOwnPropertyDescriptor(o, 'bar5');
+ a.deep(desc, { configurable: false,
+ enumerable: true, get: desc.get, set: desc.set }, "Cache & Desc: desc");
+
+ o2 = Object.create(o);
+ o2.bar = 30;
+ o2.bar3 = 100;
+
+ a.deep([o2.bar, o2.bar2, o2.bar3, o2.bar4, o2.bar5], [30, 25, 100, 112, 115],
+ "Extension Values");
+
+ Foo = function () {};
+ Object.defineProperties(Foo.prototype, t({
+ test: d('w', function () { return 'raz'; }),
+ test2: d('', function () { return 'raz'; }, { desc: 'w' }),
+ test3: d('', function () { return 'raz'; },
+ { cacheName: '__test3__', desc: 'w' }),
+ test4: d('w', 'bar')
+ }));
+
+ o = new Foo();
+ o.test = 'marko';
+ a.deep(getOwnPropertyDescriptor(o, 'test'),
+ { configurable: false, enumerable: false, writable: true, value: 'marko' },
+ "Set before get");
+ o.test2 = 'marko2';
+ a.deep(getOwnPropertyDescriptor(o, 'test2'),
+ { configurable: false, enumerable: false, writable: true, value: 'marko2' },
+ "Set before get: Custom desc");
+ o.test3 = 'marko3';
+ a.deep(getOwnPropertyDescriptor(o, '__test3__'),
+ { configurable: false, enumerable: false, writable: true, value: 'marko3' },
+ "Set before get: Custom cache name");
+ a(o.test4, 'bar', "Resolve by value");
+
+ a.h1("Flat");
+ Object.defineProperties(Foo.prototype, t({
+ flat: d(function () { return 'foo'; }, { flat: true }),
+ flat2: d(function () { return 'bar'; }, { flat: true })
+ }));
+
+ a.h2("Instance");
+ a(o.flat, 'foo', "Value");
+ a(o.hasOwnProperty('flat'), false, "Instance");
+ a(Foo.prototype.flat, 'foo', "Prototype");
+
+ a.h2("Direct");
+ a(Foo.prototype.flat2, 'bar');
+
+ a.h2("Reset direct");
+ Object.defineProperties(Foo.prototype, t({ testResetDirect: d(false) }));
+
+ a.throws(function () { Foo.prototype.testResetDirect = false; }, TypeError);
+};