@creative-introvert/tons-of-tests 0.9.0 → 1.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 +78 -12
- package/dist/cjs/Classify.js +33 -2
- package/dist/cjs/Classify.js.map +1 -1
- package/dist/cjs/RepositoryError.js +45 -0
- package/dist/cjs/RepositoryError.js.map +1 -0
- package/dist/cjs/Test.js +2 -1
- package/dist/cjs/Test.js.map +1 -1
- package/dist/cjs/Test.repository.js +32 -6
- package/dist/cjs/Test.repository.js.map +1 -1
- package/dist/cjs/Test.repository.types.js +14 -0
- package/dist/cjs/Test.repository.types.js.map +1 -0
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/internal/Classify.js +4 -32
- package/dist/cjs/internal/Classify.js.map +1 -1
- package/dist/cjs/internal/Classify.spec.js +223 -0
- package/dist/cjs/internal/Classify.spec.js.map +1 -0
- package/dist/cjs/internal/Test.js +61 -29
- package/dist/cjs/internal/Test.js.map +1 -1
- package/dist/cjs/internal/Test.repository.sqlite.js +172 -121
- package/dist/cjs/internal/Test.repository.sqlite.js.map +1 -1
- package/dist/cjs/internal/Test.repository.sqlite.spec.js +263 -170
- package/dist/cjs/internal/Test.repository.sqlite.spec.js.map +1 -1
- package/dist/cjs/internal/Test.spec.js +205 -0
- package/dist/cjs/internal/Test.spec.js.map +1 -0
- package/dist/cjs/internal/format-diff.spec.js +22 -16
- package/dist/cjs/internal/format-diff.spec.js.map +1 -1
- package/dist/cjs/internal/summarize.js.map +1 -1
- package/dist/cjs/pack.js.map +1 -1
- package/dist/dts/Classify.d.ts +58 -24
- package/dist/dts/Classify.d.ts.map +1 -1
- package/dist/dts/Error.d.ts +1 -1
- package/dist/dts/RepositoryError.d.ts +40 -0
- package/dist/dts/RepositoryError.d.ts.map +1 -0
- package/dist/dts/Test.d.ts +8 -1
- package/dist/dts/Test.d.ts.map +1 -1
- package/dist/dts/Test.repository.d.ts +11 -55
- package/dist/dts/Test.repository.d.ts.map +1 -1
- package/dist/dts/Test.repository.types.d.ts +66 -0
- package/dist/dts/Test.repository.types.d.ts.map +1 -0
- package/dist/dts/index.d.ts +1 -1
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/internal/Classify.d.ts +14 -23
- package/dist/dts/internal/Classify.d.ts.map +1 -1
- package/dist/dts/internal/Classify.spec.d.ts +2 -0
- package/dist/dts/internal/Classify.spec.d.ts.map +1 -0
- package/dist/dts/internal/Test.d.ts +3 -3
- package/dist/dts/internal/Test.d.ts.map +1 -1
- package/dist/dts/internal/Test.repository.sqlite.d.ts +9 -12
- package/dist/dts/internal/Test.repository.sqlite.d.ts.map +1 -1
- package/dist/dts/internal/Test.spec.d.ts +2 -0
- package/dist/dts/internal/Test.spec.d.ts.map +1 -0
- package/dist/dts/internal/common.d.ts +1 -1
- package/dist/dts/internal/common.d.ts.map +1 -1
- package/dist/dts/internal/diff.d.ts.map +1 -1
- package/dist/dts/internal/format-diff.d.ts.map +1 -1
- package/dist/dts/internal/lib/Schema.d.ts.map +1 -1
- package/dist/dts/internal/lib/jsondiffpatch/contexts/context.d.ts.map +1 -1
- package/dist/dts/internal/lib/jsondiffpatch/contexts/diff.d.ts.map +1 -1
- package/dist/dts/internal/lib/jsondiffpatch/contexts/patch.d.ts.map +1 -1
- package/dist/dts/internal/lib/jsondiffpatch/contexts/reverse.d.ts.map +1 -1
- package/dist/dts/internal/lib/jsondiffpatch/diffpatcher.d.ts.map +1 -1
- package/dist/dts/internal/lib/jsondiffpatch/filters/lcs.d.ts.map +1 -1
- package/dist/dts/internal/lib/jsondiffpatch/formatters/annotated.d.ts.map +1 -1
- package/dist/dts/internal/lib/jsondiffpatch/formatters/base.d.ts +1 -1
- package/dist/dts/internal/lib/jsondiffpatch/formatters/base.d.ts.map +1 -1
- package/dist/dts/internal/lib/jsondiffpatch/formatters/html.d.ts.map +1 -1
- package/dist/dts/internal/lib/jsondiffpatch/formatters/jsonpatch.d.ts.map +1 -1
- package/dist/dts/internal/lib/jsondiffpatch/pipe.d.ts.map +1 -1
- package/dist/dts/internal/lib/jsondiffpatch/processor.d.ts +1 -1
- package/dist/dts/internal/lib/jsondiffpatch/processor.d.ts.map +1 -1
- package/dist/dts/internal/pack.d.ts.map +1 -1
- package/dist/dts/internal/stats.d.ts +1 -1
- package/dist/dts/internal/stats.d.ts.map +1 -1
- package/dist/dts/internal/summarize.d.ts +2 -2
- package/dist/dts/internal/summarize.d.ts.map +1 -1
- package/dist/esm/Classify.js +33 -2
- package/dist/esm/Classify.js.map +1 -1
- package/dist/esm/RepositoryError.js +45 -0
- package/dist/esm/RepositoryError.js.map +1 -0
- package/dist/esm/Test.js +2 -1
- package/dist/esm/Test.js.map +1 -1
- package/dist/esm/Test.repository.js +32 -6
- package/dist/esm/Test.repository.js.map +1 -1
- package/dist/esm/Test.repository.types.js +14 -0
- package/dist/esm/Test.repository.types.js.map +1 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/internal/Classify.js +4 -32
- package/dist/esm/internal/Classify.js.map +1 -1
- package/dist/esm/internal/Classify.spec.js +204 -0
- package/dist/esm/internal/Classify.spec.js.map +1 -0
- package/dist/esm/internal/Test.js +61 -29
- package/dist/esm/internal/Test.js.map +1 -1
- package/dist/esm/internal/Test.repository.sqlite.js +172 -121
- package/dist/esm/internal/Test.repository.sqlite.js.map +1 -1
- package/dist/esm/internal/Test.repository.sqlite.spec.js +263 -170
- package/dist/esm/internal/Test.repository.sqlite.spec.js.map +1 -1
- package/dist/esm/internal/Test.spec.js +186 -0
- package/dist/esm/internal/Test.spec.js.map +1 -0
- package/dist/esm/internal/format-diff.spec.js +22 -16
- package/dist/esm/internal/format-diff.spec.js.map +1 -1
- package/dist/esm/internal/summarize.js.map +1 -1
- package/dist/esm/pack.js.map +1 -1
- package/package.json +7 -7
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var t = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("vitest"));
|
|
4
|
+
var _effect = /*#__PURE__*/require("effect");
|
|
5
|
+
var _Classify = /*#__PURE__*/require("./Classify.js");
|
|
6
|
+
function _interopRequireWildcard(e, t) {
|
|
7
|
+
if ("function" == typeof WeakMap) var r = new WeakMap(),
|
|
8
|
+
n = new WeakMap();
|
|
9
|
+
return (_interopRequireWildcard = function (e, t) {
|
|
10
|
+
if (!t && e && e.__esModule) return e;
|
|
11
|
+
var o,
|
|
12
|
+
i,
|
|
13
|
+
f = {
|
|
14
|
+
__proto__: null,
|
|
15
|
+
default: e
|
|
16
|
+
};
|
|
17
|
+
if (null === e || "object" != typeof e && "function" != typeof e) return f;
|
|
18
|
+
if (o = t ? n : r) {
|
|
19
|
+
if (o.has(e)) return o.get(e);
|
|
20
|
+
o.set(e, f);
|
|
21
|
+
}
|
|
22
|
+
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]);
|
|
23
|
+
return f;
|
|
24
|
+
})(e, t);
|
|
25
|
+
}
|
|
26
|
+
const classify = /*#__PURE__*/(0, _Classify.makeClassify)({
|
|
27
|
+
isEqual: (o, e) => (0, _Classify.defaultIsEqual)(o, e)
|
|
28
|
+
});
|
|
29
|
+
t.describe('makeClassify', () => {
|
|
30
|
+
t.test.each([{
|
|
31
|
+
description: 'both nil -> TN',
|
|
32
|
+
output: null,
|
|
33
|
+
expected: null,
|
|
34
|
+
label: _Classify.values.TN
|
|
35
|
+
}, {
|
|
36
|
+
description: 'both nil (undefined) -> TN',
|
|
37
|
+
output: undefined,
|
|
38
|
+
expected: undefined,
|
|
39
|
+
label: _Classify.values.TN
|
|
40
|
+
}, {
|
|
41
|
+
description: 'equal non-nil -> TP',
|
|
42
|
+
output: 1,
|
|
43
|
+
expected: 1,
|
|
44
|
+
label: _Classify.values.TP
|
|
45
|
+
}, {
|
|
46
|
+
description: 'equal objects -> TP',
|
|
47
|
+
output: {
|
|
48
|
+
a: 1
|
|
49
|
+
},
|
|
50
|
+
expected: {
|
|
51
|
+
a: 1
|
|
52
|
+
},
|
|
53
|
+
label: _Classify.values.TP
|
|
54
|
+
}, {
|
|
55
|
+
description: 'unequal non-nil -> FP',
|
|
56
|
+
output: 2,
|
|
57
|
+
expected: 1,
|
|
58
|
+
label: _Classify.values.FP
|
|
59
|
+
}, {
|
|
60
|
+
description: 'output present, expected nil -> FP',
|
|
61
|
+
output: 1,
|
|
62
|
+
expected: null,
|
|
63
|
+
label: _Classify.values.FP
|
|
64
|
+
}, {
|
|
65
|
+
description: 'output nil, expected present -> FN',
|
|
66
|
+
output: null,
|
|
67
|
+
expected: 1,
|
|
68
|
+
label: _Classify.values.FN
|
|
69
|
+
}, {
|
|
70
|
+
description: 'output nil, expected present (undefined) -> FN',
|
|
71
|
+
output: undefined,
|
|
72
|
+
expected: 0,
|
|
73
|
+
label: _Classify.values.FN
|
|
74
|
+
}])('$description', ({
|
|
75
|
+
output,
|
|
76
|
+
expected,
|
|
77
|
+
label
|
|
78
|
+
}) => {
|
|
79
|
+
t.expect(classify(output, expected)).toBe(label);
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
t.describe('defaultIsEqual', () => {
|
|
83
|
+
// Documents the FIXME: JSON round-trip strips `undefined`-valued keys,
|
|
84
|
+
// so {a: undefined, b: 1} compares equal to {b: 1}. A refactor that
|
|
85
|
+
// switches to a cheaper deep-equal would flip this silently.
|
|
86
|
+
t.test.each([{
|
|
87
|
+
description: 'strips undefined keys from a',
|
|
88
|
+
a: {
|
|
89
|
+
a: undefined,
|
|
90
|
+
b: 1
|
|
91
|
+
},
|
|
92
|
+
b: {
|
|
93
|
+
b: 1
|
|
94
|
+
},
|
|
95
|
+
expected: true
|
|
96
|
+
}, {
|
|
97
|
+
description: 'strips undefined keys from b',
|
|
98
|
+
a: {
|
|
99
|
+
b: 1
|
|
100
|
+
},
|
|
101
|
+
b: {
|
|
102
|
+
a: undefined,
|
|
103
|
+
b: 1
|
|
104
|
+
},
|
|
105
|
+
expected: true
|
|
106
|
+
}, {
|
|
107
|
+
description: 'equal primitives',
|
|
108
|
+
a: 1,
|
|
109
|
+
b: 1,
|
|
110
|
+
expected: true
|
|
111
|
+
}, {
|
|
112
|
+
description: 'different primitives',
|
|
113
|
+
a: 1,
|
|
114
|
+
b: 2,
|
|
115
|
+
expected: false
|
|
116
|
+
}, {
|
|
117
|
+
description: 'different object shapes',
|
|
118
|
+
a: {
|
|
119
|
+
a: 1
|
|
120
|
+
},
|
|
121
|
+
b: {
|
|
122
|
+
a: 2
|
|
123
|
+
},
|
|
124
|
+
expected: false
|
|
125
|
+
}])('$description', ({
|
|
126
|
+
a,
|
|
127
|
+
b,
|
|
128
|
+
expected
|
|
129
|
+
}) => {
|
|
130
|
+
t.expect((0, _Classify.defaultIsEqual)(a, b)).toBe(expected);
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
t.describe('precision', () => {
|
|
134
|
+
t.test.each([{
|
|
135
|
+
description: 'no predictions -> 0',
|
|
136
|
+
m: {
|
|
137
|
+
TP: 0,
|
|
138
|
+
FP: 0
|
|
139
|
+
},
|
|
140
|
+
expected: 0
|
|
141
|
+
}, {
|
|
142
|
+
description: 'all TP -> 1',
|
|
143
|
+
m: {
|
|
144
|
+
TP: 3,
|
|
145
|
+
FP: 0
|
|
146
|
+
},
|
|
147
|
+
expected: 1
|
|
148
|
+
}, {
|
|
149
|
+
description: 'half FP -> 0.5',
|
|
150
|
+
m: {
|
|
151
|
+
TP: 1,
|
|
152
|
+
FP: 1
|
|
153
|
+
},
|
|
154
|
+
expected: 0.5
|
|
155
|
+
}])('$description', ({
|
|
156
|
+
m,
|
|
157
|
+
expected
|
|
158
|
+
}) => {
|
|
159
|
+
t.expect((0, _Classify.precision)(m)).toBe(expected);
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
t.describe('recall', () => {
|
|
163
|
+
t.test.each([{
|
|
164
|
+
description: 'no actual positives -> 0',
|
|
165
|
+
m: {
|
|
166
|
+
TP: 0,
|
|
167
|
+
FN: 0
|
|
168
|
+
},
|
|
169
|
+
expected: 0
|
|
170
|
+
}, {
|
|
171
|
+
description: 'all TP -> 1',
|
|
172
|
+
m: {
|
|
173
|
+
TP: 3,
|
|
174
|
+
FN: 0
|
|
175
|
+
},
|
|
176
|
+
expected: 1
|
|
177
|
+
}, {
|
|
178
|
+
description: 'half FN -> 0.5',
|
|
179
|
+
m: {
|
|
180
|
+
TP: 1,
|
|
181
|
+
FN: 1
|
|
182
|
+
},
|
|
183
|
+
expected: 0.5
|
|
184
|
+
}])('$description', ({
|
|
185
|
+
m,
|
|
186
|
+
expected
|
|
187
|
+
}) => {
|
|
188
|
+
t.expect((0, _Classify.recall)(m)).toBe(expected);
|
|
189
|
+
});
|
|
190
|
+
});
|
|
191
|
+
t.describe('median', () => {
|
|
192
|
+
t.test.each([{
|
|
193
|
+
description: 'empty -> none',
|
|
194
|
+
xs: [],
|
|
195
|
+
expected: _effect.Option.none()
|
|
196
|
+
}, {
|
|
197
|
+
description: 'single -> value',
|
|
198
|
+
xs: [7],
|
|
199
|
+
expected: _effect.Option.some(7)
|
|
200
|
+
}, {
|
|
201
|
+
description: 'two elements -> average',
|
|
202
|
+
xs: [1, 2],
|
|
203
|
+
expected: _effect.Option.some(1.5)
|
|
204
|
+
}, {
|
|
205
|
+
description: 'odd length -> middle',
|
|
206
|
+
xs: [3, 1, 2],
|
|
207
|
+
expected: _effect.Option.some(2)
|
|
208
|
+
}, {
|
|
209
|
+
description: 'even length -> average of middle two',
|
|
210
|
+
xs: [1, 2, 3, 4],
|
|
211
|
+
expected: _effect.Option.some(2.5)
|
|
212
|
+
}, {
|
|
213
|
+
description: 'unsorted even length',
|
|
214
|
+
xs: [4, 1, 3, 2],
|
|
215
|
+
expected: _effect.Option.some(2.5)
|
|
216
|
+
}])('$description', ({
|
|
217
|
+
xs,
|
|
218
|
+
expected
|
|
219
|
+
}) => {
|
|
220
|
+
t.expect((0, _Classify.median)(xs)).toStrictEqual(expected);
|
|
221
|
+
});
|
|
222
|
+
});
|
|
223
|
+
//# sourceMappingURL=Classify.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Classify.spec.js","names":["t","_interopRequireWildcard","require","_effect","_Classify","e","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","classify","makeClassify","isEqual","defaultIsEqual","describe","test","each","description","output","expected","label","values","TN","undefined","TP","a","FP","FN","expect","toBe","b","m","precision","recall","xs","Option","none","some","median","toStrictEqual"],"sources":["../../../src/internal/Classify.spec.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -7,7 +7,8 @@ exports.test = exports.runCollectRecord = exports.makeSha256 = exports.diff = ex
|
|
|
7
7
|
var _nodeCrypto = /*#__PURE__*/require("node:crypto");
|
|
8
8
|
var _nodePerf_hooks = /*#__PURE__*/require("node:perf_hooks");
|
|
9
9
|
var _effect = /*#__PURE__*/require("effect");
|
|
10
|
-
var _Classify = /*#__PURE__*/require("
|
|
10
|
+
var _Classify = /*#__PURE__*/require("../Classify.js");
|
|
11
|
+
var _Classify2 = /*#__PURE__*/require("./Classify.js");
|
|
11
12
|
const makeSha256 = input => {
|
|
12
13
|
return (0, _nodeCrypto.createHash)('sha256').update(JSON.stringify(input)).digest('hex');
|
|
13
14
|
};
|
|
@@ -47,7 +48,7 @@ const TestResultSchema = exports.TestResultSchema = /*#__PURE__*/_effect.Schema.
|
|
|
47
48
|
input: _effect.Schema.Unknown,
|
|
48
49
|
result: _effect.Schema.Unknown,
|
|
49
50
|
expected: _effect.Schema.Unknown,
|
|
50
|
-
label:
|
|
51
|
+
label: _Classify2.LabelSchema,
|
|
51
52
|
tags: /*#__PURE__*/_effect.Schema.Array(_effect.Schema.String),
|
|
52
53
|
timeMillis: _effect.Schema.Number
|
|
53
54
|
});
|
|
@@ -87,8 +88,8 @@ exports.test = test;
|
|
|
87
88
|
const all = ({
|
|
88
89
|
testCases,
|
|
89
90
|
program,
|
|
90
|
-
classify = (0,
|
|
91
|
-
isEqual:
|
|
91
|
+
classify = (0, _Classify2.makeClassify)({
|
|
92
|
+
isEqual: _Classify2.defaultIsEqual
|
|
92
93
|
})
|
|
93
94
|
}, {
|
|
94
95
|
concurrency
|
|
@@ -111,33 +112,64 @@ _effect.Array.map(testCases, ({
|
|
|
111
112
|
}), _effect.Stream.tap(testResult => {
|
|
112
113
|
const i = testResult.ordering + 1;
|
|
113
114
|
const total = testCases.length;
|
|
114
|
-
const
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
if (process.env.NODE_ENV === 'development') {
|
|
118
|
-
process.stdout.write(s);
|
|
119
|
-
} else {
|
|
120
|
-
return _effect.Console.log(s);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
return _effect.Effect.void;
|
|
115
|
+
const stride = Math.max(Math.floor(total * 0.05), 10);
|
|
116
|
+
const isMilestone = i === 1 || i === total || i % stride === 0;
|
|
117
|
+
return isMilestone ? _effect.Effect.logInfo(`progress ${i}/${total}`) : _effect.Effect.void;
|
|
124
118
|
}));
|
|
125
119
|
exports.all = all;
|
|
126
|
-
const
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
120
|
+
const emptyAcc = () => ({
|
|
121
|
+
testResultsByTestCaseHash: {},
|
|
122
|
+
testCaseHashes: [],
|
|
123
|
+
times: [],
|
|
124
|
+
TP: 0,
|
|
125
|
+
TN: 0,
|
|
126
|
+
FP: 0,
|
|
127
|
+
FN: 0,
|
|
128
|
+
timeSum: 0,
|
|
129
|
+
timeMin: Number.POSITIVE_INFINITY,
|
|
130
|
+
timeMax: Number.NEGATIVE_INFINITY
|
|
131
|
+
});
|
|
132
|
+
const runCollectRecord = testRun => testResults$ => testResults$.pipe(_effect.Stream.run(
|
|
133
|
+
// Sink.foldLeft threads the accumulator by reference within a
|
|
134
|
+
// single fiber, so mutating in place is safe and avoids
|
|
135
|
+
// rebuilding the object per element.
|
|
136
|
+
_effect.Sink.foldLeft(emptyAcc(), (acc, r) => {
|
|
137
|
+
acc.testResultsByTestCaseHash[r.hashTestCase] = r;
|
|
138
|
+
acc.testCaseHashes.push(r.hashTestCase);
|
|
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;
|
|
143
|
+
if (r.label === 'TP') acc.TP++;else if (r.label === 'TN') acc.TN++;else if (r.label === 'FP') acc.FP++;else acc.FN++;
|
|
144
|
+
return acc;
|
|
145
|
+
})), _effect.Effect.map(acc => {
|
|
146
|
+
const total = acc.testCaseHashes.length;
|
|
147
|
+
const hasTimes = acc.times.length > 0;
|
|
148
|
+
const stats = new _Classify.Stats({
|
|
149
|
+
TP: acc.TP,
|
|
150
|
+
TN: acc.TN,
|
|
151
|
+
FP: acc.FP,
|
|
152
|
+
FN: acc.FN,
|
|
153
|
+
total,
|
|
154
|
+
precision: (0, _Classify2.precision)({
|
|
155
|
+
TP: acc.TP,
|
|
156
|
+
FP: acc.FP
|
|
157
|
+
}),
|
|
158
|
+
recall: (0, _Classify2.recall)({
|
|
159
|
+
TP: acc.TP,
|
|
160
|
+
FN: acc.FN
|
|
161
|
+
}),
|
|
162
|
+
timeMean: hasTimes ? _effect.Option.some(acc.timeSum / acc.times.length) : _effect.Option.none(),
|
|
163
|
+
timeMin: hasTimes ? _effect.Option.some(acc.timeMin) : _effect.Option.none(),
|
|
164
|
+
timeMax: hasTimes ? _effect.Option.some(acc.timeMax) : _effect.Option.none(),
|
|
165
|
+
timeMedian: (0, _Classify2.median)(acc.times)
|
|
166
|
+
});
|
|
167
|
+
return {
|
|
168
|
+
...testRun,
|
|
169
|
+
testResultsByTestCaseHash: acc.testResultsByTestCaseHash,
|
|
170
|
+
testCaseHashes: acc.testCaseHashes,
|
|
171
|
+
stats
|
|
172
|
+
};
|
|
141
173
|
}));
|
|
142
174
|
exports.runCollectRecord = runCollectRecord;
|
|
143
175
|
const diff = ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Test.js","names":["_nodeCrypto","require","_nodePerf_hooks","_effect","_Classify","makeSha256","input","createHash","update","JSON","stringify","digest","exports","TestResult","make","args","label","result","expected","id","hashTestCase","TestResultSchema","Schema","Struct","String","ordering","Int","Unknown","LabelSchema","tags","Array","timeMillis","Number","TestRunResults","emptyFromTestRun","testResultsByTestCaseHash","testCaseHashes","stats","Stats","empty","test","testCase","program","classify","t0","performance","now","pipe","Effect","map","t1","all","testCases","makeClassify","isEqual","defaultIsEqual","concurrency","_","Stream","fromIterable","mapEffect","unordered","tap","testResult","i","total","length","
|
|
1
|
+
{"version":3,"file":"Test.js","names":["_nodeCrypto","require","_nodePerf_hooks","_effect","_Classify","_Classify2","makeSha256","input","createHash","update","JSON","stringify","digest","exports","TestResult","make","args","label","result","expected","id","hashTestCase","TestResultSchema","Schema","Struct","String","ordering","Int","Unknown","LabelSchema","tags","Array","timeMillis","Number","TestRunResults","emptyFromTestRun","testResultsByTestCaseHash","testCaseHashes","stats","Stats","empty","test","testCase","program","classify","t0","performance","now","pipe","Effect","map","t1","all","testCases","makeClassify","isEqual","defaultIsEqual","concurrency","_","Stream","fromIterable","mapEffect","unordered","tap","testResult","i","total","length","stride","Math","max","floor","isMilestone","logInfo","void","emptyAcc","times","TP","TN","FP","FN","timeSum","timeMin","POSITIVE_INFINITY","timeMax","NEGATIVE_INFINITY","runCollectRecord","testRun","testResults$","run","Sink","foldLeft","acc","r","push","hasTimes","precision","recall","timeMean","Option","some","none","timeMedian","median","diff","previousTestRun","match","onNone","onSome","previousStats"],"sources":["../../../src/internal/Test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|