@deepkit/core
Version:
Deepkit core library
80 lines • 3.19 kB
JavaScript
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