]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/node_modules/node-gyp/node_modules/path-array/node_modules/array-index/node_modules/es6-symbol/node_modules/d/test/lazy.js
Adding integrated tile server
[simantics/district.git] / org.simantics.maps.server / node / node-v4.8.0-win-x64 / node_modules / npm / node_modules / node-gyp / node_modules / path-array / node_modules / array-index / node_modules / es6-symbol / node_modules / d / test / lazy.js
diff --git a/org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/node_modules/node-gyp/node_modules/path-array/node_modules/array-index/node_modules/es6-symbol/node_modules/d/test/lazy.js b/org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/node_modules/node-gyp/node_modules/path-array/node_modules/array-index/node_modules/es6-symbol/node_modules/d/test/lazy.js
new file mode 100644 (file)
index 0000000..8266deb
--- /dev/null
@@ -0,0 +1,77 @@
+'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');
+};