@flemist/test-variants 3.0.2 → 5.0.0
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 +283 -49
- package/build/browser/index.cjs +1 -0
- package/build/browser/index.d.ts +1 -0
- package/build/browser/index.mjs +4 -0
- package/build/common/-test/freezeProps.d.ts +2 -0
- package/build/common/garbage-collect/garbageCollect.d.ts +5 -0
- package/build/common/helpers/log.d.ts +5 -0
- package/build/common/index.cjs +1 -0
- package/build/common/index.d.ts +2 -0
- package/build/common/index.mjs +4 -0
- package/build/common/test-variants/-test/caches.d.ts +1 -0
- package/build/common/test-variants/-test/constants.d.ts +8 -0
- package/build/common/test-variants/-test/estimations/estimateCallCount.d.ts +4 -0
- package/build/common/test-variants/-test/estimations/estimateModeChanges.d.ts +4 -0
- package/build/common/test-variants/-test/generators/findBestError.d.ts +4 -0
- package/build/common/test-variants/-test/generators/primitives.d.ts +16 -0
- package/build/common/test-variants/-test/generators/run.d.ts +9 -0
- package/build/common/test-variants/-test/generators/template.d.ts +3 -0
- package/build/common/test-variants/-test/generators/testFunc.d.ts +3 -0
- package/build/common/test-variants/-test/helpers/CallController.d.ts +28 -0
- package/build/common/test-variants/-test/helpers/ErrorVariantController.d.ts +17 -0
- package/build/common/test-variants/-test/helpers/TestError.d.ts +2 -0
- package/build/common/test-variants/-test/helpers/deepEqualJsonLikeWithoutSeed.d.ts +1 -0
- package/build/common/test-variants/-test/helpers/deepFreezeJsonLike.d.ts +1 -0
- package/build/common/test-variants/-test/helpers/forEachVariant.d.ts +4 -0
- package/build/common/test-variants/-test/helpers/getMaxAttemptsPerVariant.d.ts +2 -0
- package/build/common/test-variants/-test/helpers/getParallelLimit.d.ts +7 -0
- package/build/common/test-variants/-test/helpers/getVariantArgs.d.ts +12 -0
- package/build/common/test-variants/-test/helpers/runWithTimeController.d.ts +7 -0
- package/build/common/test-variants/-test/invariants/CallCountInvariant.d.ts +18 -0
- package/build/common/test-variants/-test/invariants/CallOptionsInvariant.d.ts +32 -0
- package/build/common/test-variants/-test/invariants/ErrorBehaviorInvariant.d.ts +32 -0
- package/build/common/test-variants/-test/invariants/FindBestErrorInvariant.d.ts +37 -0
- package/build/common/test-variants/-test/invariants/IterationsInvariant.d.ts +21 -0
- package/build/common/test-variants/-test/invariants/LimitTimeInvariant.d.ts +26 -0
- package/build/common/test-variants/-test/invariants/LogInvariant.d.ts +126 -0
- package/build/common/test-variants/-test/invariants/OnErrorInvariant.d.ts +38 -0
- package/build/common/test-variants/-test/invariants/OnModeChangeInvariant.d.ts +32 -0
- package/build/common/test-variants/-test/invariants/ParallelInvariant.d.ts +25 -0
- package/build/common/test-variants/-test/log.d.ts +3 -0
- package/build/common/test-variants/-test/types.d.ts +34 -0
- package/build/common/test-variants/-test/variants.d.ts +3 -0
- package/build/common/test-variants/createTestRun.d.ts +3 -0
- package/build/common/test-variants/createTestVariants.d.ts +4 -0
- package/build/common/test-variants/iterator/createVariantsIterator.d.ts +4 -0
- package/build/common/test-variants/iterator/helpers/findValueIndex.d.ts +2 -0
- package/build/common/test-variants/iterator/helpers/mode.d.ts +3 -0
- package/build/common/test-variants/iterator/helpers/template.d.ts +7 -0
- package/build/common/test-variants/iterator/types.d.ts +102 -0
- package/build/common/test-variants/iterator/variant-navigation/-test/helpers/caches.d.ts +1 -0
- package/build/common/test-variants/iterator/variant-navigation/-test/helpers/check.d.ts +2 -0
- package/build/common/test-variants/iterator/variant-navigation/-test/helpers/create.d.ts +3 -0
- package/build/common/test-variants/iterator/variant-navigation/-test/helpers/format.d.ts +6 -0
- package/build/common/test-variants/iterator/variant-navigation/-test/helpers/parse.d.ts +8 -0
- package/build/common/test-variants/iterator/variant-navigation/-test/helpers/variants.d.ts +12 -0
- package/build/common/test-variants/iterator/variant-navigation/variantNavigation.d.ts +28 -0
- package/build/common/test-variants/log/format.d.ts +7 -0
- package/build/common/test-variants/log/getMemoryUsage.d.ts +2 -0
- package/build/common/test-variants/log/logOptions.d.ts +8 -0
- package/build/common/test-variants/run/AbortErrorSilent.d.ts +3 -0
- package/build/common/test-variants/run/RunContext.d.ts +21 -0
- package/build/common/test-variants/run/createRunResult.d.ts +6 -0
- package/build/common/test-variants/run/createRunState.d.ts +23 -0
- package/build/common/test-variants/run/errorHandlers.d.ts +20 -0
- package/build/common/test-variants/run/gcManager.d.ts +6 -0
- package/build/common/test-variants/run/resolveRunOptions.d.ts +23 -0
- package/build/common/test-variants/run/runIterationLoop.d.ts +9 -0
- package/build/common/test-variants/run/runLogger.d.ts +9 -0
- package/build/common/test-variants/run/types.d.ts +57 -0
- package/build/common/test-variants/testVariantsRun.d.ts +6 -0
- package/build/common/test-variants/types.d.ts +183 -0
- package/build/createTestVariants-BL9wiuRD.mjs +1014 -0
- package/build/createTestVariants-CpzwjKTs.js +4 -0
- package/build/node/index.cjs +1 -0
- package/build/node/index.d.ts +8 -0
- package/build/node/index.mjs +102 -0
- package/build/node/test-variants/createSaveErrorVariantsStore.d.ts +5 -0
- package/{dist/lib → build/node}/test-variants/saveErrorVariants.d.ts +4 -3
- package/package.json +109 -68
- package/dist/bundle/browser.js +0 -650
- package/dist/lib/garbage-collect/garbageCollect.cjs +0 -30
- package/dist/lib/garbage-collect/garbageCollect.d.ts +0 -2
- package/dist/lib/garbage-collect/garbageCollect.mjs +0 -26
- package/dist/lib/index.cjs +0 -23
- package/dist/lib/index.d.ts +0 -7
- package/dist/lib/index.mjs +0 -13
- package/dist/lib/test-variants/argsToString.cjs +0 -17
- package/dist/lib/test-variants/argsToString.d.ts +0 -2
- package/dist/lib/test-variants/argsToString.mjs +0 -13
- package/dist/lib/test-variants/createTestVariants.cjs +0 -91
- package/dist/lib/test-variants/createTestVariants.d.ts +0 -8
- package/dist/lib/test-variants/createTestVariants.mjs +0 -87
- package/dist/lib/test-variants/createTestVariants.perf.cjs +0 -44
- package/dist/lib/test-variants/createTestVariants.perf.d.ts +0 -1
- package/dist/lib/test-variants/createTestVariants.perf.mjs +0 -42
- package/dist/lib/test-variants/prime.cjs +0 -65
- package/dist/lib/test-variants/prime.d.ts +0 -3
- package/dist/lib/test-variants/prime.mjs +0 -59
- package/dist/lib/test-variants/prime.perf.cjs +0 -30
- package/dist/lib/test-variants/prime.perf.d.ts +0 -1
- package/dist/lib/test-variants/prime.perf.mjs +0 -28
- package/dist/lib/test-variants/saveErrorVariants.cjs +0 -97
- package/dist/lib/test-variants/saveErrorVariants.mjs +0 -69
- package/dist/lib/test-variants/testVariantsCreateTestRun.cjs +0 -80
- package/dist/lib/test-variants/testVariantsCreateTestRun.d.ts +0 -22
- package/dist/lib/test-variants/testVariantsCreateTestRun.mjs +0 -76
- package/dist/lib/test-variants/testVariantsIterable.cjs +0 -70
- package/dist/lib/test-variants/testVariantsIterable.d.ts +0 -15
- package/dist/lib/test-variants/testVariantsIterable.mjs +0 -66
- package/dist/lib/test-variants/testVariantsIterator.cjs +0 -359
- package/dist/lib/test-variants/testVariantsIterator.d.ts +0 -67
- package/dist/lib/test-variants/testVariantsIterator.mjs +0 -355
- package/dist/lib/test-variants/testVariantsRun.cjs +0 -289
- package/dist/lib/test-variants/testVariantsRun.d.ts +0 -50
- package/dist/lib/test-variants/testVariantsRun.mjs +0 -265
- package/dist/lib/test-variants/types.cjs +0 -2
- package/dist/lib/test-variants/types.d.ts +0 -20
- package/dist/lib/test-variants/types.mjs +0 -1
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/** Wait for garbage collection and return 0. It may be required for very long calculations. */
|
|
2
|
-
function garbageCollect(iterations) {
|
|
3
|
-
if (iterations == null || iterations <= 0) {
|
|
4
|
-
throw new Error(`Iterations = ${iterations}`);
|
|
5
|
-
}
|
|
6
|
-
iterations--;
|
|
7
|
-
// const time0 = Date.now()
|
|
8
|
-
const promise = new Promise(resolve => {
|
|
9
|
-
setTimeout(() => {
|
|
10
|
-
resolve(iterations);
|
|
11
|
-
}, 1);
|
|
12
|
-
});
|
|
13
|
-
return iterations <= 0
|
|
14
|
-
? promise
|
|
15
|
-
: promise.then(garbageCollect);
|
|
16
|
-
// : promise.then(o => {
|
|
17
|
-
// const gcTime = Date.now() - time0
|
|
18
|
-
// if (gcTime > 50) {
|
|
19
|
-
// console.log('GC time: ' + gcTime)
|
|
20
|
-
// o++
|
|
21
|
-
// }
|
|
22
|
-
// return garbageCollect(o)
|
|
23
|
-
// })
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export { garbageCollect };
|
package/dist/lib/index.cjs
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var testVariants_saveErrorVariants = require('./test-variants/saveErrorVariants.cjs');
|
|
6
|
-
var testVariants_createTestVariants = require('./test-variants/createTestVariants.cjs');
|
|
7
|
-
var testVariants_testVariantsIterator = require('./test-variants/testVariantsIterator.cjs');
|
|
8
|
-
require('tslib');
|
|
9
|
-
require('fs');
|
|
10
|
-
require('path');
|
|
11
|
-
require('./test-variants/testVariantsCreateTestRun.cjs');
|
|
12
|
-
require('@flemist/async-utils');
|
|
13
|
-
require('./test-variants/argsToString.cjs');
|
|
14
|
-
require('./test-variants/testVariantsRun.cjs');
|
|
15
|
-
require('@flemist/abort-controller-fast');
|
|
16
|
-
require('@flemist/time-limits');
|
|
17
|
-
require('./garbage-collect/garbageCollect.cjs');
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
exports.generateErrorVariantFilePath = testVariants_saveErrorVariants.generateErrorVariantFilePath;
|
|
22
|
-
exports.createTestVariants = testVariants_createTestVariants.createTestVariants;
|
|
23
|
-
exports.testVariantsIterator = testVariants_testVariantsIterator.testVariantsIterator;
|
package/dist/lib/index.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export { type Obj, type GenerateErrorVariantFilePathOptions, type SaveErrorVariantsOptions, } from "./test-variants/types";
|
|
2
|
-
export { generateErrorVariantFilePath, } from "./test-variants/saveErrorVariants";
|
|
3
|
-
export { type TestVariantsTemplate, type TestVariantsTemplates, type TestVariantsTemplatesExt, } from "./test-variants/testVariantsIterable";
|
|
4
|
-
export { type ErrorEvent, type OnErrorCallback, type TestVariantsTest, type TestVariantsTestResult, type TestVariantsCreateTestRunOptions, type TestVariantsTestRun, type TestVariantsTestRunResult, } from "./test-variants/testVariantsCreateTestRun";
|
|
5
|
-
export { type TestVariantsFindBestErrorOptions, type TestVariantsRunOptions, type TestVariantsBestError, type TestVariantsRunResult, } from "./test-variants/testVariantsRun";
|
|
6
|
-
export { type TestVariantsSetArgs, type TestVariantsCall, createTestVariants, } from './test-variants/createTestVariants';
|
|
7
|
-
export { type GetSeedParams, type LimitArgOnErrorOptions, type LimitArgOnError, type TestVariantsIteratorOptions, type TestVariantsIteratorLimit, type AddLimitOptions, type TestVariantsIterator, testVariantsIterator, } from "./test-variants/testVariantsIterator";
|
package/dist/lib/index.mjs
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export { generateErrorVariantFilePath } from './test-variants/saveErrorVariants.mjs';
|
|
2
|
-
export { createTestVariants } from './test-variants/createTestVariants.mjs';
|
|
3
|
-
export { testVariantsIterator } from './test-variants/testVariantsIterator.mjs';
|
|
4
|
-
import 'tslib';
|
|
5
|
-
import 'fs';
|
|
6
|
-
import 'path';
|
|
7
|
-
import './test-variants/testVariantsCreateTestRun.mjs';
|
|
8
|
-
import '@flemist/async-utils';
|
|
9
|
-
import './test-variants/argsToString.mjs';
|
|
10
|
-
import './test-variants/testVariantsRun.mjs';
|
|
11
|
-
import '@flemist/abort-controller-fast';
|
|
12
|
-
import '@flemist/time-limits';
|
|
13
|
-
import './garbage-collect/garbageCollect.mjs';
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
function argsToString(args) {
|
|
6
|
-
return JSON.stringify(args, (_, value) => {
|
|
7
|
-
if (value
|
|
8
|
-
&& typeof value === 'object'
|
|
9
|
-
&& !Array.isArray(value)
|
|
10
|
-
&& value.constructor !== Object) {
|
|
11
|
-
return value + '';
|
|
12
|
-
}
|
|
13
|
-
return value;
|
|
14
|
-
}, 2);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
exports.argsToString = argsToString;
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
function argsToString(args) {
|
|
2
|
-
return JSON.stringify(args, (_, value) => {
|
|
3
|
-
if (value
|
|
4
|
-
&& typeof value === 'object'
|
|
5
|
-
&& !Array.isArray(value)
|
|
6
|
-
&& value.constructor !== Object) {
|
|
7
|
-
return value + '';
|
|
8
|
-
}
|
|
9
|
-
return value;
|
|
10
|
-
}, 2);
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export { argsToString };
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var tslib = require('tslib');
|
|
6
|
-
var testVariants_testVariantsCreateTestRun = require('./testVariantsCreateTestRun.cjs');
|
|
7
|
-
var testVariants_testVariantsRun = require('./testVariantsRun.cjs');
|
|
8
|
-
var testVariants_testVariantsIterator = require('./testVariantsIterator.cjs');
|
|
9
|
-
require('@flemist/async-utils');
|
|
10
|
-
require('./argsToString.cjs');
|
|
11
|
-
require('@flemist/abort-controller-fast');
|
|
12
|
-
require('@flemist/time-limits');
|
|
13
|
-
require('../garbage-collect/garbageCollect.cjs');
|
|
14
|
-
require('./saveErrorVariants.cjs');
|
|
15
|
-
require('fs');
|
|
16
|
-
require('path');
|
|
17
|
-
|
|
18
|
-
function createTestVariants(test) {
|
|
19
|
-
return function testVariantsArgs(args) {
|
|
20
|
-
return function testVariantsCall(options) {
|
|
21
|
-
var _a, _b, _c, _d;
|
|
22
|
-
return tslib.__awaiter(this, void 0, void 0, function* () {
|
|
23
|
-
const testRun = testVariants_testVariantsCreateTestRun.testVariantsCreateTestRun(test, {
|
|
24
|
-
onError: options === null || options === void 0 ? void 0 : options.onError,
|
|
25
|
-
});
|
|
26
|
-
const variants = testVariants_testVariantsIterator.testVariantsIterator({
|
|
27
|
-
argsTemplates: args,
|
|
28
|
-
getSeed: (_a = options === null || options === void 0 ? void 0 : options.findBestError) === null || _a === void 0 ? void 0 : _a.getSeed,
|
|
29
|
-
repeatsPerVariant: (_b = options === null || options === void 0 ? void 0 : options.findBestError) === null || _b === void 0 ? void 0 : _b.repeatsPerVariant,
|
|
30
|
-
equals: (_c = options === null || options === void 0 ? void 0 : options.findBestError) === null || _c === void 0 ? void 0 : _c.equals,
|
|
31
|
-
limitArgOnError: (_d = options === null || options === void 0 ? void 0 : options.findBestError) === null || _d === void 0 ? void 0 : _d.limitArgOnError,
|
|
32
|
-
});
|
|
33
|
-
return testVariants_testVariantsRun.testVariantsRun(testRun, variants, options);
|
|
34
|
-
});
|
|
35
|
-
};
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
/*
|
|
39
|
-
export class TestVariants<Args extends Obj> {
|
|
40
|
-
private readonly _test: TestVariantsTest<Args>
|
|
41
|
-
test(args: Args, abortSignal: IAbortSignalFast) {
|
|
42
|
-
return this._test(args, abortSignal)
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
constructor(
|
|
46
|
-
test: TestVariantsTest<Args>,
|
|
47
|
-
) {
|
|
48
|
-
this.test = test
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
createVariants<ArgsExtra extends Obj>(
|
|
52
|
-
argsTemplates: TestVariantsTemplatesExt<Args, ArgsExtra>,
|
|
53
|
-
): Iterable<Args> {
|
|
54
|
-
return testVariantsIterable<Args, ArgsExtra>(argsTemplates)
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
createTestRun(
|
|
58
|
-
options?: null | TestVariantsCreateTestRunOptions<Args>,
|
|
59
|
-
) {
|
|
60
|
-
return testVariantsCreateTestRun<Args>(this._test, options)
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
testAll<ArgsExtra extends Obj>(
|
|
64
|
-
argsTemplates: TestVariantsTemplatesExt<Args, ArgsExtra>,
|
|
65
|
-
): TestVariantsCall<Args>
|
|
66
|
-
testAll(
|
|
67
|
-
variants: Iterable<Args>,
|
|
68
|
-
): TestVariantsCall<Args>
|
|
69
|
-
testAll<ArgsExtra extends Obj>(
|
|
70
|
-
variantsOrTemplates: Iterable<Args> | TestVariantsTemplatesExt<Args, ArgsExtra>,
|
|
71
|
-
): TestVariantsCall<Args> {
|
|
72
|
-
const variants = Symbol.iterator in variantsOrTemplates
|
|
73
|
-
? variantsOrTemplates as Iterable<Args>
|
|
74
|
-
: this.createVariants(variantsOrTemplates as TestVariantsTemplatesExt<Args, ArgsExtra>)
|
|
75
|
-
|
|
76
|
-
const _this = this
|
|
77
|
-
|
|
78
|
-
return function testVariantsCall(
|
|
79
|
-
options?: null | TestVariantsRunOptions & TestVariantsCreateTestRunOptions<Args>,
|
|
80
|
-
) {
|
|
81
|
-
const testRun = _this.createTestRun({
|
|
82
|
-
onError: options?.onError,
|
|
83
|
-
})
|
|
84
|
-
|
|
85
|
-
return testVariantsRun<Args>(testRun, variants, options)
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
*/
|
|
90
|
-
|
|
91
|
-
exports.createTestVariants = createTestVariants;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { type PromiseOrValue } from '@flemist/async-utils';
|
|
2
|
-
import { TestVariantsTemplatesExt } from "./testVariantsIterable";
|
|
3
|
-
import { TestVariantsCreateTestRunOptions, TestVariantsTest } from "./testVariantsCreateTestRun";
|
|
4
|
-
import { TestVariantsRunOptions, TestVariantsRunResult } from "./testVariantsRun";
|
|
5
|
-
import { Obj } from "./types";
|
|
6
|
-
export declare type TestVariantsCall<Args extends Obj> = <SavedArgs = Args>(options?: null | TestVariantsRunOptions<Args, SavedArgs> & TestVariantsCreateTestRunOptions<Args>) => PromiseOrValue<TestVariantsRunResult<Args>>;
|
|
7
|
-
export declare type TestVariantsSetArgs<Args extends Obj> = <ArgsExtra extends Obj>(args: TestVariantsTemplatesExt<Omit<Args, 'seed'>, Omit<ArgsExtra, 'seed'>>) => TestVariantsCall<Args>;
|
|
8
|
-
export declare function createTestVariants<Args extends Obj>(test: TestVariantsTest<Args>): TestVariantsSetArgs<Args>;
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from 'tslib';
|
|
2
|
-
import { testVariantsCreateTestRun } from './testVariantsCreateTestRun.mjs';
|
|
3
|
-
import { testVariantsRun } from './testVariantsRun.mjs';
|
|
4
|
-
import { testVariantsIterator } from './testVariantsIterator.mjs';
|
|
5
|
-
import '@flemist/async-utils';
|
|
6
|
-
import './argsToString.mjs';
|
|
7
|
-
import '@flemist/abort-controller-fast';
|
|
8
|
-
import '@flemist/time-limits';
|
|
9
|
-
import '../garbage-collect/garbageCollect.mjs';
|
|
10
|
-
import './saveErrorVariants.mjs';
|
|
11
|
-
import 'fs';
|
|
12
|
-
import 'path';
|
|
13
|
-
|
|
14
|
-
function createTestVariants(test) {
|
|
15
|
-
return function testVariantsArgs(args) {
|
|
16
|
-
return function testVariantsCall(options) {
|
|
17
|
-
var _a, _b, _c, _d;
|
|
18
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
19
|
-
const testRun = testVariantsCreateTestRun(test, {
|
|
20
|
-
onError: options === null || options === void 0 ? void 0 : options.onError,
|
|
21
|
-
});
|
|
22
|
-
const variants = testVariantsIterator({
|
|
23
|
-
argsTemplates: args,
|
|
24
|
-
getSeed: (_a = options === null || options === void 0 ? void 0 : options.findBestError) === null || _a === void 0 ? void 0 : _a.getSeed,
|
|
25
|
-
repeatsPerVariant: (_b = options === null || options === void 0 ? void 0 : options.findBestError) === null || _b === void 0 ? void 0 : _b.repeatsPerVariant,
|
|
26
|
-
equals: (_c = options === null || options === void 0 ? void 0 : options.findBestError) === null || _c === void 0 ? void 0 : _c.equals,
|
|
27
|
-
limitArgOnError: (_d = options === null || options === void 0 ? void 0 : options.findBestError) === null || _d === void 0 ? void 0 : _d.limitArgOnError,
|
|
28
|
-
});
|
|
29
|
-
return testVariantsRun(testRun, variants, options);
|
|
30
|
-
});
|
|
31
|
-
};
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
/*
|
|
35
|
-
export class TestVariants<Args extends Obj> {
|
|
36
|
-
private readonly _test: TestVariantsTest<Args>
|
|
37
|
-
test(args: Args, abortSignal: IAbortSignalFast) {
|
|
38
|
-
return this._test(args, abortSignal)
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
constructor(
|
|
42
|
-
test: TestVariantsTest<Args>,
|
|
43
|
-
) {
|
|
44
|
-
this.test = test
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
createVariants<ArgsExtra extends Obj>(
|
|
48
|
-
argsTemplates: TestVariantsTemplatesExt<Args, ArgsExtra>,
|
|
49
|
-
): Iterable<Args> {
|
|
50
|
-
return testVariantsIterable<Args, ArgsExtra>(argsTemplates)
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
createTestRun(
|
|
54
|
-
options?: null | TestVariantsCreateTestRunOptions<Args>,
|
|
55
|
-
) {
|
|
56
|
-
return testVariantsCreateTestRun<Args>(this._test, options)
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
testAll<ArgsExtra extends Obj>(
|
|
60
|
-
argsTemplates: TestVariantsTemplatesExt<Args, ArgsExtra>,
|
|
61
|
-
): TestVariantsCall<Args>
|
|
62
|
-
testAll(
|
|
63
|
-
variants: Iterable<Args>,
|
|
64
|
-
): TestVariantsCall<Args>
|
|
65
|
-
testAll<ArgsExtra extends Obj>(
|
|
66
|
-
variantsOrTemplates: Iterable<Args> | TestVariantsTemplatesExt<Args, ArgsExtra>,
|
|
67
|
-
): TestVariantsCall<Args> {
|
|
68
|
-
const variants = Symbol.iterator in variantsOrTemplates
|
|
69
|
-
? variantsOrTemplates as Iterable<Args>
|
|
70
|
-
: this.createVariants(variantsOrTemplates as TestVariantsTemplatesExt<Args, ArgsExtra>)
|
|
71
|
-
|
|
72
|
-
const _this = this
|
|
73
|
-
|
|
74
|
-
return function testVariantsCall(
|
|
75
|
-
options?: null | TestVariantsRunOptions & TestVariantsCreateTestRunOptions<Args>,
|
|
76
|
-
) {
|
|
77
|
-
const testRun = _this.createTestRun({
|
|
78
|
-
onError: options?.onError,
|
|
79
|
-
})
|
|
80
|
-
|
|
81
|
-
return testVariantsRun<Args>(testRun, variants, options)
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
*/
|
|
86
|
-
|
|
87
|
-
export { createTestVariants };
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var tslib = require('tslib');
|
|
4
|
-
var node = require('rdtsc/node');
|
|
5
|
-
var testVariants_createTestVariants = require('./createTestVariants.cjs');
|
|
6
|
-
require('./testVariantsCreateTestRun.cjs');
|
|
7
|
-
require('@flemist/async-utils');
|
|
8
|
-
require('./argsToString.cjs');
|
|
9
|
-
require('./testVariantsRun.cjs');
|
|
10
|
-
require('@flemist/abort-controller-fast');
|
|
11
|
-
require('@flemist/time-limits');
|
|
12
|
-
require('../garbage-collect/garbageCollect.cjs');
|
|
13
|
-
require('./saveErrorVariants.cjs');
|
|
14
|
-
require('fs');
|
|
15
|
-
require('path');
|
|
16
|
-
require('./testVariantsIterator.cjs');
|
|
17
|
-
|
|
18
|
-
describe('test > testVariants perf', function () {
|
|
19
|
-
this.timeout(300000);
|
|
20
|
-
it('sync', function () {
|
|
21
|
-
return tslib.__awaiter(this, void 0, void 0, function* () {
|
|
22
|
-
const testVariantsSync = testVariants_createTestVariants.createTestVariants(({ a, b, c }) => {
|
|
23
|
-
});
|
|
24
|
-
const args = {
|
|
25
|
-
a: [1, 2],
|
|
26
|
-
b: ['3', '4'],
|
|
27
|
-
c: [true, false],
|
|
28
|
-
};
|
|
29
|
-
const perfResult = node.calcPerformance({
|
|
30
|
-
time: 10000,
|
|
31
|
-
funcs: [
|
|
32
|
-
() => {
|
|
33
|
-
},
|
|
34
|
-
() => {
|
|
35
|
-
testVariantsSync(args)();
|
|
36
|
-
},
|
|
37
|
-
],
|
|
38
|
-
});
|
|
39
|
-
const result = yield testVariantsSync(args)();
|
|
40
|
-
perfResult.absoluteDiff = perfResult.absoluteDiff.map(o => o / result.iterations);
|
|
41
|
-
console.log('testVariants perf:', result);
|
|
42
|
-
});
|
|
43
|
-
});
|
|
44
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from 'tslib';
|
|
2
|
-
import { calcPerformance } from 'rdtsc/node';
|
|
3
|
-
import { createTestVariants } from './createTestVariants.mjs';
|
|
4
|
-
import './testVariantsCreateTestRun.mjs';
|
|
5
|
-
import '@flemist/async-utils';
|
|
6
|
-
import './argsToString.mjs';
|
|
7
|
-
import './testVariantsRun.mjs';
|
|
8
|
-
import '@flemist/abort-controller-fast';
|
|
9
|
-
import '@flemist/time-limits';
|
|
10
|
-
import '../garbage-collect/garbageCollect.mjs';
|
|
11
|
-
import './saveErrorVariants.mjs';
|
|
12
|
-
import 'fs';
|
|
13
|
-
import 'path';
|
|
14
|
-
import './testVariantsIterator.mjs';
|
|
15
|
-
|
|
16
|
-
describe('test > testVariants perf', function () {
|
|
17
|
-
this.timeout(300000);
|
|
18
|
-
it('sync', function () {
|
|
19
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
20
|
-
const testVariantsSync = createTestVariants(({ a, b, c }) => {
|
|
21
|
-
});
|
|
22
|
-
const args = {
|
|
23
|
-
a: [1, 2],
|
|
24
|
-
b: ['3', '4'],
|
|
25
|
-
c: [true, false],
|
|
26
|
-
};
|
|
27
|
-
const perfResult = calcPerformance({
|
|
28
|
-
time: 10000,
|
|
29
|
-
funcs: [
|
|
30
|
-
() => {
|
|
31
|
-
},
|
|
32
|
-
() => {
|
|
33
|
-
testVariantsSync(args)();
|
|
34
|
-
},
|
|
35
|
-
],
|
|
36
|
-
});
|
|
37
|
-
const result = yield testVariantsSync(args)();
|
|
38
|
-
perfResult.absoluteDiff = perfResult.absoluteDiff.map(o => o / result.iterations);
|
|
39
|
-
console.log('testVariants perf:', result);
|
|
40
|
-
});
|
|
41
|
-
});
|
|
42
|
-
});
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
const MAX_NUMBER = (Math.pow(2, 31) - 1) | 0;
|
|
6
|
-
const MAX_NUMBER_PRIME = 2147483647;
|
|
7
|
-
function isPrime(n) {
|
|
8
|
-
if (n > MAX_NUMBER) {
|
|
9
|
-
throw new Error(`Number is too large: ${n}, max is ${MAX_NUMBER}`);
|
|
10
|
-
}
|
|
11
|
-
// convert number to 32-bit integer for performance
|
|
12
|
-
n = n | 0;
|
|
13
|
-
if (n <= 1) {
|
|
14
|
-
return false;
|
|
15
|
-
}
|
|
16
|
-
if (n <= 3) {
|
|
17
|
-
return true;
|
|
18
|
-
}
|
|
19
|
-
if (n % 2 === 0 || n % 3 === 0) {
|
|
20
|
-
return false;
|
|
21
|
-
}
|
|
22
|
-
for (let i = 5; i * i <= n; i += 6) {
|
|
23
|
-
if (n % i === 0 || n % (i + 2) === 0) {
|
|
24
|
-
return false;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
return true;
|
|
28
|
-
}
|
|
29
|
-
function nextPrime(n) {
|
|
30
|
-
if (n >= MAX_NUMBER_PRIME) {
|
|
31
|
-
throw new Error(`Number is too large: ${n}, max is ${MAX_NUMBER_PRIME - 1}`);
|
|
32
|
-
}
|
|
33
|
-
// convert number to 32-bit integer for performance
|
|
34
|
-
n = n | 0;
|
|
35
|
-
if (n < 2) {
|
|
36
|
-
return 2;
|
|
37
|
-
}
|
|
38
|
-
let candidate = n + (n % 2 === 0 ? 1 : 2);
|
|
39
|
-
while (!isPrime(candidate)) {
|
|
40
|
-
candidate += 2;
|
|
41
|
-
}
|
|
42
|
-
return candidate;
|
|
43
|
-
}
|
|
44
|
-
function prevPrime(n) {
|
|
45
|
-
if (n > MAX_NUMBER) {
|
|
46
|
-
throw new Error(`Number is too large: ${n}, max is ${MAX_NUMBER}`);
|
|
47
|
-
}
|
|
48
|
-
// convert number to 32-bit integer for performance
|
|
49
|
-
n = n | 0;
|
|
50
|
-
if (n <= 2) {
|
|
51
|
-
return null;
|
|
52
|
-
}
|
|
53
|
-
let candidate = n - (n % 2 === 0 ? 1 : 2);
|
|
54
|
-
while (candidate > 2 && !isPrime(candidate)) {
|
|
55
|
-
candidate -= 2;
|
|
56
|
-
}
|
|
57
|
-
if (candidate > 2) {
|
|
58
|
-
return candidate;
|
|
59
|
-
}
|
|
60
|
-
return 2;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
exports.isPrime = isPrime;
|
|
64
|
-
exports.nextPrime = nextPrime;
|
|
65
|
-
exports.prevPrime = prevPrime;
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
const MAX_NUMBER = (Math.pow(2, 31) - 1) | 0;
|
|
2
|
-
const MAX_NUMBER_PRIME = 2147483647;
|
|
3
|
-
function isPrime(n) {
|
|
4
|
-
if (n > MAX_NUMBER) {
|
|
5
|
-
throw new Error(`Number is too large: ${n}, max is ${MAX_NUMBER}`);
|
|
6
|
-
}
|
|
7
|
-
// convert number to 32-bit integer for performance
|
|
8
|
-
n = n | 0;
|
|
9
|
-
if (n <= 1) {
|
|
10
|
-
return false;
|
|
11
|
-
}
|
|
12
|
-
if (n <= 3) {
|
|
13
|
-
return true;
|
|
14
|
-
}
|
|
15
|
-
if (n % 2 === 0 || n % 3 === 0) {
|
|
16
|
-
return false;
|
|
17
|
-
}
|
|
18
|
-
for (let i = 5; i * i <= n; i += 6) {
|
|
19
|
-
if (n % i === 0 || n % (i + 2) === 0) {
|
|
20
|
-
return false;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
return true;
|
|
24
|
-
}
|
|
25
|
-
function nextPrime(n) {
|
|
26
|
-
if (n >= MAX_NUMBER_PRIME) {
|
|
27
|
-
throw new Error(`Number is too large: ${n}, max is ${MAX_NUMBER_PRIME - 1}`);
|
|
28
|
-
}
|
|
29
|
-
// convert number to 32-bit integer for performance
|
|
30
|
-
n = n | 0;
|
|
31
|
-
if (n < 2) {
|
|
32
|
-
return 2;
|
|
33
|
-
}
|
|
34
|
-
let candidate = n + (n % 2 === 0 ? 1 : 2);
|
|
35
|
-
while (!isPrime(candidate)) {
|
|
36
|
-
candidate += 2;
|
|
37
|
-
}
|
|
38
|
-
return candidate;
|
|
39
|
-
}
|
|
40
|
-
function prevPrime(n) {
|
|
41
|
-
if (n > MAX_NUMBER) {
|
|
42
|
-
throw new Error(`Number is too large: ${n}, max is ${MAX_NUMBER}`);
|
|
43
|
-
}
|
|
44
|
-
// convert number to 32-bit integer for performance
|
|
45
|
-
n = n | 0;
|
|
46
|
-
if (n <= 2) {
|
|
47
|
-
return null;
|
|
48
|
-
}
|
|
49
|
-
let candidate = n - (n % 2 === 0 ? 1 : 2);
|
|
50
|
-
while (candidate > 2 && !isPrime(candidate)) {
|
|
51
|
-
candidate -= 2;
|
|
52
|
-
}
|
|
53
|
-
if (candidate > 2) {
|
|
54
|
-
return candidate;
|
|
55
|
-
}
|
|
56
|
-
return 2;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
export { isPrime, nextPrime, prevPrime };
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var node = require('rdtsc/node');
|
|
4
|
-
var testVariants_prime = require('./prime.cjs');
|
|
5
|
-
|
|
6
|
-
describe('test-variants > prime perf', function () {
|
|
7
|
-
this.timeout(300000);
|
|
8
|
-
it('isPrime', function () {
|
|
9
|
-
let number1 = testVariants_prime.nextPrime(Math.pow(2, 30));
|
|
10
|
-
let number2 = testVariants_prime.prevPrime(Math.pow(2, 31) - 1);
|
|
11
|
-
console.log('number:', number1);
|
|
12
|
-
console.log('number:', number2);
|
|
13
|
-
const result = node.calcPerformance({
|
|
14
|
-
time: 10000,
|
|
15
|
-
funcs: [
|
|
16
|
-
() => {
|
|
17
|
-
},
|
|
18
|
-
() => {
|
|
19
|
-
number1 = testVariants_prime.nextPrime(number1);
|
|
20
|
-
},
|
|
21
|
-
() => {
|
|
22
|
-
number2 = testVariants_prime.prevPrime(number2);
|
|
23
|
-
},
|
|
24
|
-
],
|
|
25
|
-
});
|
|
26
|
-
console.log('number1:', number1);
|
|
27
|
-
console.log('number2:', number2);
|
|
28
|
-
console.log('perf:', result);
|
|
29
|
-
});
|
|
30
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { calcPerformance } from 'rdtsc/node';
|
|
2
|
-
import { nextPrime, prevPrime } from './prime.mjs';
|
|
3
|
-
|
|
4
|
-
describe('test-variants > prime perf', function () {
|
|
5
|
-
this.timeout(300000);
|
|
6
|
-
it('isPrime', function () {
|
|
7
|
-
let number1 = nextPrime(Math.pow(2, 30));
|
|
8
|
-
let number2 = prevPrime(Math.pow(2, 31) - 1);
|
|
9
|
-
console.log('number:', number1);
|
|
10
|
-
console.log('number:', number2);
|
|
11
|
-
const result = calcPerformance({
|
|
12
|
-
time: 10000,
|
|
13
|
-
funcs: [
|
|
14
|
-
() => {
|
|
15
|
-
},
|
|
16
|
-
() => {
|
|
17
|
-
number1 = nextPrime(number1);
|
|
18
|
-
},
|
|
19
|
-
() => {
|
|
20
|
-
number2 = prevPrime(number2);
|
|
21
|
-
},
|
|
22
|
-
],
|
|
23
|
-
});
|
|
24
|
-
console.log('number1:', number1);
|
|
25
|
-
console.log('number2:', number2);
|
|
26
|
-
console.log('perf:', result);
|
|
27
|
-
});
|
|
28
|
-
});
|