@creative-introvert/tons-of-tests 1.2.0 → 2.1.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 +200 -134
- package/dist/cjs/Classify.js +18 -31
- package/dist/cjs/Classify.js.map +1 -1
- package/dist/cjs/DisplayConfig.js +2 -20
- package/dist/cjs/DisplayConfig.js.map +1 -1
- package/dist/cjs/RepositoryError.js +4 -5
- package/dist/cjs/RepositoryError.js.map +1 -1
- package/dist/cjs/Test.js +7 -21
- package/dist/cjs/Test.js.map +1 -1
- package/dist/cjs/Test.repository.js +3 -21
- package/dist/cjs/Test.repository.js.map +1 -1
- package/dist/cjs/Test.repository.types.js.map +1 -1
- package/dist/cjs/index.js +2 -20
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/internal/Classify.js +2 -2
- package/dist/cjs/internal/Classify.js.map +1 -1
- package/dist/cjs/internal/Test.js +123 -80
- package/dist/cjs/internal/Test.js.map +1 -1
- package/dist/cjs/internal/Test.repository.sqlite.js +118 -79
- package/dist/cjs/internal/Test.repository.sqlite.js.map +1 -1
- package/dist/cjs/internal/common.js +1 -5
- package/dist/cjs/internal/common.js.map +1 -1
- package/dist/cjs/internal/diff.js +1 -5
- package/dist/cjs/internal/diff.js.map +1 -1
- package/dist/cjs/internal/format-diff.js +2 -6
- package/dist/cjs/internal/format-diff.js.map +1 -1
- package/dist/cjs/internal/lib/Schema.js +3 -3
- package/dist/cjs/internal/lib/Schema.js.map +1 -1
- package/dist/cjs/internal/lib/jsondiffpatch/contexts/diff.js +1 -5
- package/dist/cjs/internal/lib/jsondiffpatch/contexts/diff.js.map +1 -1
- package/dist/cjs/internal/lib/jsondiffpatch/contexts/patch.js +1 -5
- package/dist/cjs/internal/lib/jsondiffpatch/contexts/patch.js.map +1 -1
- package/dist/cjs/internal/lib/jsondiffpatch/contexts/reverse.js +1 -5
- package/dist/cjs/internal/lib/jsondiffpatch/contexts/reverse.js.map +1 -1
- package/dist/cjs/internal/lib/jsondiffpatch/diffpatcher.js +3 -25
- package/dist/cjs/internal/lib/jsondiffpatch/diffpatcher.js.map +1 -1
- package/dist/cjs/internal/lib/jsondiffpatch/filters/arrays.js +1 -5
- package/dist/cjs/internal/lib/jsondiffpatch/filters/arrays.js.map +1 -1
- package/dist/cjs/internal/lib/jsondiffpatch/filters/nested.js +1 -5
- package/dist/cjs/internal/lib/jsondiffpatch/filters/nested.js.map +1 -1
- package/dist/cjs/internal/lib/jsondiffpatch/formatters/annotated.js +1 -5
- package/dist/cjs/internal/lib/jsondiffpatch/formatters/annotated.js.map +1 -1
- package/dist/cjs/internal/lib/jsondiffpatch/formatters/html.js +1 -5
- package/dist/cjs/internal/lib/jsondiffpatch/formatters/html.js.map +1 -1
- package/dist/cjs/internal/lib/jsondiffpatch/formatters/jsonpatch.js +1 -5
- package/dist/cjs/internal/lib/jsondiffpatch/formatters/jsonpatch.js.map +1 -1
- package/dist/cjs/internal/lib/jsondiffpatch/index.js +1 -5
- package/dist/cjs/internal/lib/jsondiffpatch/index.js.map +1 -1
- package/dist/cjs/internal/lib/jsondiffpatch/with-text-diffs.js +1 -5
- package/dist/cjs/internal/lib/jsondiffpatch/with-text-diffs.js.map +1 -1
- package/dist/cjs/internal/pack.js +28 -50
- package/dist/cjs/internal/pack.js.map +1 -1
- package/dist/cjs/internal/stats.js +9 -7
- package/dist/cjs/internal/stats.js.map +1 -1
- package/dist/cjs/internal/summarize.js +19 -18
- package/dist/cjs/internal/summarize.js.map +1 -1
- package/dist/cjs/package.json +1 -0
- package/dist/dts/Classify.d.ts +24 -57
- package/dist/dts/Classify.d.ts.map +1 -1
- package/dist/dts/DisplayConfig.d.ts +2 -1
- package/dist/dts/DisplayConfig.d.ts.map +1 -1
- package/dist/dts/RepositoryError.d.ts +21 -22
- package/dist/dts/RepositoryError.d.ts.map +1 -1
- package/dist/dts/Show.d.ts +3 -3
- package/dist/dts/Show.d.ts.map +1 -1
- package/dist/dts/Test.d.ts +53 -23
- package/dist/dts/Test.d.ts.map +1 -1
- package/dist/dts/Test.repository.d.ts +4 -4
- package/dist/dts/Test.repository.d.ts.map +1 -1
- package/dist/dts/Test.repository.types.d.ts +16 -20
- package/dist/dts/Test.repository.types.d.ts.map +1 -1
- package/dist/dts/internal/Classify.d.ts +1 -1
- package/dist/dts/internal/Classify.d.ts.map +1 -1
- package/dist/dts/internal/Test.d.ts +24 -12
- package/dist/dts/internal/Test.d.ts.map +1 -1
- package/dist/dts/internal/Test.repository.sqlite.d.ts +3 -2
- package/dist/dts/internal/Test.repository.sqlite.d.ts.map +1 -1
- package/dist/dts/internal/lib/Schema.d.ts +2 -2
- package/dist/dts/internal/lib/Schema.d.ts.map +1 -1
- package/dist/dts/internal/lib/jsondiffpatch/filters/lcs.d.ts +2 -1
- package/dist/dts/internal/lib/jsondiffpatch/filters/lcs.d.ts.map +1 -1
- package/dist/dts/internal/pack.d.ts.map +1 -1
- package/dist/dts/internal/stats.d.ts.map +1 -1
- package/dist/dts/internal/summarize.d.ts.map +1 -1
- package/dist/esm/Classify.js +28 -50
- package/dist/esm/Classify.js.map +1 -1
- package/dist/esm/DisplayConfig.js +2 -28
- package/dist/esm/DisplayConfig.js.map +1 -1
- package/dist/esm/RepositoryError.js +13 -24
- package/dist/esm/RepositoryError.js.map +1 -1
- package/dist/esm/Show.js +3 -26
- package/dist/esm/Show.js.map +1 -1
- package/dist/esm/Test.js +9 -12
- package/dist/esm/Test.js.map +1 -1
- package/dist/esm/Test.repository.js +8 -41
- package/dist/esm/Test.repository.js.map +1 -1
- package/dist/esm/Test.repository.types.js +5 -12
- package/dist/esm/Test.repository.types.js.map +1 -1
- package/dist/esm/index.js +7 -45
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/Classify.js +16 -31
- package/dist/esm/internal/Classify.js.map +1 -1
- package/dist/esm/internal/DisplayConfig.js +1 -8
- package/dist/esm/internal/DisplayConfig.js.map +1 -1
- package/dist/esm/internal/Test.js +144 -113
- package/dist/esm/internal/Test.js.map +1 -1
- package/dist/esm/internal/Test.repository.sqlite.js +186 -160
- package/dist/esm/internal/Test.repository.sqlite.js.map +1 -1
- package/dist/esm/internal/common.js +15 -32
- package/dist/esm/internal/common.js.map +1 -1
- package/dist/esm/internal/diff.js +18 -30
- package/dist/esm/internal/diff.js.map +1 -1
- package/dist/esm/internal/format-diff.js +9 -22
- package/dist/esm/internal/format-diff.js.map +1 -1
- package/dist/esm/internal/lib/Schema.js +4 -11
- package/dist/esm/internal/lib/Schema.js.map +1 -1
- package/dist/esm/internal/lib/jsondiffpatch/clone.js +1 -7
- package/dist/esm/internal/lib/jsondiffpatch/clone.js.map +1 -1
- package/dist/esm/internal/lib/jsondiffpatch/contexts/context.js +1 -8
- package/dist/esm/internal/lib/jsondiffpatch/contexts/context.js.map +1 -1
- package/dist/esm/internal/lib/jsondiffpatch/contexts/diff.js +5 -16
- package/dist/esm/internal/lib/jsondiffpatch/contexts/diff.js.map +1 -1
- package/dist/esm/internal/lib/jsondiffpatch/contexts/patch.js +3 -14
- package/dist/esm/internal/lib/jsondiffpatch/contexts/patch.js.map +1 -1
- package/dist/esm/internal/lib/jsondiffpatch/contexts/reverse.js +3 -14
- package/dist/esm/internal/lib/jsondiffpatch/contexts/reverse.js.map +1 -1
- package/dist/esm/internal/lib/jsondiffpatch/date-reviver.js +1 -7
- package/dist/esm/internal/lib/jsondiffpatch/date-reviver.js.map +1 -1
- package/dist/esm/internal/lib/jsondiffpatch/diffpatcher.js +20 -51
- package/dist/esm/internal/lib/jsondiffpatch/diffpatcher.js.map +1 -1
- package/dist/esm/internal/lib/jsondiffpatch/filters/arrays.js +16 -28
- package/dist/esm/internal/lib/jsondiffpatch/filters/arrays.js.map +1 -1
- package/dist/esm/internal/lib/jsondiffpatch/filters/dates.js +1 -7
- package/dist/esm/internal/lib/jsondiffpatch/filters/dates.js.map +1 -1
- package/dist/esm/internal/lib/jsondiffpatch/filters/lcs.js +1 -7
- package/dist/esm/internal/lib/jsondiffpatch/filters/lcs.js.map +1 -1
- package/dist/esm/internal/lib/jsondiffpatch/filters/nested.js +13 -27
- package/dist/esm/internal/lib/jsondiffpatch/filters/nested.js.map +1 -1
- package/dist/esm/internal/lib/jsondiffpatch/filters/texts.js +3 -9
- package/dist/esm/internal/lib/jsondiffpatch/filters/texts.js.map +1 -1
- package/dist/esm/internal/lib/jsondiffpatch/filters/trivial.js +3 -9
- package/dist/esm/internal/lib/jsondiffpatch/filters/trivial.js.map +1 -1
- package/dist/esm/internal/lib/jsondiffpatch/formatters/annotated.js +4 -16
- package/dist/esm/internal/lib/jsondiffpatch/formatters/annotated.js.map +1 -1
- package/dist/esm/internal/lib/jsondiffpatch/formatters/base.js +1 -7
- package/dist/esm/internal/lib/jsondiffpatch/formatters/base.js.map +1 -1
- package/dist/esm/internal/lib/jsondiffpatch/formatters/html.js +6 -21
- package/dist/esm/internal/lib/jsondiffpatch/formatters/html.js.map +1 -1
- package/dist/esm/internal/lib/jsondiffpatch/formatters/jsonpatch.js +6 -20
- package/dist/esm/internal/lib/jsondiffpatch/formatters/jsonpatch.js.map +1 -1
- package/dist/esm/internal/lib/jsondiffpatch/index.js +15 -42
- package/dist/esm/internal/lib/jsondiffpatch/index.js.map +1 -1
- package/dist/esm/internal/lib/jsondiffpatch/pipe.js +1 -7
- package/dist/esm/internal/lib/jsondiffpatch/pipe.js.map +1 -1
- package/dist/esm/internal/lib/jsondiffpatch/processor.js +1 -7
- package/dist/esm/internal/lib/jsondiffpatch/processor.js.map +1 -1
- package/dist/esm/internal/lib/jsondiffpatch/types.js +1 -6
- package/dist/esm/internal/lib/jsondiffpatch/with-text-diffs.js +22 -49
- package/dist/esm/internal/lib/jsondiffpatch/with-text-diffs.js.map +1 -1
- package/dist/esm/internal/pack.js +26 -55
- package/dist/esm/internal/pack.js.map +1 -1
- package/dist/esm/internal/stats.js +29 -35
- package/dist/esm/internal/stats.js.map +1 -1
- package/dist/esm/internal/summarize.js +45 -52
- package/dist/esm/internal/summarize.js.map +1 -1
- package/package.json +11 -9
- package/dist/cjs/Error.js +0 -10
- package/dist/cjs/Error.js.map +0 -1
- package/dist/cjs/internal/Classify.spec.js +0 -223
- package/dist/cjs/internal/Classify.spec.js.map +0 -1
- package/dist/cjs/internal/Test.repository.sqlite.spec.js +0 -294
- package/dist/cjs/internal/Test.repository.sqlite.spec.js.map +0 -1
- package/dist/cjs/internal/Test.spec.js +0 -260
- package/dist/cjs/internal/Test.spec.js.map +0 -1
- package/dist/cjs/internal/format-diff.spec.js +0 -103
- package/dist/cjs/internal/format-diff.spec.js.map +0 -1
- package/dist/cjs/pack.js +0 -28
- package/dist/cjs/pack.js.map +0 -1
- package/dist/dts/Error.d.ts +0 -10
- package/dist/dts/Error.d.ts.map +0 -1
- package/dist/dts/internal/Classify.spec.d.ts +0 -2
- package/dist/dts/internal/Classify.spec.d.ts.map +0 -1
- package/dist/dts/internal/Test.repository.sqlite.spec.d.ts +0 -2
- package/dist/dts/internal/Test.repository.sqlite.spec.d.ts.map +0 -1
- package/dist/dts/internal/Test.spec.d.ts +0 -2
- package/dist/dts/internal/Test.spec.d.ts.map +0 -1
- package/dist/dts/internal/format-diff.spec.d.ts +0 -2
- package/dist/dts/internal/format-diff.spec.d.ts.map +0 -1
- package/dist/dts/pack.d.ts +0 -2
- package/dist/dts/pack.d.ts.map +0 -1
- package/dist/esm/Error.js +0 -10
- package/dist/esm/Error.js.map +0 -1
- package/dist/esm/internal/Classify.spec.js +0 -223
- package/dist/esm/internal/Classify.spec.js.map +0 -1
- package/dist/esm/internal/Test.repository.sqlite.spec.js +0 -294
- package/dist/esm/internal/Test.repository.sqlite.spec.js.map +0 -1
- package/dist/esm/internal/Test.spec.js +0 -241
- package/dist/esm/internal/Test.spec.js.map +0 -1
- package/dist/esm/internal/format-diff.spec.js +0 -103
- package/dist/esm/internal/format-diff.spec.js.map +0 -1
- package/dist/esm/pack.js +0 -28
- package/dist/esm/pack.js.map +0 -1
package/dist/cjs/Test.js
CHANGED
|
@@ -3,30 +3,16 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.runCollectRecord = exports.makeSha256 = exports.diff = exports.all = void 0;
|
|
6
|
+
exports.runCollectRecord = exports.resultKey = exports.makeSha256 = exports.filterResults = exports.diff = exports.all = void 0;
|
|
7
7
|
var internal = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("./internal/Test.js"));
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
n = new WeakMap();
|
|
11
|
-
return (_interopRequireWildcard = function (e, t) {
|
|
12
|
-
if (!t && e && e.__esModule) return e;
|
|
13
|
-
var o,
|
|
14
|
-
i,
|
|
15
|
-
f = {
|
|
16
|
-
__proto__: null,
|
|
17
|
-
default: e
|
|
18
|
-
};
|
|
19
|
-
if (null === e || "object" != typeof e && "function" != typeof e) return f;
|
|
20
|
-
if (o = t ? n : r) {
|
|
21
|
-
if (o.has(e)) return o.get(e);
|
|
22
|
-
o.set(e, f);
|
|
23
|
-
}
|
|
24
|
-
for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]);
|
|
25
|
-
return f;
|
|
26
|
-
})(e, t);
|
|
27
|
-
}
|
|
8
|
+
var cache;
|
|
9
|
+
function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var r, c, a = Object.defineProperty, n = { __proto__: null, default: e }; if (Object(e) !== e) return n; if (cache || "function" != typeof WeakMap || (cache = new WeakMap()), cache) { if (cache.has(e)) return cache.get(e); cache.set(e, n); } for (c in e) "default" !== c && {}.hasOwnProperty.call(e, c) && ((r = a && Object.getOwnPropertyDescriptor(e, c)) && (r.get || r.set) ? a(n, c, r) : n[c] = e[c]); return n; }
|
|
28
10
|
const all = exports.all = internal.all;
|
|
29
11
|
const diff = exports.diff = internal.diff;
|
|
30
12
|
const makeSha256 = exports.makeSha256 = internal.makeSha256;
|
|
13
|
+
/** Builds the lookup key for one evaluation within its original test case. */
|
|
14
|
+
const resultKey = exports.resultKey = internal.resultKey;
|
|
31
15
|
const runCollectRecord = exports.runCollectRecord = internal.runCollectRecord;
|
|
16
|
+
/** Keeps matching results and recalculates counts and case timing statistics. */
|
|
17
|
+
const filterResults = exports.filterResults = internal.filterResults;
|
|
32
18
|
//# sourceMappingURL=Test.js.map
|
package/dist/cjs/Test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Test.js","names":["internal","_interopRequireWildcard","require","e","t","
|
|
1
|
+
{"version":3,"file":"Test.js","names":["internal","_interopRequireWildcard","require","cache","e","t","__esModule","r","c","a","Object","defineProperty","n","__proto__","default","WeakMap","has","get","set","hasOwnProperty","call","getOwnPropertyDescriptor","all","exports","diff","makeSha256","resultKey","runCollectRecord","filterResults"],"sources":["../../src/Test.ts"],"sourcesContent":[null],"mappings":";;;;;;AAGA,IAAAA,QAAA,gBAAAC,uBAAA,cAAAC,OAAA;AAA+C,IAAAC,KAAA;AAAA,SAAAF,wBAAAG,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAE,UAAA,SAAAF,CAAA,MAAAG,CAAA,EAAAC,CAAA,EAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,QAAAM,MAAA,CAAAN,CAAA,MAAAA,CAAA,SAAAQ,CAAA,MAAAT,KAAA,yBAAAY,OAAA,KAAAZ,KAAA,OAAAY,OAAA,KAAAZ,KAAA,QAAAA,KAAA,CAAAa,GAAA,CAAAZ,CAAA,UAAAD,KAAA,CAAAc,GAAA,CAAAb,CAAA,GAAAD,KAAA,CAAAe,GAAA,CAAAd,CAAA,EAAAQ,CAAA,UAAAJ,CAAA,IAAAJ,CAAA,gBAAAI,CAAA,OAAAW,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAI,CAAA,OAAAD,CAAA,GAAAE,CAAA,IAAAC,MAAA,CAAAW,wBAAA,CAAAjB,CAAA,EAAAI,CAAA,OAAAD,CAAA,CAAAU,GAAA,IAAAV,CAAA,CAAAW,GAAA,IAAAT,CAAA,CAAAG,CAAA,EAAAJ,CAAA,EAAAD,CAAA,IAAAK,CAAA,CAAAJ,CAAA,IAAAJ,CAAA,CAAAI,CAAA,WAAAI,CAAA;AAyGxC,MAAMU,GAAG,GAAAC,OAAA,CAAAD,GAAA,GAAGtB,QAAQ,CAACsB,GAAG;AACxB,MAAME,IAAI,GAAAD,OAAA,CAAAC,IAAA,GAAGxB,QAAQ,CAACwB,IAAI;AAC1B,MAAMC,UAAU,GAAAF,OAAA,CAAAE,UAAA,GAAGzB,QAAQ,CAACyB,UAAU;AAC7C;AACO,MAAMC,SAAS,GAAAH,OAAA,CAAAG,SAAA,GAAG1B,QAAQ,CAAC0B,SAAS;AACpC,MAAMC,gBAAgB,GAAAJ,OAAA,CAAAI,gBAAA,GAAG3B,QAAQ,CAAC2B,gBAAgB;AACzD;AACO,MAAMC,aAAa,GAAAL,OAAA,CAAAK,aAAA,GAAG5B,QAAQ,CAAC4B,aAAa","ignoreList":[]}
|
|
@@ -14,31 +14,13 @@ var Sqlite = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@effect/
|
|
|
14
14
|
var _effect = /*#__PURE__*/require("effect");
|
|
15
15
|
var _TestRepositorySqlite = /*#__PURE__*/require("./internal/Test.repository.sqlite.js");
|
|
16
16
|
var _TestRepositoryTypes = /*#__PURE__*/require("./Test.repository.types.js");
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
n = new WeakMap();
|
|
20
|
-
return (_interopRequireWildcard = function (e, t) {
|
|
21
|
-
if (!t && e && e.__esModule) return e;
|
|
22
|
-
var o,
|
|
23
|
-
i,
|
|
24
|
-
f = {
|
|
25
|
-
__proto__: null,
|
|
26
|
-
default: e
|
|
27
|
-
};
|
|
28
|
-
if (null === e || "object" != typeof e && "function" != typeof e) return f;
|
|
29
|
-
if (o = t ? n : r) {
|
|
30
|
-
if (o.has(e)) return o.get(e);
|
|
31
|
-
o.set(e, f);
|
|
32
|
-
}
|
|
33
|
-
for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]);
|
|
34
|
-
return f;
|
|
35
|
-
})(e, t);
|
|
36
|
-
}
|
|
17
|
+
var cache;
|
|
18
|
+
function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var r, c, a = Object.defineProperty, n = { __proto__: null, default: e }; if (Object(e) !== e) return n; if (cache || "function" != typeof WeakMap || (cache = new WeakMap()), cache) { if (cache.has(e)) return cache.get(e); cache.set(e, n); } for (c in e) "default" !== c && {}.hasOwnProperty.call(e, c) && ((r = a && Object.getOwnPropertyDescriptor(e, c)) && (r.get || r.set) ? a(n, c, r) : n[c] = e[c]); return n; }
|
|
37
19
|
const makeTestLayer = () => _effect.Layer.provideMerge(TestRepository.Live, Sqlite.SqliteClient.layer({
|
|
38
20
|
filename: ':memory:'
|
|
39
21
|
}));
|
|
40
22
|
let testLayerCache;
|
|
41
|
-
class TestRepository extends /*#__PURE__*/_effect.Context.
|
|
23
|
+
class TestRepository extends /*#__PURE__*/_effect.Context.Service()('TestRepository') {
|
|
42
24
|
// Lazy getters: makeTestRepository lives in an internal module that has
|
|
43
25
|
// its own import edge back here, so we evaluate these at access time
|
|
44
26
|
// rather than at class definition time to avoid the circular init order.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Test.repository.js","names":["Sqlite","_interopRequireWildcard","require","_effect","_TestRepositorySqlite","_TestRepositoryTypes","e","t","
|
|
1
|
+
{"version":3,"file":"Test.repository.js","names":["Sqlite","_interopRequireWildcard","require","_effect","_TestRepositorySqlite","_TestRepositoryTypes","cache","e","t","__esModule","r","c","a","Object","defineProperty","n","__proto__","default","WeakMap","has","get","set","hasOwnProperty","call","getOwnPropertyDescriptor","makeTestLayer","Layer","provideMerge","TestRepository","Live","SqliteClient","layer","filename","testLayerCache","Context","Service","effect","makeTestRepository","dbPath","provide","TestLayer","exports"],"sources":["../../src/Test.repository.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;AAAA,IAAAA,MAAA,gBAAAC,uBAAA,cAAAC,OAAA;AACA,IAAAC,OAAA,gBAAAD,OAAA;AAEA,IAAAE,qBAAA,gBAAAF,OAAA;AAGA,IAAAG,oBAAA,gBAAAH,OAAA;AAAmD,IAAAI,KAAA;AAAA,SAAAL,wBAAAM,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAE,UAAA,SAAAF,CAAA,MAAAG,CAAA,EAAAC,CAAA,EAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,QAAAM,MAAA,CAAAN,CAAA,MAAAA,CAAA,SAAAQ,CAAA,MAAAT,KAAA,yBAAAY,OAAA,KAAAZ,KAAA,OAAAY,OAAA,KAAAZ,KAAA,QAAAA,KAAA,CAAAa,GAAA,CAAAZ,CAAA,UAAAD,KAAA,CAAAc,GAAA,CAAAb,CAAA,GAAAD,KAAA,CAAAe,GAAA,CAAAd,CAAA,EAAAQ,CAAA,UAAAJ,CAAA,IAAAJ,CAAA,gBAAAI,CAAA,OAAAW,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAI,CAAA,OAAAD,CAAA,GAAAE,CAAA,IAAAC,MAAA,CAAAW,wBAAA,CAAAjB,CAAA,EAAAI,CAAA,OAAAD,CAAA,CAAAU,GAAA,IAAAV,CAAA,CAAAW,GAAA,IAAAT,CAAA,CAAAG,CAAA,EAAAJ,CAAA,EAAAD,CAAA,IAAAK,CAAA,CAAAJ,CAAA,IAAAJ,CAAA,CAAAI,CAAA,WAAAI,CAAA;AAQnD,MAAMU,aAAa,GAAGA,CAAA,KAClBC,aAAK,CAACC,YAAY,CACdC,cAAc,CAACC,IAAI,EACnB7B,MAAM,CAAC8B,YAAY,CAACC,KAAK,CAAC;EAACC,QAAQ,EAAE;AAAU,CAAC,CAAC,CACpD;AAEL,IAAIC,cAA4D;AAE1D,MAAOL,cAAe,sBAAQM,eAAO,CAACC,OAAO,EAGhD,CAAC,gBAAgB,CAAC;EACjB;EACA;EACA;EACA,WAAWN,IAAIA,CAAA;IACX,OAAOH,aAAK,CAACU,MAAM,CAAC,IAAI,EAAEC,wCAAkB,CAAC;EACjD;EACA,OAAON,KAAKA,CAACO,MAAc;IACvB,OAAOZ,aAAK,CAACa,OAAO,CAChB,IAAI,CAACV,IAAI,EACT7B,MAAM,CAAC8B,YAAY,CAACC,KAAK,CAAC;MAACC,QAAQ,EAAEM;IAAM,CAAC,CAAC,CAChD;EACL;EAEA,WAAWE,SAASA,CAAA;IAChB,OAAQP,cAAc,KAAKR,aAAa,EAAE;EAC9C;;AACHgB,OAAA,CAAAb,cAAA,GAAAA,cAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Test.repository.types.js","names":["_effect","require","TestRun","Schema","Class","id","Int","name","String","hash","NullOr","exports"],"sources":["../../src/Test.repository.types.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA,IAAAA,OAAA,gBAAAC,OAAA;
|
|
1
|
+
{"version":3,"file":"Test.repository.types.js","names":["_effect","require","TestRun","Schema","Class","id","Int","name","String","hash","NullOr","exports"],"sources":["../../src/Test.repository.types.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA,IAAAA,OAAA,gBAAAC,OAAA;AAoBM,MAAOC,OAAQ,sBAAQC,cAAM,CAACC,KAAK,CAAU,SAAS,CAAC,CAAC;EAC1DC,EAAE,EAAEF,cAAM,CAACG,GAAG;EACdC,IAAI,EAAEJ,cAAM,CAACK,MAAM;EACnBC,IAAI,eAAEN,cAAM,CAACO,MAAM,CAACP,cAAM,CAACK,MAAM;CACpC,CAAC;AAAGG,OAAA,CAAAT,OAAA,GAAAA,OAAA","ignoreList":[]}
|
package/dist/cjs/index.js
CHANGED
|
@@ -23,24 +23,6 @@ var _Test = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("./Test.js
|
|
|
23
23
|
exports.Test = _Test;
|
|
24
24
|
var _TestRepository = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("./Test.repository.js"));
|
|
25
25
|
exports.TestRepository = _TestRepository;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
n = new WeakMap();
|
|
29
|
-
return (_interopRequireWildcard = function (e, t) {
|
|
30
|
-
if (!t && e && e.__esModule) return e;
|
|
31
|
-
var o,
|
|
32
|
-
i,
|
|
33
|
-
f = {
|
|
34
|
-
__proto__: null,
|
|
35
|
-
default: e
|
|
36
|
-
};
|
|
37
|
-
if (null === e || "object" != typeof e && "function" != typeof e) return f;
|
|
38
|
-
if (o = t ? n : r) {
|
|
39
|
-
if (o.has(e)) return o.get(e);
|
|
40
|
-
o.set(e, f);
|
|
41
|
-
}
|
|
42
|
-
for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]);
|
|
43
|
-
return f;
|
|
44
|
-
})(e, t);
|
|
45
|
-
}
|
|
26
|
+
var cache;
|
|
27
|
+
function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var r, c, a = Object.defineProperty, n = { __proto__: null, default: e }; if (Object(e) !== e) return n; if (cache || "function" != typeof WeakMap || (cache = new WeakMap()), cache) { if (cache.has(e)) return cache.get(e); cache.set(e, n); } for (c in e) "default" !== c && {}.hasOwnProperty.call(e, c) && ((r = a && Object.getOwnPropertyDescriptor(e, c)) && (r.get || r.set) ? a(n, c, r) : n[c] = e[c]); return n; }
|
|
46
28
|
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_pack","require","_Show","_interopRequireWildcard","exports","Show","_Test","Test","_TestRepository","TestRepository","e","t","
|
|
1
|
+
{"version":3,"file":"index.js","names":["_pack","require","_Show","_interopRequireWildcard","exports","Show","_Test","Test","_TestRepository","TestRepository","cache","e","t","__esModule","r","c","a","Object","defineProperty","n","__proto__","default","WeakMap","has","get","set","hasOwnProperty","call","getOwnPropertyDescriptor"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;AAGA,IAAAA,KAAA,gBAAAC,OAAA;AAAwC,IAAAC,KAAA,gBAAAC,uBAAA,cAAAF,OAAA;AAAAG,OAAA,CAAAC,IAAA,GAAAH,KAAA;AAAA,IAAAI,KAAA,gBAAAH,uBAAA,cAAAF,OAAA;AAAAG,OAAA,CAAAG,IAAA,GAAAD,KAAA;AAAA,IAAAE,eAAA,gBAAAL,uBAAA,cAAAF,OAAA;AAAAG,OAAA,CAAAK,cAAA,GAAAD,eAAA;AAAA,IAAAE,KAAA;AAAA,SAAAP,wBAAAQ,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAE,UAAA,SAAAF,CAAA,MAAAG,CAAA,EAAAC,CAAA,EAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,QAAAM,MAAA,CAAAN,CAAA,MAAAA,CAAA,SAAAQ,CAAA,MAAAT,KAAA,yBAAAY,OAAA,KAAAZ,KAAA,OAAAY,OAAA,KAAAZ,KAAA,QAAAA,KAAA,CAAAa,GAAA,CAAAZ,CAAA,UAAAD,KAAA,CAAAc,GAAA,CAAAb,CAAA,GAAAD,KAAA,CAAAe,GAAA,CAAAd,CAAA,EAAAQ,CAAA,UAAAJ,CAAA,IAAAJ,CAAA,gBAAAI,CAAA,OAAAW,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAI,CAAA,OAAAD,CAAA,GAAAE,CAAA,IAAAC,MAAA,CAAAW,wBAAA,CAAAjB,CAAA,EAAAI,CAAA,OAAAD,CAAA,CAAAU,GAAA,IAAAV,CAAA,CAAAW,GAAA,IAAAT,CAAA,CAAAG,CAAA,EAAAJ,CAAA,EAAAD,CAAA,IAAAK,CAAA,CAAAJ,CAAA,IAAAJ,CAAA,CAAAI,CAAA,WAAAI,CAAA","ignoreList":[]}
|
|
@@ -12,7 +12,7 @@ const values = exports.values = {
|
|
|
12
12
|
FP: 'FP',
|
|
13
13
|
FN: 'FN'
|
|
14
14
|
};
|
|
15
|
-
const LabelSchema = exports.LabelSchema = /*#__PURE__*/_effect.Schema.
|
|
15
|
+
const LabelSchema = exports.LabelSchema = /*#__PURE__*/_effect.Schema.Literals(['TP', 'TN', 'FP', 'FN']);
|
|
16
16
|
const defaultIsEqual = (a, b) =>
|
|
17
17
|
// FIXME: Expensive, but don't know how else to cheaply remove
|
|
18
18
|
// `undefined`, which is a common source of false results.
|
|
@@ -69,7 +69,7 @@ const median = xs => {
|
|
|
69
69
|
const sorted = xs.slice().sort((a, b) => a - b);
|
|
70
70
|
const index = Math.floor(sorted.length / 2);
|
|
71
71
|
const r = sorted.length % 2 === 0 ? (sorted[index - 1] + sorted[index]) / 2 : sorted[index];
|
|
72
|
-
return _effect.Option.
|
|
72
|
+
return _effect.Option.fromNullishOr(r);
|
|
73
73
|
};
|
|
74
74
|
exports.median = median;
|
|
75
75
|
//# sourceMappingURL=Classify.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Classify.js","names":["_nodeUtil","require","_effect","values","exports","TN","TP","FP","FN","LabelSchema","Schema","
|
|
1
|
+
{"version":3,"file":"Classify.js","names":["_nodeUtil","require","_effect","values","exports","TN","TP","FP","FN","LabelSchema","Schema","Literals","defaultIsEqual","a","b","isDeepStrictEqual","JSON","parse","stringify","defaultIsNil","x","undefined","makeClassify","isEqual","isOutputNil","isExpectedNil","output","expected","oNil","eNil","precision","m","r","Number","isNaN","recall","min","xs","reduce","POSITIVE_INFINITY","max","NEGATIVE_INFINITY","mean","length","median","Option","none","sorted","slice","sort","index","Math","floor","fromNullishOr"],"sources":["../../../src/internal/Classify.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -3,64 +3,70 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.test = exports.runCollectRecord = exports.makeSha256 = exports.diff = exports.all = exports.TestResultSchema = void 0;
|
|
6
|
+
exports.test = exports.runCollectRecord = exports.resultKey = exports.makeSha256 = exports.filterResults = exports.diff = exports.all = exports.TestResultSchema = void 0;
|
|
7
7
|
var _nodeCrypto = /*#__PURE__*/require("node:crypto");
|
|
8
|
-
var _nodePerf_hooks = /*#__PURE__*/require("node:perf_hooks");
|
|
9
8
|
var _effect = /*#__PURE__*/require("effect");
|
|
10
9
|
var _Classify = /*#__PURE__*/require("../Classify.js");
|
|
11
10
|
var _Classify2 = /*#__PURE__*/require("./Classify.js");
|
|
12
11
|
const makeSha256 = input => {
|
|
12
|
+
// This public synchronous helper keeps result IDs stable across releases.
|
|
13
13
|
return (0, _nodeCrypto.createHash)('sha256').update(JSON.stringify(input)).digest('hex');
|
|
14
14
|
};
|
|
15
15
|
exports.makeSha256 = makeSha256;
|
|
16
16
|
const TestResult = {
|
|
17
17
|
make: args => {
|
|
18
18
|
const {
|
|
19
|
+
hashTestCase,
|
|
20
|
+
key,
|
|
19
21
|
label,
|
|
20
22
|
input,
|
|
21
23
|
result,
|
|
22
24
|
expected
|
|
23
25
|
} = args;
|
|
24
|
-
//
|
|
25
|
-
//
|
|
26
|
-
// Without `tags`, as those are just for filtering.
|
|
26
|
+
// Reordering cases or evaluations must not change a result's identity.
|
|
27
|
+
// Tags and timing also stay out of the ID.
|
|
27
28
|
const id = makeSha256({
|
|
29
|
+
hashTestCase,
|
|
30
|
+
key,
|
|
28
31
|
label,
|
|
29
32
|
input,
|
|
30
33
|
result,
|
|
31
34
|
expected
|
|
32
35
|
});
|
|
33
|
-
const hashTestCase = makeSha256({
|
|
34
|
-
input,
|
|
35
|
-
expected
|
|
36
|
-
});
|
|
37
36
|
return {
|
|
38
37
|
...args,
|
|
39
|
-
id
|
|
40
|
-
hashTestCase
|
|
38
|
+
id
|
|
41
39
|
};
|
|
42
40
|
}
|
|
43
41
|
};
|
|
42
|
+
const resultKey = ({
|
|
43
|
+
hashTestCase,
|
|
44
|
+
key
|
|
45
|
+
}) => JSON.stringify([hashTestCase, key]);
|
|
46
|
+
exports.resultKey = resultKey;
|
|
47
|
+
const defaultClassify = /*#__PURE__*/(0, _Classify2.makeClassify)({
|
|
48
|
+
isEqual: _Classify2.defaultIsEqual
|
|
49
|
+
});
|
|
50
|
+
const defaultEvaluate = (result, expected) => [{
|
|
51
|
+
key: 'result',
|
|
52
|
+
result,
|
|
53
|
+
expected,
|
|
54
|
+
label: defaultClassify(result, expected)
|
|
55
|
+
}];
|
|
44
56
|
const TestResultSchema = exports.TestResultSchema = /*#__PURE__*/_effect.Schema.Struct({
|
|
45
57
|
id: _effect.Schema.String,
|
|
46
58
|
hashTestCase: _effect.Schema.String,
|
|
59
|
+
key: _effect.Schema.String,
|
|
47
60
|
ordering: _effect.Schema.Int,
|
|
61
|
+
resultOrdering: _effect.Schema.Int,
|
|
48
62
|
input: _effect.Schema.Unknown,
|
|
49
63
|
result: _effect.Schema.Unknown,
|
|
50
64
|
expected: _effect.Schema.Unknown,
|
|
51
65
|
label: _Classify2.LabelSchema,
|
|
52
66
|
tags: /*#__PURE__*/_effect.Schema.Array(_effect.Schema.String),
|
|
53
|
-
timeMillis: _effect.Schema.
|
|
67
|
+
timeMillis: _effect.Schema.Finite
|
|
54
68
|
});
|
|
55
|
-
const
|
|
56
|
-
emptyFromTestRun: args => ({
|
|
57
|
-
...args,
|
|
58
|
-
testResultsByTestCaseHash: {},
|
|
59
|
-
testCaseHashes: [],
|
|
60
|
-
stats: _Classify.Stats.empty()
|
|
61
|
-
})
|
|
62
|
-
};
|
|
63
|
-
const test = ({
|
|
69
|
+
const test = exports.test = /*#__PURE__*/_effect.Effect.fnUntraced(function* ({
|
|
64
70
|
testCase: {
|
|
65
71
|
input,
|
|
66
72
|
expected,
|
|
@@ -68,89 +74,113 @@ const test = ({
|
|
|
68
74
|
ordering
|
|
69
75
|
},
|
|
70
76
|
program,
|
|
71
|
-
|
|
72
|
-
})
|
|
73
|
-
const
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
77
|
+
evaluate
|
|
78
|
+
}) {
|
|
79
|
+
const hashTestCase = makeSha256({
|
|
80
|
+
input,
|
|
81
|
+
expected
|
|
82
|
+
});
|
|
83
|
+
const t0 = yield* _effect.Clock.currentTimeNanos;
|
|
84
|
+
const result = yield* program(input);
|
|
85
|
+
const t1 = yield* _effect.Clock.currentTimeNanos;
|
|
86
|
+
const evaluations = evaluate(result, expected);
|
|
87
|
+
if (evaluations.length === 0) {
|
|
88
|
+
return yield* _effect.Effect.die(new Error('evaluate must return at least one result'));
|
|
89
|
+
}
|
|
90
|
+
const keys = new Set();
|
|
91
|
+
for (const {
|
|
92
|
+
key
|
|
93
|
+
} of evaluations) {
|
|
94
|
+
if (key.length === 0 || keys.has(key)) {
|
|
95
|
+
return yield* _effect.Effect.die(new Error('evaluate must return non-empty keys that are unique within each test case'));
|
|
96
|
+
}
|
|
97
|
+
keys.add(key);
|
|
98
|
+
}
|
|
99
|
+
return evaluations.map((evaluation, resultOrdering) => TestResult.make({
|
|
100
|
+
...evaluation,
|
|
101
|
+
hashTestCase,
|
|
102
|
+
ordering,
|
|
103
|
+
resultOrdering,
|
|
104
|
+
input,
|
|
105
|
+
tags: tags ?? [],
|
|
106
|
+
timeMillis: Number(t1 - t0) / 1_000_000
|
|
85
107
|
}));
|
|
86
|
-
};
|
|
87
|
-
|
|
88
|
-
const all = ({
|
|
89
|
-
testCases,
|
|
90
|
-
program,
|
|
91
|
-
classify = (0, _Classify2.makeClassify)({
|
|
92
|
-
isEqual: _Classify2.defaultIsEqual
|
|
93
|
-
})
|
|
94
|
-
}, {
|
|
108
|
+
});
|
|
109
|
+
const all = (suite, {
|
|
95
110
|
concurrency
|
|
96
111
|
} = {
|
|
97
112
|
concurrency: 1
|
|
98
113
|
}) => {
|
|
99
|
-
|
|
100
|
-
|
|
114
|
+
if (suite.evaluate === undefined) {
|
|
115
|
+
return all({
|
|
116
|
+
...suite,
|
|
117
|
+
evaluate: defaultEvaluate
|
|
118
|
+
}, {
|
|
119
|
+
concurrency
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
const {
|
|
123
|
+
testCases,
|
|
124
|
+
program,
|
|
125
|
+
evaluate
|
|
126
|
+
} = suite;
|
|
127
|
+
const total = _effect.Stream.isStream(testCases) ? undefined : testCases.length;
|
|
128
|
+
const testCases$ = _effect.Stream.isStream(testCases) ? testCases : _effect.Stream.fromIterable(testCases);
|
|
101
129
|
return (0, _effect.pipe)(testCases$, _effect.Stream.zipWithIndex, _effect.Stream.map(([testCase, ordering]) => ({
|
|
102
130
|
...testCase,
|
|
103
131
|
ordering
|
|
104
132
|
})), _effect.Stream.mapEffect(testCase => test({
|
|
105
133
|
testCase,
|
|
106
134
|
program,
|
|
107
|
-
|
|
135
|
+
evaluate
|
|
108
136
|
}), {
|
|
109
137
|
concurrency,
|
|
110
138
|
unordered: false
|
|
111
|
-
}), _effect.Stream.tap(
|
|
112
|
-
const i =
|
|
139
|
+
}), _effect.Stream.tap(testResults => {
|
|
140
|
+
const i = testResults[0].ordering + 1;
|
|
113
141
|
const stride = total === undefined ? 10 : Math.max(Math.floor(total * 0.05), 10);
|
|
114
142
|
const isMilestone = i === 1 || i % stride === 0 || total !== undefined && i === total;
|
|
115
143
|
if (!isMilestone) return _effect.Effect.void;
|
|
116
144
|
return _effect.Effect.logDebug(total === undefined ? `progress ${i}` : `progress ${i}/${total}`);
|
|
117
|
-
}));
|
|
145
|
+
}), _effect.Stream.flattenIterable);
|
|
118
146
|
};
|
|
119
147
|
exports.all = all;
|
|
120
148
|
const emptyAcc = () => ({
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
149
|
+
testResultsByKey: {},
|
|
150
|
+
testResultKeys: [],
|
|
151
|
+
timesByTestCaseHash: new Map(),
|
|
124
152
|
TP: 0,
|
|
125
153
|
TN: 0,
|
|
126
154
|
FP: 0,
|
|
127
|
-
FN: 0
|
|
128
|
-
timeSum: 0,
|
|
129
|
-
timeMin: Number.POSITIVE_INFINITY,
|
|
130
|
-
timeMax: Number.NEGATIVE_INFINITY
|
|
155
|
+
FN: 0
|
|
131
156
|
});
|
|
132
|
-
const
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
acc.times.push(r.timeMillis);
|
|
140
|
-
acc.timeSum += r.timeMillis;
|
|
141
|
-
if (r.timeMillis < acc.timeMin) acc.timeMin = r.timeMillis;
|
|
142
|
-
if (r.timeMillis > acc.timeMax) acc.timeMax = r.timeMillis;
|
|
157
|
+
const appendResult = (acc, r) => {
|
|
158
|
+
const key = resultKey(r);
|
|
159
|
+
acc.testResultsByKey[key] = r;
|
|
160
|
+
acc.testResultKeys.push(key);
|
|
161
|
+
if (!acc.timesByTestCaseHash.has(r.hashTestCase)) {
|
|
162
|
+
acc.timesByTestCaseHash.set(r.hashTestCase, r.timeMillis);
|
|
163
|
+
}
|
|
143
164
|
if (r.label === 'TP') acc.TP++;else if (r.label === 'TN') acc.TN++;else if (r.label === 'FP') acc.FP++;else acc.FN++;
|
|
144
165
|
return acc;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
const
|
|
166
|
+
};
|
|
167
|
+
const finish = (testRun, acc) => {
|
|
168
|
+
const times = [...acc.timesByTestCaseHash.values()];
|
|
169
|
+
let timeSum = 0;
|
|
170
|
+
let timeMin = Number.POSITIVE_INFINITY;
|
|
171
|
+
let timeMax = Number.NEGATIVE_INFINITY;
|
|
172
|
+
for (const time of times) {
|
|
173
|
+
timeSum += time;
|
|
174
|
+
if (time < timeMin) timeMin = time;
|
|
175
|
+
if (time > timeMax) timeMax = time;
|
|
176
|
+
}
|
|
148
177
|
const stats = new _Classify.Stats({
|
|
149
178
|
TP: acc.TP,
|
|
150
179
|
TN: acc.TN,
|
|
151
180
|
FP: acc.FP,
|
|
152
181
|
FN: acc.FN,
|
|
153
|
-
total,
|
|
182
|
+
total: acc.testResultKeys.length,
|
|
183
|
+
testCases: acc.timesByTestCaseHash.size,
|
|
154
184
|
precision: (0, _Classify2.precision)({
|
|
155
185
|
TP: acc.TP,
|
|
156
186
|
FP: acc.FP
|
|
@@ -159,19 +189,32 @@ _effect.Sink.foldLeft(emptyAcc(), (acc, r) => {
|
|
|
159
189
|
TP: acc.TP,
|
|
160
190
|
FN: acc.FN
|
|
161
191
|
}),
|
|
162
|
-
timeMean:
|
|
163
|
-
timeMin:
|
|
164
|
-
timeMax:
|
|
165
|
-
timeMedian: (0, _Classify2.median)(
|
|
192
|
+
timeMean: times.length > 0 ? _effect.Option.some(timeSum / times.length) : _effect.Option.none(),
|
|
193
|
+
timeMin: times.length > 0 ? _effect.Option.some(timeMin) : _effect.Option.none(),
|
|
194
|
+
timeMax: times.length > 0 ? _effect.Option.some(timeMax) : _effect.Option.none(),
|
|
195
|
+
timeMedian: (0, _Classify2.median)(times)
|
|
166
196
|
});
|
|
167
197
|
return {
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
198
|
+
id: testRun.id,
|
|
199
|
+
name: testRun.name,
|
|
200
|
+
hash: testRun.hash,
|
|
201
|
+
testResultsByKey: acc.testResultsByKey,
|
|
202
|
+
testResultKeys: acc.testResultKeys,
|
|
203
|
+
testCaseHashes: [...acc.timesByTestCaseHash.keys()],
|
|
171
204
|
stats
|
|
172
205
|
};
|
|
173
|
-
}
|
|
206
|
+
};
|
|
207
|
+
const runCollectRecord = testRun => testResults$ => testResults$.pipe(_effect.Stream.run(_effect.Sink.reduce(emptyAcc, appendResult)), _effect.Effect.map(acc => finish(testRun, acc)));
|
|
174
208
|
exports.runCollectRecord = runCollectRecord;
|
|
209
|
+
const filterResults = (testRun, predicate) => {
|
|
210
|
+
const acc = emptyAcc();
|
|
211
|
+
for (const key of testRun.testResultKeys) {
|
|
212
|
+
const result = testRun.testResultsByKey[key];
|
|
213
|
+
if (predicate(result)) appendResult(acc, result);
|
|
214
|
+
}
|
|
215
|
+
return finish(testRun, acc);
|
|
216
|
+
};
|
|
217
|
+
exports.filterResults = filterResults;
|
|
175
218
|
const diff = ({
|
|
176
219
|
testRun: {
|
|
177
220
|
stats
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Test.js","names":["_nodeCrypto","require","
|
|
1
|
+
{"version":3,"file":"Test.js","names":["_nodeCrypto","require","_effect","_Classify","_Classify2","makeSha256","input","createHash","update","JSON","stringify","digest","exports","TestResult","make","args","hashTestCase","key","label","result","expected","id","resultKey","defaultClassify","makeClassify","isEqual","defaultIsEqual","defaultEvaluate","TestResultSchema","Schema","Struct","String","ordering","Int","resultOrdering","Unknown","LabelSchema","tags","Array","timeMillis","Finite","test","Effect","fnUntraced","testCase","program","evaluate","t0","Clock","currentTimeNanos","t1","evaluations","length","die","Error","keys","Set","has","add","map","evaluation","Number","all","suite","concurrency","undefined","testCases","total","Stream","isStream","testCases$","fromIterable","pipe","zipWithIndex","mapEffect","unordered","tap","testResults","i","stride","Math","max","floor","isMilestone","void","logDebug","flattenIterable","emptyAcc","testResultsByKey","testResultKeys","timesByTestCaseHash","Map","TP","TN","FP","FN","appendResult","acc","r","push","set","finish","testRun","times","values","timeSum","timeMin","POSITIVE_INFINITY","timeMax","NEGATIVE_INFINITY","time","stats","Stats","size","precision","recall","timeMean","Option","some","none","timeMedian","median","name","hash","testCaseHashes","runCollectRecord","testResults$","run","Sink","reduce","filterResults","predicate","diff","previousTestRun","match","onNone","onSome","previousStats"],"sources":["../../../src/internal/Test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|