nole 1.0.12 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -0
- package/bin/nole.js +22 -22
- package/dist/data.d.ts +1 -1
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +2 -6
- package/dist/data.js.map +1 -1
- package/dist/decorators.d.ts +2 -1
- package/dist/decorators.d.ts.map +1 -1
- package/dist/decorators.js +20 -17
- package/dist/decorators.js.map +1 -1
- package/dist/dynamic.js +1 -5
- package/dist/dynamic.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -13
- package/dist/index.js.map +1 -1
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +39 -44
- package/dist/run.js.map +1 -1
- package/dist/run.test.d.ts +4 -0
- package/dist/run.test.d.ts.map +1 -0
- package/dist/run.test.js +31 -0
- package/dist/run.test.js.map +1 -0
- package/dist/test.d.ts +1 -0
- package/dist/test.d.ts.map +1 -1
- package/dist/test.js +5 -8
- package/dist/test.js.map +1 -1
- package/dist/utils/executor.js +1 -5
- package/dist/utils/executor.js.map +1 -1
- package/dist/utils/executor.test.d.ts +6 -0
- package/dist/utils/executor.test.d.ts.map +1 -0
- package/dist/utils/executor.test.js +49 -0
- package/dist/utils/executor.test.js.map +1 -0
- package/dist/utils/time_difference.js +1 -5
- package/dist/utils/time_difference.js.map +1 -1
- package/dist/utils/time_difference.test.d.ts +4 -0
- package/dist/utils/time_difference.test.d.ts.map +1 -0
- package/dist/utils/time_difference.test.js +24 -0
- package/dist/utils/time_difference.test.js.map +1 -0
- package/dist/utils/time_factor.d.ts +1 -1
- package/dist/utils/time_factor.d.ts.map +1 -1
- package/dist/utils/time_factor.js +5 -10
- package/dist/utils/time_factor.js.map +1 -1
- package/dist/utils/time_factor.test.d.ts +4 -0
- package/dist/utils/time_factor.test.d.ts.map +1 -0
- package/dist/utils/time_factor.test.js +42 -0
- package/dist/utils/time_factor.test.js.map +1 -0
- package/package.json +28 -6
- package/src/data.ts +2 -2
- package/src/decorators.ts +19 -2
- package/src/index.ts +3 -3
- package/src/run.ts +30 -21
- package/src/test.ts +3 -4
- package/src/utils/executor.test.ts +27 -0
- package/src/utils/executor.ts +1 -1
- package/src/utils/time_difference.test.ts +12 -0
- package/src/utils/time_factor.test.ts +29 -0
- package/src/utils/time_factor.ts +3 -1
- package/test/basic.test.ts +1 -1
- package/test/clean-up.test.ts +1 -1
- package/test/dynamic-skip.test.ts +1 -1
- package/test/dynamic.test.ts +1 -1
- package/test/hook.test.ts +2 -2
- package/test/multi-dependency.test.ts +23 -0
- package/test/skip-all.test.ts +9 -3
- package/test/tsconfig.json +3 -4
- package/tsconfig.json +4 -4
package/dist/test.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,IAAI,CAAA;CACjB;AAED,MAAM,WAAW,KAAK;IACpB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,QAAQ,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,KAAK;IACpB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,qBAAa,IAAI;
|
|
1
|
+
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,IAAI,CAAA;CACjB;AAED,MAAM,WAAW,KAAK;IACpB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,QAAQ,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,KAAK;IACpB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,qBAAa,IAAI;IAYI,MAAM,EAAE,GAAG;IAX9B,YAAY,EAAE,WAAW,EAAE,CAAM;IACjC,UAAU,EAAE,IAAI,EAAE,CAAM;IACxB,IAAI,qBAA4B;IAChC,SAAS,EAAE,KAAK,GAAG,IAAI,CAAQ;IAC/B,KAAK,qBAA4B;IACjC,KAAK,qBAA4B;IACjC,UAAU,EAAE,OAAO,CAAS;IAC5B,eAAe,EAAE,OAAO,CAAS;IACjC,aAAa,EAAE,OAAO,CAAS;IAC/B,YAAY,EAAE,GAAG,CAAC;gBAEC,MAAM,EAAE,GAAG;IAE9B,IAAI,IAAI,QAEP;CACF;AAED,oBAAY,QAAQ;IAClB,MAAM,IAAA;IACN,KAAK,IAAA;IACL,UAAU,IAAA;IACV,SAAS,IAAA;IACT,OAAO,IAAA;CACR;AAED,MAAM,WAAW,aAAa,CAAC,CAAC;IAAI,QAAO,CAAC,CAAC;CAAE"}
|
package/dist/test.js
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.HookType = exports.Test = void 0;
|
|
4
|
-
class Test {
|
|
1
|
+
export class Test {
|
|
5
2
|
constructor(target) {
|
|
6
3
|
this.target = target;
|
|
7
4
|
this.dependencies = [];
|
|
@@ -10,20 +7,20 @@ class Test {
|
|
|
10
7
|
this.skipClass = null;
|
|
11
8
|
this.specs = new Map();
|
|
12
9
|
this.hooks = new Map();
|
|
13
|
-
this.cleanUpCalled = false;
|
|
14
10
|
this.isFinished = false;
|
|
11
|
+
this.isFullyFinished = false;
|
|
12
|
+
this.cleanUpCalled = false;
|
|
15
13
|
}
|
|
16
14
|
get name() {
|
|
17
15
|
return this.target.name;
|
|
18
16
|
}
|
|
19
17
|
}
|
|
20
|
-
|
|
21
|
-
var HookType;
|
|
18
|
+
export var HookType;
|
|
22
19
|
(function (HookType) {
|
|
23
20
|
HookType[HookType["Before"] = 0] = "Before";
|
|
24
21
|
HookType[HookType["After"] = 1] = "After";
|
|
25
22
|
HookType[HookType["BeforeEach"] = 2] = "BeforeEach";
|
|
26
23
|
HookType[HookType["AfterEach"] = 3] = "AfterEach";
|
|
27
24
|
HookType[HookType["CleanUp"] = 4] = "CleanUp";
|
|
28
|
-
})(HookType
|
|
25
|
+
})(HookType || (HookType = {}));
|
|
29
26
|
//# sourceMappingURL=test.js.map
|
package/dist/test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"AAkBA,MAAM,OAAO,IAAI;IAYf,YAAmB,MAAW;QAAX,WAAM,GAAN,MAAM,CAAK;QAX9B,iBAAY,GAAkB,EAAE,CAAC;QACjC,eAAU,GAAW,EAAE,CAAC;QACxB,SAAI,GAAG,IAAI,GAAG,EAAiB,CAAC;QAChC,cAAS,GAAiB,IAAI,CAAC;QAC/B,UAAK,GAAG,IAAI,GAAG,EAAiB,CAAC;QACjC,UAAK,GAAG,IAAI,GAAG,EAAiB,CAAC;QACjC,eAAU,GAAY,KAAK,CAAC;QAC5B,oBAAe,GAAY,KAAK,CAAC;QACjC,kBAAa,GAAY,KAAK,CAAC;IAGE,CAAC;IAElC,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;CACF;AAED,MAAM,CAAN,IAAY,QAMX;AAND,WAAY,QAAQ;IAClB,2CAAM,CAAA;IACN,yCAAK,CAAA;IACL,mDAAU,CAAA;IACV,iDAAS,CAAA;IACT,6CAAO,CAAA;AACT,CAAC,EANW,QAAQ,KAAR,QAAQ,QAMnB"}
|
package/dist/utils/executor.js
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Executor = void 0;
|
|
4
|
-
function Executor(fn, timeout) {
|
|
1
|
+
export function Executor(fn, timeout) {
|
|
5
2
|
return new Promise(async (resolve, reject) => {
|
|
6
3
|
let _timeout = null;
|
|
7
4
|
try {
|
|
@@ -20,5 +17,4 @@ function Executor(fn, timeout) {
|
|
|
20
17
|
resolve();
|
|
21
18
|
});
|
|
22
19
|
}
|
|
23
|
-
exports.Executor = Executor;
|
|
24
20
|
//# sourceMappingURL=executor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/utils/executor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/utils/executor.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,QAAQ,CAAC,EAAY,EAAE,OAAe;IACpD,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,IAAI,QAAQ,GAAG,IAAI,CAAC;QAEpB,IAAI;YACF,IAAI,aAAa,GAAG,EAAE,EAAE,CAAC;YACzB,IAAI,aAAa,IAAI,aAAa,CAAC,IAAI,EAAE;gBACvC,QAAQ,GAAG,UAAU,CAAC;oBACpB,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,GAAG,OAAO,CAAC,CAAC,CAAC;gBAC3D,CAAC,EAAE,OAAO,CAAC,CAAC;gBAEZ,MAAM,aAAa,CAAC;aACrB;SACF;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,CAAC,CAAC,CAAC,CAAC;SACX;QAED,YAAY,CAAC,QAAS,CAAC,CAAC;QAExB,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.test.d.ts","sourceRoot":"","sources":["../../src/utils/executor.test.ts"],"names":[],"mappings":"AAIA,qBAAa,YAAY;IAEjB,QAAQ;IAMR,MAAM;IASN,OAAO;CAKd"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
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;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import * as assert from "assert";
|
|
11
|
+
import { Spec } from "../index.js";
|
|
12
|
+
import { Executor } from "./executor.js";
|
|
13
|
+
export class ExecutorTest {
|
|
14
|
+
async evaluate() {
|
|
15
|
+
await Executor(() => 1, 1);
|
|
16
|
+
await Executor(async () => 1, 1);
|
|
17
|
+
}
|
|
18
|
+
async throws() {
|
|
19
|
+
await assert.rejects(() => {
|
|
20
|
+
return Executor(() => {
|
|
21
|
+
throw new Error('throws');
|
|
22
|
+
}, 1);
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
async timeout() {
|
|
26
|
+
await assert.rejects(() => {
|
|
27
|
+
return Executor(() => new Promise(() => { }), 10);
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
__decorate([
|
|
32
|
+
Spec(),
|
|
33
|
+
__metadata("design:type", Function),
|
|
34
|
+
__metadata("design:paramtypes", []),
|
|
35
|
+
__metadata("design:returntype", Promise)
|
|
36
|
+
], ExecutorTest.prototype, "evaluate", null);
|
|
37
|
+
__decorate([
|
|
38
|
+
Spec(),
|
|
39
|
+
__metadata("design:type", Function),
|
|
40
|
+
__metadata("design:paramtypes", []),
|
|
41
|
+
__metadata("design:returntype", Promise)
|
|
42
|
+
], ExecutorTest.prototype, "throws", null);
|
|
43
|
+
__decorate([
|
|
44
|
+
Spec(),
|
|
45
|
+
__metadata("design:type", Function),
|
|
46
|
+
__metadata("design:paramtypes", []),
|
|
47
|
+
__metadata("design:returntype", Promise)
|
|
48
|
+
], ExecutorTest.prototype, "timeout", null);
|
|
49
|
+
//# sourceMappingURL=executor.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.test.js","sourceRoot":"","sources":["../../src/utils/executor.test.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,OAAO,YAAY;IAEvB,KAAK,CAAC,QAAQ;QACZ,MAAM,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,MAAM,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,CAAC;IAGD,KAAK,CAAC,MAAM;QACV,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;YACxB,OAAO,QAAQ,CAAC,GAAG,EAAE;gBACnB,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC5B,CAAC,EAAE,CAAC,CAAC,CAAC;QACR,CAAC,CAAC,CAAA;IACJ,CAAC;IAGD,KAAK,CAAC,OAAO;QACX,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;YACxB,OAAO,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACnD,CAAC,CAAC,CAAA;IACJ,CAAC;CACF;AApBC;IADC,IAAI,EAAE;;;;4CAIN;AAGD;IADC,IAAI,EAAE;;;;0CAON;AAGD;IADC,IAAI,EAAE;;;;2CAKN"}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TimeDifference = void 0;
|
|
4
|
-
class TimeDifference {
|
|
1
|
+
export class TimeDifference {
|
|
5
2
|
constructor() {
|
|
6
3
|
this.startAt = process.hrtime();
|
|
7
4
|
}
|
|
@@ -13,5 +10,4 @@ class TimeDifference {
|
|
|
13
10
|
return diff[0] * 1000 + diff[1] / 1e6;
|
|
14
11
|
}
|
|
15
12
|
}
|
|
16
|
-
exports.TimeDifference = TimeDifference;
|
|
17
13
|
//# sourceMappingURL=time_difference.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time_difference.js","sourceRoot":"","sources":["../../src/utils/time_difference.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"time_difference.js","sourceRoot":"","sources":["../../src/utils/time_difference.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,cAAc;IAGzB;QACE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAClC,CAAC;IAMM,MAAM,CAAC,KAAK;QACjB,OAAO,IAAI,cAAc,EAAE,CAAC;IAC9B,CAAC;IAMD,GAAG;QACD,IAAI,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAExC,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IACxC,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time_difference.test.d.ts","sourceRoot":"","sources":["../../src/utils/time_difference.test.ts"],"names":[],"mappings":"AAKA,qBAAa,kBAAkB;IAEvB,QAAQ;CAIf"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
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;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { Spec } from "../index.js";
|
|
11
|
+
import { TimeDifference } from "./time_difference.js";
|
|
12
|
+
export class TimeDifferenceTest {
|
|
13
|
+
async evaluate() {
|
|
14
|
+
const td = TimeDifference.begin();
|
|
15
|
+
td.end();
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
__decorate([
|
|
19
|
+
Spec(),
|
|
20
|
+
__metadata("design:type", Function),
|
|
21
|
+
__metadata("design:paramtypes", []),
|
|
22
|
+
__metadata("design:returntype", Promise)
|
|
23
|
+
], TimeDifferenceTest.prototype, "evaluate", null);
|
|
24
|
+
//# sourceMappingURL=time_difference.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time_difference.test.js","sourceRoot":"","sources":["../../src/utils/time_difference.test.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,OAAO,kBAAkB;IAE7B,KAAK,CAAC,QAAQ;QACZ,MAAM,EAAE,GAAG,cAAc,CAAC,KAAK,EAAE,CAAC;QAClC,EAAE,CAAC,GAAG,EAAE,CAAA;IACV,CAAC;CACF;AAJC;IADC,IAAI,EAAE;;;;kDAIN"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare function TimeFactor(diff: number, timeout: number):
|
|
1
|
+
export declare function TimeFactor(diff: number, timeout: number): any;
|
|
2
2
|
export declare function TimeResolve(ms: number): string;
|
|
3
3
|
export declare function Delay(ms: number): Promise<void>;
|
|
4
4
|
//# sourceMappingURL=time_factor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time_factor.d.ts","sourceRoot":"","sources":["../../src/utils/time_factor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"time_factor.d.ts","sourceRoot":"","sources":["../../src/utils/time_factor.ts"],"names":[],"mappings":"AAIA,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,OAIvD;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,UAKrC;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C"}
|
|
@@ -1,16 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const colors = require("colors/safe");
|
|
5
|
-
function TimeFactor(diff, timeout) {
|
|
1
|
+
import * as clrs from 'colors/safe.js';
|
|
2
|
+
const colors = clrs.default;
|
|
3
|
+
export function TimeFactor(diff, timeout) {
|
|
6
4
|
if (diff < timeout / 5)
|
|
7
5
|
return colors.green(TimeResolve(diff).padStart(9, ' '));
|
|
8
6
|
if (diff < timeout / 2)
|
|
9
7
|
return colors.yellow(TimeResolve(diff).padStart(9, ' '));
|
|
10
8
|
return colors.red(TimeResolve(diff).padStart(9, ' '));
|
|
11
9
|
}
|
|
12
|
-
|
|
13
|
-
function TimeResolve(ms) {
|
|
10
|
+
export function TimeResolve(ms) {
|
|
14
11
|
if (ms < 1000)
|
|
15
12
|
return (ms * 100 | 0) / 100 + ' ms';
|
|
16
13
|
if (ms < 60 * 1000)
|
|
@@ -19,9 +16,7 @@ function TimeResolve(ms) {
|
|
|
19
16
|
return (ms / 600 | 0) / 100 + ' m';
|
|
20
17
|
return (ms / 36000 | 0) / 100 + ' h';
|
|
21
18
|
}
|
|
22
|
-
|
|
23
|
-
function Delay(ms) {
|
|
19
|
+
export function Delay(ms) {
|
|
24
20
|
return new Promise(resolve => setTimeout(resolve, ms));
|
|
25
21
|
}
|
|
26
|
-
exports.Delay = Delay;
|
|
27
22
|
//# sourceMappingURL=time_factor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time_factor.js","sourceRoot":"","sources":["../../src/utils/time_factor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"time_factor.js","sourceRoot":"","sources":["../../src/utils/time_factor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AAEvC,MAAM,MAAM,GAAI,IAAY,CAAC,OAAO,CAAC;AAErC,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,OAAe;IACtD,IAAI,IAAI,GAAG,OAAO,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAChF,IAAI,IAAI,GAAG,OAAO,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACjF,OAAO,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAAU;IACpC,IAAI,EAAE,GAAG,IAAI;QAAE,OAAO,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC;IACnD,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;QAAE,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;IACtD,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;QAAE,OAAO,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;IAC5D,OAAO,CAAC,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,EAAU;IAC9B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time_factor.test.d.ts","sourceRoot":"","sources":["../../src/utils/time_factor.test.ts"],"names":[],"mappings":"AAGA,qBAAa,cAAc;IAEnB,QAAQ;CAuBf"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
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;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { Spec } from "../index.js";
|
|
11
|
+
import { Delay, TimeFactor } from "./time_factor.js";
|
|
12
|
+
export class TimeFactorTest {
|
|
13
|
+
async evaluate() {
|
|
14
|
+
await Delay(1);
|
|
15
|
+
for (const n of [
|
|
16
|
+
100,
|
|
17
|
+
1000,
|
|
18
|
+
60 * 1000,
|
|
19
|
+
120 * 1000,
|
|
20
|
+
60 * 60 * 1000,
|
|
21
|
+
65 * 60 * 1000,
|
|
22
|
+
25 * 60 * 60 * 1000
|
|
23
|
+
]) {
|
|
24
|
+
TimeFactor(n / 1000, n);
|
|
25
|
+
TimeFactor(n / 500, n);
|
|
26
|
+
TimeFactor(n / 10, n);
|
|
27
|
+
TimeFactor(n / 6, n);
|
|
28
|
+
TimeFactor(n / 4, n);
|
|
29
|
+
TimeFactor(n / 2, n);
|
|
30
|
+
TimeFactor(n / 1.5, n);
|
|
31
|
+
TimeFactor(n, n);
|
|
32
|
+
TimeFactor(n * 2, n);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
__decorate([
|
|
37
|
+
Spec(),
|
|
38
|
+
__metadata("design:type", Function),
|
|
39
|
+
__metadata("design:paramtypes", []),
|
|
40
|
+
__metadata("design:returntype", Promise)
|
|
41
|
+
], TimeFactorTest.prototype, "evaluate", null);
|
|
42
|
+
//# sourceMappingURL=time_factor.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time_factor.test.js","sourceRoot":"","sources":["../../src/utils/time_factor.test.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,OAAO,cAAc;IAEzB,KAAK,CAAC,QAAQ;QACZ,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;QAEf,KAAK,MAAM,CAAC,IAAI;YACd,GAAG;YACH,IAAI;YACJ,EAAE,GAAG,IAAI;YACT,GAAG,GAAG,IAAI;YACV,EAAE,GAAG,EAAE,GAAG,IAAI;YACd,EAAE,GAAG,EAAE,GAAG,IAAI;YACd,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;SACpB,EAAE;YACD,UAAU,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;YACxB,UAAU,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;YACvB,UAAU,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;YACtB,UAAU,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACrB,UAAU,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACrB,UAAU,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACrB,UAAU,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;YACvB,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACjB,UAAU,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;SACtB;IACH,CAAC;CACF;AAvBC;IADC,IAAI,EAAE;;;;8CAuBN"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nole",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.2",
|
|
4
|
+
"type": "module",
|
|
4
5
|
"description": "Testing Library for Typescript projects",
|
|
5
6
|
"main": "dist/index.js",
|
|
6
7
|
"types": "dist/index.d.ts",
|
|
@@ -13,7 +14,8 @@
|
|
|
13
14
|
},
|
|
14
15
|
"scripts": {
|
|
15
16
|
"build": "tsc",
|
|
16
|
-
"test": "node ./bin/nole.js ./test/**/*.test.ts"
|
|
17
|
+
"test": "node --loader=ts-node/esm ./bin/nole.js ./test/**/*.test.ts ./src/**/*.test.ts",
|
|
18
|
+
"coverage": "c8 npm run test"
|
|
17
19
|
},
|
|
18
20
|
"keywords": [
|
|
19
21
|
"typescript",
|
|
@@ -23,11 +25,31 @@
|
|
|
23
25
|
"author": "co3moz",
|
|
24
26
|
"license": "ISC",
|
|
25
27
|
"dependencies": {
|
|
26
|
-
"@types/node": "^
|
|
28
|
+
"@types/node": "^16.11.41",
|
|
29
|
+
"camelcase": "^7.0.0",
|
|
27
30
|
"colors": "^1.3.3",
|
|
28
31
|
"commander": "^2.19.0",
|
|
29
|
-
"glob": "^7.
|
|
30
|
-
"ts-node": "^8.
|
|
31
|
-
"typescript": "^4.3
|
|
32
|
+
"glob": "^7.2.3",
|
|
33
|
+
"ts-node": "^10.8.1",
|
|
34
|
+
"typescript": "^4.7.3"
|
|
35
|
+
},
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"c8": "^7.11.3"
|
|
38
|
+
},
|
|
39
|
+
"c8": {
|
|
40
|
+
"all": true,
|
|
41
|
+
"check-coverage": true,
|
|
42
|
+
"report-dir": "./coverage",
|
|
43
|
+
"reporter": [
|
|
44
|
+
"text",
|
|
45
|
+
"lcovonly",
|
|
46
|
+
"text-summary"
|
|
47
|
+
],
|
|
48
|
+
"include": [
|
|
49
|
+
"src/**/*.ts"
|
|
50
|
+
],
|
|
51
|
+
"exclude": [
|
|
52
|
+
"**/*.test.ts"
|
|
53
|
+
]
|
|
32
54
|
}
|
|
33
55
|
}
|
package/src/data.ts
CHANGED
package/src/decorators.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { HashMap } from "./data";
|
|
2
|
-
import { Test, HookType, ClassDefition } from "./test";
|
|
1
|
+
import { HashMap } from "./data.js";
|
|
2
|
+
import { Test, HookType, ClassDefition } from "./test.js";
|
|
3
|
+
import camelcase from "camelcase";
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* Assignes method as test case
|
|
@@ -22,6 +23,22 @@ export function Dependency<T>(dependency: ClassDefition<T>): PropertyDecorator {
|
|
|
22
23
|
}
|
|
23
24
|
}
|
|
24
25
|
|
|
26
|
+
/**
|
|
27
|
+
* Assignes dependencies for test class
|
|
28
|
+
* @param dependencies a Test class array that needed
|
|
29
|
+
*/
|
|
30
|
+
export function Dependencies(dependencies: ClassDefition<any>[]): ClassDecorator {
|
|
31
|
+
return function (target) {
|
|
32
|
+
for (const dependency of dependencies) {
|
|
33
|
+
const propertyKey = camelcase(dependency.name, {
|
|
34
|
+
preserveConsecutiveUppercase: true
|
|
35
|
+
});
|
|
36
|
+
DeclareDependencyForTestClass({ constructor: target }, propertyKey, dependency);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
|
|
25
42
|
|
|
26
43
|
/**
|
|
27
44
|
* Creates hook for test case
|
package/src/index.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
|
|
2
|
-
export { Dependency, Spec, Hook, Skip, SkipClass } from './decorators';
|
|
3
|
-
export { HookType } from './test';
|
|
4
|
-
export { skipTest } from './dynamic';
|
|
2
|
+
export { Dependency, Spec, Hook, Skip, SkipClass, Dependencies } from './decorators.js';
|
|
3
|
+
export { HookType } from './test.js';
|
|
4
|
+
export { skipTest } from './dynamic.js';
|
package/src/run.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import { HashMap } from "./data";
|
|
2
|
-
import { TimeDifference } from "./utils/time_difference";
|
|
3
|
-
import { TimeFactor } from "./utils/time_factor";
|
|
4
|
-
import * as
|
|
5
|
-
import { Executor } from "./utils/executor";
|
|
6
|
-
import { HookType, Test } from "./test";
|
|
1
|
+
import { HashMap } from "./data.js";
|
|
2
|
+
import { TimeDifference } from "./utils/time_difference.js";
|
|
3
|
+
import { TimeFactor } from "./utils/time_factor.js";
|
|
4
|
+
import * as clrs from 'colors/safe.js';
|
|
5
|
+
import { Executor } from "./utils/executor.js";
|
|
6
|
+
import { HookType, Test } from "./test.js";
|
|
7
|
+
|
|
8
|
+
const colors = (clrs as any).default;
|
|
7
9
|
|
|
8
10
|
const OK_TEXT = colors.bold(colors.green(' (ok) '));
|
|
9
11
|
const SKIP_TEXT = colors.bold(colors.yellow(' (skip) '));
|
|
@@ -37,11 +39,13 @@ export function ManualRun(log: Function) {
|
|
|
37
39
|
await HandleSpecs(test, log);
|
|
38
40
|
await HandleAfterHooks(test);
|
|
39
41
|
|
|
42
|
+
test.isFinished = true;
|
|
43
|
+
|
|
40
44
|
if (test.dependents.length == 0) {
|
|
41
|
-
await HandleCleanUp(test);
|
|
45
|
+
await HandleCleanUp(test, log);
|
|
42
46
|
}
|
|
43
|
-
|
|
44
|
-
test.
|
|
47
|
+
|
|
48
|
+
test.isFullyFinished = true;
|
|
45
49
|
} else {
|
|
46
50
|
DependencyLock(hashMap);
|
|
47
51
|
}
|
|
@@ -86,7 +90,7 @@ async function HandleBeforeHooks(test: Test) {
|
|
|
86
90
|
let hookName = colors.bold(colors.yellow(test.name + (propertyKey != 'before' ? `.${propertyKey}:before` : ':before')));
|
|
87
91
|
|
|
88
92
|
console.error(`${HOOK_FAILED_TEXT} ${hookName}()`);
|
|
89
|
-
console.error(e?.stack ?? e);
|
|
93
|
+
console.error((e as any)?.stack ?? e);
|
|
90
94
|
throw e;
|
|
91
95
|
}
|
|
92
96
|
}
|
|
@@ -102,7 +106,7 @@ async function HandleBeforeEachHooks(test: Test) {
|
|
|
102
106
|
let hookName = colors.bold(colors.yellow(test.name + (propertyKey != 'beforeEach' ? `.${propertyKey}:beforeEach` : ':beforeEach')));
|
|
103
107
|
|
|
104
108
|
console.error(`${HOOK_FAILED_TEXT} ${hookName}()`);
|
|
105
|
-
console.error(e?.stack ?? e);
|
|
109
|
+
console.error((e as any)?.stack ?? e);
|
|
106
110
|
throw e;
|
|
107
111
|
}
|
|
108
112
|
}
|
|
@@ -118,7 +122,7 @@ async function HandleAfterEachHooks(test: Test) {
|
|
|
118
122
|
let hookName = colors.bold(colors.yellow(test.name + (propertyKey != 'afterEach' ? `.${propertyKey}:afterEach` : ':afterEach')));
|
|
119
123
|
|
|
120
124
|
console.error(`${HOOK_FAILED_TEXT} ${hookName}()`);
|
|
121
|
-
console.error(e?.stack ?? e);
|
|
125
|
+
console.error((e as any)?.stack ?? e);
|
|
122
126
|
throw e;
|
|
123
127
|
}
|
|
124
128
|
}
|
|
@@ -146,8 +150,8 @@ async function HandleSpecs(test: Test, log: Function) {
|
|
|
146
150
|
|
|
147
151
|
log(`${OK_TEXT} ${timeText} ${testName}()`);
|
|
148
152
|
} catch (e) {
|
|
149
|
-
if (e?._nole_anchor) {
|
|
150
|
-
let reason = e.reason;
|
|
153
|
+
if ((e as any)?._nole_anchor) {
|
|
154
|
+
let reason = (e as any).reason;
|
|
151
155
|
log(`${DYNAMIC_SKIP_TEXT} ${' '.repeat(8)} ${testName}() ${reason ? '{' + reason + '}' : ''}`);
|
|
152
156
|
continue;
|
|
153
157
|
}
|
|
@@ -155,7 +159,7 @@ async function HandleSpecs(test: Test, log: Function) {
|
|
|
155
159
|
let timeText = TimeFactor(start.end(), spec.timeout);
|
|
156
160
|
|
|
157
161
|
console.error(`${FAILED_TEXT} ${timeText} ${testName}()`);
|
|
158
|
-
console.error(e?.stack ?? e);
|
|
162
|
+
console.error((e as any)?.stack ?? e);
|
|
159
163
|
throw e;
|
|
160
164
|
}
|
|
161
165
|
|
|
@@ -173,14 +177,14 @@ async function HandleAfterHooks(test: Test) {
|
|
|
173
177
|
let hookName = colors.bold(colors.yellow(test.name + (propertyKey != 'after' ? `.${propertyKey}:after` : ':after')));
|
|
174
178
|
|
|
175
179
|
console.error(`${HOOK_FAILED_TEXT} ${hookName}()`);
|
|
176
|
-
console.error(e?.stack ?? e);
|
|
180
|
+
console.error((e as any)?.stack ?? e);
|
|
177
181
|
throw e;
|
|
178
182
|
}
|
|
179
183
|
}
|
|
180
184
|
}
|
|
181
185
|
|
|
182
186
|
|
|
183
|
-
async function HandleCleanUp(test: Test) {
|
|
187
|
+
async function HandleCleanUp(test: Test, log: Function) {
|
|
184
188
|
if (test.cleanUpCalled) return;
|
|
185
189
|
if (!test.dependents.every(dependent => dependent.isFinished)) return;
|
|
186
190
|
|
|
@@ -188,20 +192,25 @@ async function HandleCleanUp(test: Test) {
|
|
|
188
192
|
|
|
189
193
|
for (let [propertyKey, hook] of test.hooks.entries()) {
|
|
190
194
|
if (hook.type != HookType.CleanUp) continue;
|
|
195
|
+
|
|
196
|
+
let hookName = colors.bold(colors.yellow(test.name + (propertyKey != 'cleanUp' ? `.${propertyKey}:cleanUp` : ':cleanUp')));
|
|
197
|
+
let start = TimeDifference.begin();
|
|
198
|
+
|
|
191
199
|
try {
|
|
192
200
|
await Executor(test.testInstance[propertyKey].bind(test.testInstance), hook.timeout);
|
|
193
201
|
|
|
194
|
-
|
|
195
|
-
let hookName = colors.bold(colors.yellow(test.name + (propertyKey != 'cleanUp' ? `.${propertyKey}:cleanUp` : ':cleanUp')));
|
|
202
|
+
let timeText = TimeFactor(start.end(), hook.timeout);
|
|
196
203
|
|
|
204
|
+
log(`${OK_TEXT} ${timeText} ${hookName}()`);
|
|
205
|
+
} catch (e) {
|
|
197
206
|
console.error(`${HOOK_FAILED_TEXT} ${hookName}()`);
|
|
198
|
-
console.error(e?.stack ?? e);
|
|
207
|
+
console.error((e as any)?.stack ?? e);
|
|
199
208
|
throw e;
|
|
200
209
|
}
|
|
201
210
|
}
|
|
202
211
|
|
|
203
212
|
for (let tree of test.dependencies) {
|
|
204
|
-
HandleCleanUp(tree.dependency);
|
|
213
|
+
await HandleCleanUp(tree.dependency, log);
|
|
205
214
|
}
|
|
206
215
|
}
|
|
207
216
|
|
package/src/test.ts
CHANGED
|
@@ -23,13 +23,12 @@ export class Test {
|
|
|
23
23
|
skipClass: ISkip | null = null;
|
|
24
24
|
specs = new Map<string, ISpec>();
|
|
25
25
|
hooks = new Map<string, IHook>();
|
|
26
|
-
isFinished: boolean;
|
|
26
|
+
isFinished: boolean = false; // cleanup ignored
|
|
27
|
+
isFullyFinished: boolean = false; // including cleanup
|
|
27
28
|
cleanUpCalled: boolean = false;
|
|
28
29
|
testInstance: any;
|
|
29
30
|
|
|
30
|
-
constructor(public target: any) {
|
|
31
|
-
this.isFinished = false;
|
|
32
|
-
}
|
|
31
|
+
constructor(public target: any) {}
|
|
33
32
|
|
|
34
33
|
get name() {
|
|
35
34
|
return this.target.name;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as assert from "assert";
|
|
2
|
+
import { Spec } from "../index.js";
|
|
3
|
+
import { Executor } from "./executor.js";
|
|
4
|
+
|
|
5
|
+
export class ExecutorTest {
|
|
6
|
+
@Spec()
|
|
7
|
+
async evaluate() {
|
|
8
|
+
await Executor(() => 1, 1);
|
|
9
|
+
await Executor(async () => 1, 1);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
@Spec()
|
|
13
|
+
async throws() {
|
|
14
|
+
await assert.rejects(() => {
|
|
15
|
+
return Executor(() => {
|
|
16
|
+
throw new Error('throws');
|
|
17
|
+
}, 1);
|
|
18
|
+
})
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
@Spec()
|
|
22
|
+
async timeout() {
|
|
23
|
+
await assert.rejects(() => {
|
|
24
|
+
return Executor(() => new Promise(() => {}), 10);
|
|
25
|
+
})
|
|
26
|
+
}
|
|
27
|
+
}
|
package/src/utils/executor.ts
CHANGED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as assert from "assert";
|
|
2
|
+
import { Spec } from "../index.js";
|
|
3
|
+
import { Executor } from "./executor.js";
|
|
4
|
+
import { TimeDifference } from "./time_difference.js";
|
|
5
|
+
|
|
6
|
+
export class TimeDifferenceTest {
|
|
7
|
+
@Spec()
|
|
8
|
+
async evaluate() {
|
|
9
|
+
const td = TimeDifference.begin();
|
|
10
|
+
td.end()
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Spec } from "../index.js";
|
|
2
|
+
import { Delay, TimeFactor } from "./time_factor.js";
|
|
3
|
+
|
|
4
|
+
export class TimeFactorTest {
|
|
5
|
+
@Spec()
|
|
6
|
+
async evaluate() {
|
|
7
|
+
await Delay(1);
|
|
8
|
+
|
|
9
|
+
for (const n of [
|
|
10
|
+
100,
|
|
11
|
+
1000,
|
|
12
|
+
60 * 1000,
|
|
13
|
+
120 * 1000,
|
|
14
|
+
60 * 60 * 1000,
|
|
15
|
+
65 * 60 * 1000,
|
|
16
|
+
25 * 60 * 60 * 1000
|
|
17
|
+
]) {
|
|
18
|
+
TimeFactor(n / 1000, n);
|
|
19
|
+
TimeFactor(n / 500, n);
|
|
20
|
+
TimeFactor(n / 10, n);
|
|
21
|
+
TimeFactor(n / 6, n);
|
|
22
|
+
TimeFactor(n / 4, n);
|
|
23
|
+
TimeFactor(n / 2, n);
|
|
24
|
+
TimeFactor(n / 1.5, n);
|
|
25
|
+
TimeFactor(n, n);
|
|
26
|
+
TimeFactor(n * 2, n);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|