UNPKG

@deepkit/core

Version:
80 lines 3.19 kB
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; import { expect, test } from '@jest/globals'; import { log, stack } from '../src/decorators'; import { sleep } from '../src/core'; test('test decorators @sync', async () => { class Test { constructor() { this.i = 0; this.j = 0; this.running = false; } async increase() { if (this.running) { throw new Error('@stack should make sure the last run is already done :/'); } this.running = true; this.i++; console.log('i++'); return new Promise(Object.assign((resolve) => { setTimeout(() => { console.log('timeout done'); this.j++; this.running = false; resolve(this.j); }, 100); }, { __type: ['resolve', '', 'P"2!"/"'] })); } } Test.__type = ['increase', 'P"0!5']; __decorate([ stack(), log(), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", Promise) ], Test.prototype, "increase", null); { const test = new Test(); expect(test.i).toBe(0); expect(await test.increase()).toBe(1); expect(test.i).toBe(1); expect(test.j).toBe(1); expect(await test.increase()).toBe(2); expect(test.i).toBe(2); expect(test.j).toBe(2); } { const test = new Test(); await Promise.all([test.increase(), test.increase()]); expect(test.i).toBe(2); expect(test.j).toBe(2); } { const test = new Test(); expect(test.i).toBe(0); test.increase().then(Object.assign((j) => { expect(j).toBe(1); }, { __type: ['j', '', 'P"2!"/"'] })); test.increase().then(Object.assign((j) => { expect(j).toBe(2); }, { __type: ['j', '', 'P"2!"/"'] })); test.increase().then(Object.assign((j) => { expect(j).toBe(3); }, { __type: ['j', '', 'P"2!"/"'] })); expect(test.i).toBe(1); expect(test.j).toBe(0); await sleep(0.1); expect(test.i).toBe(2); expect(test.j).toBe(1); await sleep(0.1); expect(test.i).toBe(3); expect(test.j).toBe(2); await sleep(0.1); expect(test.i).toBe(3); expect(test.j).toBe(3); } }); //# sourceMappingURL=decorators.spec.js.map