@overkill-dev/doubles 0.0.1 → 0.0.3
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/LICENSE +21 -0
- package/assert/assertion-extension.d.ts +65 -0
- package/assert/assertion-extension.d.ts.map +1 -0
- package/assert/assertion-extension.js +250 -0
- package/assert/assertion-extension.js.map +1 -0
- package/doubles/disposal-symbol.js +10 -0
- package/doubles/disposal-symbol.js.map +1 -0
- package/doubles/double-behavior.d.ts +106 -0
- package/doubles/double-behavior.d.ts.map +1 -0
- package/doubles/double-behavior.js +257 -0
- package/doubles/double-behavior.js.map +1 -0
- package/doubles/double-chronology.js +78 -0
- package/doubles/double-chronology.js.map +1 -0
- package/doubles/double-history-api.js +125 -0
- package/doubles/double-history-api.js.map +1 -0
- package/doubles/double-history-record.d.ts +82 -0
- package/doubles/double-history-record.d.ts.map +1 -0
- package/doubles/double-history-record.js +65 -0
- package/doubles/double-history-record.js.map +1 -0
- package/doubles/double-history-store.d.ts +21 -0
- package/doubles/double-history-store.d.ts.map +1 -0
- package/doubles/double-history-store.js +118 -0
- package/doubles/double-history-store.js.map +1 -0
- package/doubles/double-history.d.ts +141 -0
- package/doubles/double-history.d.ts.map +1 -0
- package/doubles/double-history.js +32 -0
- package/doubles/double-history.js.map +1 -0
- package/doubles/double-iterator-event-types.d.ts +25 -0
- package/doubles/double-iterator-event-types.d.ts.map +1 -0
- package/doubles/double-iterator-tracking.d.ts +12 -0
- package/doubles/double-iterator-tracking.d.ts.map +1 -0
- package/doubles/double-iterator-tracking.js +161 -0
- package/doubles/double-iterator-tracking.js.map +1 -0
- package/doubles/double-rule-arguments.d.ts +18 -0
- package/doubles/double-rule-arguments.d.ts.map +1 -0
- package/doubles/double-rule-callback.d.ts +40 -0
- package/doubles/double-rule-callback.d.ts.map +1 -0
- package/doubles/double-rule-callback.js +84 -0
- package/doubles/double-rule-callback.js.map +1 -0
- package/doubles/double-rule-generator.d.ts +108 -0
- package/doubles/double-rule-generator.d.ts.map +1 -0
- package/doubles/double-rule-generator.js +37 -0
- package/doubles/double-rule-generator.js.map +1 -0
- package/doubles/double-rule-types.d.ts +162 -0
- package/doubles/double-rule-types.d.ts.map +1 -0
- package/doubles/double-rule.d.ts +3 -0
- package/doubles/double-rule.d.ts.map +1 -0
- package/doubles/double-rule.js +113 -0
- package/doubles/double-rule.js.map +1 -0
- package/doubles/double-runtime.js +173 -0
- package/doubles/double-runtime.js.map +1 -0
- package/doubles/double-signature.d.ts +5 -0
- package/doubles/double-signature.d.ts.map +1 -0
- package/doubles/double-usage-argument-assertion.js +202 -0
- package/doubles/double-usage-argument-assertion.js.map +1 -0
- package/doubles/double-usage-contract.d.ts +29 -0
- package/doubles/double-usage-contract.d.ts.map +1 -0
- package/doubles/double-usage-contract.js +11 -0
- package/doubles/double-usage-contract.js.map +1 -0
- package/doubles/double-usage-count-assertion.js +73 -0
- package/doubles/double-usage-count-assertion.js.map +1 -0
- package/doubles/double-usage-disposal-assertion.js +175 -0
- package/doubles/double-usage-disposal-assertion.js.map +1 -0
- package/doubles/double-usage-inspection.js +59 -0
- package/doubles/double-usage-inspection.js.map +1 -0
- package/doubles/double-usage-iterator-assertion.js +124 -0
- package/doubles/double-usage-iterator-assertion.js.map +1 -0
- package/doubles/double-usage-order-assertion.js +91 -0
- package/doubles/double-usage-order-assertion.js.map +1 -0
- package/doubles/double-usage.d.ts +81 -0
- package/doubles/double-usage.d.ts.map +1 -0
- package/doubles/double-usage.js +228 -0
- package/doubles/double-usage.js.map +1 -0
- package/doubles/protocol-disposable-double.d.ts +16 -0
- package/doubles/protocol-disposable-double.d.ts.map +1 -0
- package/doubles/protocol-disposable-double.js +37 -0
- package/doubles/protocol-disposable-double.js.map +1 -0
- package/doubles/protocol-double-metadata.js +30 -0
- package/doubles/protocol-double-metadata.js.map +1 -0
- package/doubles/protocol-double.d.ts +50 -0
- package/doubles/protocol-double.d.ts.map +1 -0
- package/doubles/protocol-double.js +76 -0
- package/doubles/protocol-double.js.map +1 -0
- package/doubles/protocol-iterator-double.d.ts +93 -0
- package/doubles/protocol-iterator-double.d.ts.map +1 -0
- package/doubles/protocol-iterator-double.js +512 -0
- package/doubles/protocol-iterator-double.js.map +1 -0
- package/doubles/test-double.d.ts +62 -0
- package/doubles/test-double.d.ts.map +1 -0
- package/doubles/test-double.js +192 -0
- package/doubles/test-double.js.map +1 -0
- package/package.json +38 -6
- package/packages/doubles/doubles.entry-point.d.ts +13 -0
- package/packages/doubles/doubles.entry-point.d.ts.map +1 -0
- package/packages/doubles/doubles.entry-point.js +5 -0
- package/packages/doubles/doubles.entry-point.js.map +1 -0
- package/readme.md +423 -5
- package/sbom.cdx.json +50 -0
|
@@ -0,0 +1,512 @@
|
|
|
1
|
+
import { disposeSymbol } from "./disposal-symbol.js";
|
|
2
|
+
import { installProtocolMetadata, protocolIteratorEvents } from "./protocol-double-metadata.js";
|
|
3
|
+
import { testDouble } from "./test-double.js";
|
|
4
|
+
function createIteratorEventRecorder() {
|
|
5
|
+
const events = [];
|
|
6
|
+
return {
|
|
7
|
+
events() {
|
|
8
|
+
return events.map(function copyEvent(event) {
|
|
9
|
+
return {
|
|
10
|
+
...event,
|
|
11
|
+
arguments: Array.from(event.arguments)
|
|
12
|
+
};
|
|
13
|
+
});
|
|
14
|
+
},
|
|
15
|
+
recordResult(input) {
|
|
16
|
+
events.push({
|
|
17
|
+
arguments: Array.from(input.arguments),
|
|
18
|
+
callIndex: 0,
|
|
19
|
+
index: events.length,
|
|
20
|
+
iteratorIndex: input.iteratorIndex,
|
|
21
|
+
kind: input.result.done === true ? 'return' : 'yield',
|
|
22
|
+
method: input.method,
|
|
23
|
+
protocol: input.protocol,
|
|
24
|
+
value: input.result.value
|
|
25
|
+
});
|
|
26
|
+
},
|
|
27
|
+
recordThrow(input) {
|
|
28
|
+
events.push({
|
|
29
|
+
arguments: Array.from(input.arguments),
|
|
30
|
+
callIndex: 0,
|
|
31
|
+
index: events.length,
|
|
32
|
+
iteratorIndex: input.iteratorIndex,
|
|
33
|
+
kind: 'throw',
|
|
34
|
+
method: input.method,
|
|
35
|
+
protocol: input.protocol,
|
|
36
|
+
thrown: input.thrown
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
function returnedResult(value) {
|
|
42
|
+
return {
|
|
43
|
+
done: true,
|
|
44
|
+
value
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
function doneResult() {
|
|
48
|
+
return returnedResult(undefined);
|
|
49
|
+
}
|
|
50
|
+
function syncReturnDefault(value) {
|
|
51
|
+
return returnedResult(value);
|
|
52
|
+
}
|
|
53
|
+
function syncThrowDefault(thrown) {
|
|
54
|
+
throw thrown;
|
|
55
|
+
}
|
|
56
|
+
async function asyncReturnDefault(value) {
|
|
57
|
+
return returnedResult(value);
|
|
58
|
+
}
|
|
59
|
+
async function asyncThrowDefault(thrown) {
|
|
60
|
+
throw thrown;
|
|
61
|
+
}
|
|
62
|
+
function resultValue(value) {
|
|
63
|
+
if (value === null || typeof value !== 'object' || !Object.hasOwn(value, 'done')) {
|
|
64
|
+
return returnedResult(value);
|
|
65
|
+
}
|
|
66
|
+
return Reflect.get(value, 'done') === true
|
|
67
|
+
? returnedResult(Reflect.get(value, 'value'))
|
|
68
|
+
: {
|
|
69
|
+
done: false,
|
|
70
|
+
value: Reflect.get(value, 'value')
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
function trackedSyncNext(core, recorder, iteratorIndex) {
|
|
74
|
+
return testDouble({
|
|
75
|
+
answer(invocation) {
|
|
76
|
+
try {
|
|
77
|
+
const result = core(...invocation.arguments);
|
|
78
|
+
recorder.recordResult({
|
|
79
|
+
arguments: invocation.arguments,
|
|
80
|
+
iteratorIndex,
|
|
81
|
+
method: 'next',
|
|
82
|
+
protocol: 'sync',
|
|
83
|
+
result: resultValue(result)
|
|
84
|
+
});
|
|
85
|
+
return result;
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
recorder.recordThrow({
|
|
89
|
+
arguments: invocation.arguments,
|
|
90
|
+
iteratorIndex,
|
|
91
|
+
method: 'next',
|
|
92
|
+
protocol: 'sync',
|
|
93
|
+
thrown: error
|
|
94
|
+
});
|
|
95
|
+
throw error;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
function trackedSyncReturn(core, recorder, iteratorIndex) {
|
|
101
|
+
return testDouble({
|
|
102
|
+
answer(invocation) {
|
|
103
|
+
try {
|
|
104
|
+
const result = core(...invocation.arguments);
|
|
105
|
+
recorder.recordResult({
|
|
106
|
+
arguments: invocation.arguments,
|
|
107
|
+
iteratorIndex,
|
|
108
|
+
method: 'return',
|
|
109
|
+
protocol: 'sync',
|
|
110
|
+
result: resultValue(result)
|
|
111
|
+
});
|
|
112
|
+
return result;
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
recorder.recordThrow({
|
|
116
|
+
arguments: invocation.arguments,
|
|
117
|
+
iteratorIndex,
|
|
118
|
+
method: 'return',
|
|
119
|
+
protocol: 'sync',
|
|
120
|
+
thrown: error
|
|
121
|
+
});
|
|
122
|
+
throw error;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
function trackedSyncThrow(core, recorder, iteratorIndex) {
|
|
128
|
+
return testDouble({
|
|
129
|
+
answer(invocation) {
|
|
130
|
+
try {
|
|
131
|
+
const result = core(...invocation.arguments);
|
|
132
|
+
recorder.recordResult({
|
|
133
|
+
arguments: invocation.arguments,
|
|
134
|
+
iteratorIndex,
|
|
135
|
+
method: 'throw',
|
|
136
|
+
protocol: 'sync',
|
|
137
|
+
result: resultValue(result)
|
|
138
|
+
});
|
|
139
|
+
return result;
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
recorder.recordThrow({
|
|
143
|
+
arguments: invocation.arguments,
|
|
144
|
+
iteratorIndex,
|
|
145
|
+
method: 'throw',
|
|
146
|
+
protocol: 'sync',
|
|
147
|
+
thrown: error
|
|
148
|
+
});
|
|
149
|
+
throw error;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
function trackedAsyncNext(core, recorder, iteratorIndex) {
|
|
155
|
+
return testDouble({
|
|
156
|
+
async answer(invocation) {
|
|
157
|
+
try {
|
|
158
|
+
const result = await core(...invocation.arguments);
|
|
159
|
+
recorder.recordResult({
|
|
160
|
+
arguments: invocation.arguments,
|
|
161
|
+
iteratorIndex,
|
|
162
|
+
method: 'next',
|
|
163
|
+
protocol: 'async',
|
|
164
|
+
result: resultValue(result)
|
|
165
|
+
});
|
|
166
|
+
return result;
|
|
167
|
+
}
|
|
168
|
+
catch (error) {
|
|
169
|
+
recorder.recordThrow({
|
|
170
|
+
arguments: invocation.arguments,
|
|
171
|
+
iteratorIndex,
|
|
172
|
+
method: 'next',
|
|
173
|
+
protocol: 'async',
|
|
174
|
+
thrown: error
|
|
175
|
+
});
|
|
176
|
+
throw error;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
function trackedAsyncReturn(core, recorder, iteratorIndex) {
|
|
182
|
+
return testDouble({
|
|
183
|
+
async answer(invocation) {
|
|
184
|
+
try {
|
|
185
|
+
const result = await core(...invocation.arguments);
|
|
186
|
+
recorder.recordResult({
|
|
187
|
+
arguments: invocation.arguments,
|
|
188
|
+
iteratorIndex,
|
|
189
|
+
method: 'return',
|
|
190
|
+
protocol: 'async',
|
|
191
|
+
result: resultValue(result)
|
|
192
|
+
});
|
|
193
|
+
return result;
|
|
194
|
+
}
|
|
195
|
+
catch (error) {
|
|
196
|
+
recorder.recordThrow({
|
|
197
|
+
arguments: invocation.arguments,
|
|
198
|
+
iteratorIndex,
|
|
199
|
+
method: 'return',
|
|
200
|
+
protocol: 'async',
|
|
201
|
+
thrown: error
|
|
202
|
+
});
|
|
203
|
+
throw error;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
function trackedAsyncThrow(core, recorder, iteratorIndex) {
|
|
209
|
+
return testDouble({
|
|
210
|
+
async answer(invocation) {
|
|
211
|
+
try {
|
|
212
|
+
const result = await core(...invocation.arguments);
|
|
213
|
+
recorder.recordResult({
|
|
214
|
+
arguments: invocation.arguments,
|
|
215
|
+
iteratorIndex,
|
|
216
|
+
method: 'throw',
|
|
217
|
+
protocol: 'async',
|
|
218
|
+
result: resultValue(result)
|
|
219
|
+
});
|
|
220
|
+
return result;
|
|
221
|
+
}
|
|
222
|
+
catch (error) {
|
|
223
|
+
recorder.recordThrow({
|
|
224
|
+
arguments: invocation.arguments,
|
|
225
|
+
iteratorIndex,
|
|
226
|
+
method: 'throw',
|
|
227
|
+
protocol: 'async',
|
|
228
|
+
thrown: error
|
|
229
|
+
});
|
|
230
|
+
throw error;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
function trackedSyncMethods(methods, recorder, iteratorIndex) {
|
|
236
|
+
return {
|
|
237
|
+
next: trackedSyncNext(methods.next, recorder, iteratorIndex),
|
|
238
|
+
return: trackedSyncReturn(methods.return, recorder, iteratorIndex),
|
|
239
|
+
throw: trackedSyncThrow(methods.throw, recorder, iteratorIndex)
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
function trackedAsyncMethods(methods, recorder, iteratorIndex) {
|
|
243
|
+
return {
|
|
244
|
+
next: trackedAsyncNext(methods.next, recorder, iteratorIndex),
|
|
245
|
+
return: trackedAsyncReturn(methods.return, recorder, iteratorIndex),
|
|
246
|
+
throw: trackedAsyncThrow(methods.throw, recorder, iteratorIndex)
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
function createSyncIterator(methods, recorder, iteratorIndex) {
|
|
250
|
+
const tracked = trackedSyncMethods(methods, recorder, iteratorIndex);
|
|
251
|
+
const bareIterator = {
|
|
252
|
+
next() {
|
|
253
|
+
return tracked.next();
|
|
254
|
+
},
|
|
255
|
+
return(value) {
|
|
256
|
+
return tracked.return(value);
|
|
257
|
+
},
|
|
258
|
+
throw(value) {
|
|
259
|
+
return tracked.throw(value);
|
|
260
|
+
}
|
|
261
|
+
};
|
|
262
|
+
const iterator = Object.assign(Iterator.from(bareIterator), tracked);
|
|
263
|
+
installProtocolMetadata(iterator, {
|
|
264
|
+
disposeMethod() {
|
|
265
|
+
const dispose = Reflect.get(iterator, disposeSymbol);
|
|
266
|
+
return typeof dispose === 'function' ? dispose : null;
|
|
267
|
+
},
|
|
268
|
+
iteratorEvents: recorder.events,
|
|
269
|
+
kind: 'iterator'
|
|
270
|
+
});
|
|
271
|
+
return iterator;
|
|
272
|
+
}
|
|
273
|
+
function createAsyncIterator(methods, recorder, iteratorIndex) {
|
|
274
|
+
const tracked = trackedAsyncMethods(methods, recorder, iteratorIndex);
|
|
275
|
+
const iterator = {
|
|
276
|
+
next: tracked.next,
|
|
277
|
+
return: tracked.return,
|
|
278
|
+
throw: tracked.throw,
|
|
279
|
+
[Symbol.asyncIterator]() {
|
|
280
|
+
return iterator;
|
|
281
|
+
}
|
|
282
|
+
};
|
|
283
|
+
installProtocolMetadata(iterator, {
|
|
284
|
+
disposeMethod() {
|
|
285
|
+
return null;
|
|
286
|
+
},
|
|
287
|
+
iteratorEvents: recorder.events,
|
|
288
|
+
kind: 'async-iterator'
|
|
289
|
+
});
|
|
290
|
+
return iterator;
|
|
291
|
+
}
|
|
292
|
+
export function createDefaultSyncMethods() {
|
|
293
|
+
return {
|
|
294
|
+
next: testDouble({
|
|
295
|
+
answer: doneResult
|
|
296
|
+
}),
|
|
297
|
+
return: testDouble({
|
|
298
|
+
answer(invocation) {
|
|
299
|
+
return syncReturnDefault(invocation.arguments[0]);
|
|
300
|
+
}
|
|
301
|
+
}),
|
|
302
|
+
throw: testDouble({
|
|
303
|
+
answer(invocation) {
|
|
304
|
+
return syncThrowDefault(invocation.arguments[0]);
|
|
305
|
+
}
|
|
306
|
+
})
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
export function createDefaultAsyncMethods() {
|
|
310
|
+
return {
|
|
311
|
+
next: testDouble({
|
|
312
|
+
async answer() {
|
|
313
|
+
return doneResult();
|
|
314
|
+
}
|
|
315
|
+
}),
|
|
316
|
+
return: testDouble({
|
|
317
|
+
async answer(invocation) {
|
|
318
|
+
return asyncReturnDefault(invocation.arguments[0]);
|
|
319
|
+
}
|
|
320
|
+
}),
|
|
321
|
+
throw: testDouble({
|
|
322
|
+
async answer(invocation) {
|
|
323
|
+
return asyncThrowDefault(invocation.arguments[0]);
|
|
324
|
+
}
|
|
325
|
+
})
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
export function createConfiguredSyncMethods(configuration) {
|
|
329
|
+
return {
|
|
330
|
+
next: testDouble(configuration.next),
|
|
331
|
+
return: testDouble(configuration.return),
|
|
332
|
+
throw: testDouble(configuration.throw)
|
|
333
|
+
};
|
|
334
|
+
}
|
|
335
|
+
export function createConfiguredAsyncMethods(configuration) {
|
|
336
|
+
return {
|
|
337
|
+
next: testDouble(configuration.next),
|
|
338
|
+
return: testDouble(configuration.return),
|
|
339
|
+
throw: testDouble(configuration.throw)
|
|
340
|
+
};
|
|
341
|
+
}
|
|
342
|
+
export function createYieldingSyncMethods(values, returnValue) {
|
|
343
|
+
const iterator = values[Symbol.iterator]();
|
|
344
|
+
return createDelegatingSyncMethods(function source() {
|
|
345
|
+
return {
|
|
346
|
+
next() {
|
|
347
|
+
const next = iterator.next();
|
|
348
|
+
return next.done === true ? returnedResult(returnValue) : next;
|
|
349
|
+
}
|
|
350
|
+
};
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
export function createYieldingAsyncMethods(values, returnValue) {
|
|
354
|
+
const iterator = values[Symbol.iterator]();
|
|
355
|
+
return createDelegatingAsyncMethods(function source() {
|
|
356
|
+
return {
|
|
357
|
+
async next() {
|
|
358
|
+
const next = iterator.next();
|
|
359
|
+
return next.done === true ? returnedResult(returnValue) : next;
|
|
360
|
+
}
|
|
361
|
+
};
|
|
362
|
+
});
|
|
363
|
+
}
|
|
364
|
+
function isSyncIterable(value) {
|
|
365
|
+
return value !== null && typeof value === 'object' &&
|
|
366
|
+
typeof Reflect.get(value, Symbol.iterator) === 'function';
|
|
367
|
+
}
|
|
368
|
+
function isAsyncIterable(value) {
|
|
369
|
+
return value !== null && typeof value === 'object' &&
|
|
370
|
+
typeof Reflect.get(value, Symbol.asyncIterator) === 'function';
|
|
371
|
+
}
|
|
372
|
+
function syncIteratorFrom(value) {
|
|
373
|
+
if (isSyncIterable(value)) {
|
|
374
|
+
return value[Symbol.iterator]();
|
|
375
|
+
}
|
|
376
|
+
return value;
|
|
377
|
+
}
|
|
378
|
+
function asyncIteratorFrom(value) {
|
|
379
|
+
if (isAsyncIterable(value)) {
|
|
380
|
+
return value[Symbol.asyncIterator]();
|
|
381
|
+
}
|
|
382
|
+
return isSyncIterable(value) ? value[Symbol.iterator]() : value;
|
|
383
|
+
}
|
|
384
|
+
function cachedSource(source) {
|
|
385
|
+
let cached = null;
|
|
386
|
+
return function currentSource() {
|
|
387
|
+
if (cached === null) {
|
|
388
|
+
cached = source();
|
|
389
|
+
}
|
|
390
|
+
return cached;
|
|
391
|
+
};
|
|
392
|
+
}
|
|
393
|
+
export function createDelegatingSyncMethods(sourceFactory) {
|
|
394
|
+
const current = cachedSource(function createSource() {
|
|
395
|
+
return syncIteratorFrom(sourceFactory());
|
|
396
|
+
});
|
|
397
|
+
return {
|
|
398
|
+
next: testDouble({
|
|
399
|
+
answer(invocation) {
|
|
400
|
+
return current().next(invocation.arguments[0]);
|
|
401
|
+
}
|
|
402
|
+
}),
|
|
403
|
+
return: testDouble({
|
|
404
|
+
answer(invocation) {
|
|
405
|
+
const iterator = current();
|
|
406
|
+
const returnMethod = iterator.return;
|
|
407
|
+
return typeof returnMethod === 'function'
|
|
408
|
+
? returnMethod.call(iterator, invocation.arguments[0])
|
|
409
|
+
: syncReturnDefault(invocation.arguments[0]);
|
|
410
|
+
}
|
|
411
|
+
}),
|
|
412
|
+
throw: testDouble({
|
|
413
|
+
answer(invocation) {
|
|
414
|
+
const iterator = current();
|
|
415
|
+
const throwMethod = iterator.throw;
|
|
416
|
+
return typeof throwMethod === 'function'
|
|
417
|
+
? throwMethod.call(iterator, invocation.arguments[0])
|
|
418
|
+
: syncThrowDefault(invocation.arguments[0]);
|
|
419
|
+
}
|
|
420
|
+
})
|
|
421
|
+
};
|
|
422
|
+
}
|
|
423
|
+
export function createDelegatingAsyncMethods(sourceFactory) {
|
|
424
|
+
const current = cachedSource(function createSource() {
|
|
425
|
+
return asyncIteratorFrom(sourceFactory());
|
|
426
|
+
});
|
|
427
|
+
return {
|
|
428
|
+
next: testDouble({
|
|
429
|
+
async answer(invocation) {
|
|
430
|
+
return current().next(invocation.arguments[0]);
|
|
431
|
+
}
|
|
432
|
+
}),
|
|
433
|
+
return: testDouble({
|
|
434
|
+
async answer(invocation) {
|
|
435
|
+
const iterator = current();
|
|
436
|
+
const returnMethod = iterator.return;
|
|
437
|
+
if (typeof returnMethod !== 'function') {
|
|
438
|
+
return asyncReturnDefault(invocation.arguments[0]);
|
|
439
|
+
}
|
|
440
|
+
return await Reflect.apply(returnMethod, iterator, [
|
|
441
|
+
invocation.arguments[0]
|
|
442
|
+
]);
|
|
443
|
+
}
|
|
444
|
+
}),
|
|
445
|
+
throw: testDouble({
|
|
446
|
+
async answer(invocation) {
|
|
447
|
+
const iterator = current();
|
|
448
|
+
const throwMethod = iterator.throw;
|
|
449
|
+
if (typeof throwMethod !== 'function') {
|
|
450
|
+
return asyncThrowDefault(invocation.arguments[0]);
|
|
451
|
+
}
|
|
452
|
+
return await Reflect.apply(throwMethod, iterator, [
|
|
453
|
+
invocation.arguments[0]
|
|
454
|
+
]);
|
|
455
|
+
}
|
|
456
|
+
})
|
|
457
|
+
};
|
|
458
|
+
}
|
|
459
|
+
function iteratorEventsFor(call) {
|
|
460
|
+
return call.result.status === 'returned'
|
|
461
|
+
? protocolIteratorEvents(call.result.value) ?? []
|
|
462
|
+
: [];
|
|
463
|
+
}
|
|
464
|
+
export function createSyncIteratorFromMethods(methods) {
|
|
465
|
+
return createSyncIterator(methods, createIteratorEventRecorder(), 0);
|
|
466
|
+
}
|
|
467
|
+
export function createAsyncIteratorFromMethods(methods) {
|
|
468
|
+
return createAsyncIterator(methods, createIteratorEventRecorder(), 0);
|
|
469
|
+
}
|
|
470
|
+
export function createSyncIterableFromFactory(createIterator) {
|
|
471
|
+
const iterator = testDouble({
|
|
472
|
+
answer: createIterator
|
|
473
|
+
});
|
|
474
|
+
return createSyncIterableFromMethod(iterator);
|
|
475
|
+
}
|
|
476
|
+
export function createSyncIterableFromMethod(iterator) {
|
|
477
|
+
const iterable = {
|
|
478
|
+
[Symbol.iterator]: iterator
|
|
479
|
+
};
|
|
480
|
+
installProtocolMetadata(iterable, {
|
|
481
|
+
disposeMethod() {
|
|
482
|
+
return null;
|
|
483
|
+
},
|
|
484
|
+
iteratorEvents() {
|
|
485
|
+
return iterator.calls.flatMap(iteratorEventsFor);
|
|
486
|
+
},
|
|
487
|
+
kind: 'iterable'
|
|
488
|
+
});
|
|
489
|
+
return iterable;
|
|
490
|
+
}
|
|
491
|
+
export function createAsyncIterableFromFactory(createIterator) {
|
|
492
|
+
const asyncIterator = testDouble({
|
|
493
|
+
answer: createIterator
|
|
494
|
+
});
|
|
495
|
+
return createAsyncIterableFromMethod(asyncIterator);
|
|
496
|
+
}
|
|
497
|
+
export function createAsyncIterableFromMethod(asyncIterator) {
|
|
498
|
+
const iterable = {
|
|
499
|
+
[Symbol.asyncIterator]: asyncIterator
|
|
500
|
+
};
|
|
501
|
+
installProtocolMetadata(iterable, {
|
|
502
|
+
disposeMethod() {
|
|
503
|
+
return null;
|
|
504
|
+
},
|
|
505
|
+
iteratorEvents() {
|
|
506
|
+
return asyncIterator.calls.flatMap(iteratorEventsFor);
|
|
507
|
+
},
|
|
508
|
+
kind: 'async-iterable'
|
|
509
|
+
});
|
|
510
|
+
return iterable;
|
|
511
|
+
}
|
|
512
|
+
//# sourceMappingURL=protocol-iterator-double.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol-iterator-double.js","sourceRoot":"","sources":["../../../../source/doubles/protocol-iterator-double.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { type CallableSignature, type ConstructorSignature, type DoubleInvocation, type UnknownFunction } from './double-behavior.ts';
|
|
2
|
+
import type { DoubleHistory as HistoryForDouble } from './double-history.ts';
|
|
3
|
+
import type { AsyncGeneratorSignature, AsyncReturnArguments, AsyncSourceFactory, AsyncYieldValue, SyncGeneratorSignature, SyncReturnArguments, SyncSourceFactory, SyncYieldValue } from './double-rule-generator.ts';
|
|
4
|
+
import type { ConstructInstance, ConstructSignature, DoubleRuleFor, FallbackFor, ResolvedSignature, ResolvedValue, ReturnArguments, ReturnSignature } from './double-rule-types.ts';
|
|
5
|
+
import type { CallArguments, CallReturn, ConstructionArguments, ConstructionInstance } from './double-signature.ts';
|
|
6
|
+
type CallableInvocationFor<Signature> = [Signature] extends [CallableSignature] ? DoubleInvocation<CallArguments<Signature>> : never;
|
|
7
|
+
type ConstructionInvocationFor<Signature> = [Signature] extends [ConstructorSignature] ? DoubleInvocation<ConstructionArguments<Signature>> : never;
|
|
8
|
+
type InvocationFor<Signature> = CallableInvocationFor<Signature> | ConstructionInvocationFor<Signature>;
|
|
9
|
+
type AnswerReturn<Signature> = CallReturn<Signature> | ConstructionInstance<Signature>;
|
|
10
|
+
type RuleConfiguration<Signature> = {
|
|
11
|
+
readonly rules?: readonly DoubleRuleFor<Signature>[];
|
|
12
|
+
};
|
|
13
|
+
type AnswerConfiguration<Signature> = RuleConfiguration<Signature> & {
|
|
14
|
+
readonly answer: (invocation: InvocationFor<Signature>) => AnswerReturn<Signature>;
|
|
15
|
+
readonly fallback?: never;
|
|
16
|
+
};
|
|
17
|
+
type FallbackConfiguration<Signature> = RuleConfiguration<Signature> & {
|
|
18
|
+
readonly answer?: never;
|
|
19
|
+
readonly fallback?: FallbackFor<Signature>;
|
|
20
|
+
};
|
|
21
|
+
export type TestDoubleConfiguration<Signature> = AnswerConfiguration<Signature> | FallbackConfiguration<Signature>;
|
|
22
|
+
export type DoubleHistory<Signature> = HistoryForDouble<Signature>;
|
|
23
|
+
export type TestDouble<Signature> = DoubleHistory<Signature> & Signature;
|
|
24
|
+
export type TestDoubleFactory = {
|
|
25
|
+
<Signature extends CallableSignature | ConstructorSignature = UnknownFunction<unknown>>(...configuration: Signature extends ConstructorSignature ? readonly [TestDoubleConfiguration<Signature>] : readonly [] | readonly [TestDoubleConfiguration<Signature>]): TestDouble<Signature>;
|
|
26
|
+
readonly constructs: <SignatureOrInstance>(instance: ConstructInstance<SignatureOrInstance>) => TestDouble<ConstructSignature<SignatureOrInstance>>;
|
|
27
|
+
readonly rejects: {
|
|
28
|
+
(reason: unknown): TestDouble<UnknownFunction<Promise<never>>>;
|
|
29
|
+
<Signature extends CallableSignature>(reason: ReturnType<Signature> extends Promise<unknown> ? unknown : never): TestDouble<Signature>;
|
|
30
|
+
};
|
|
31
|
+
readonly resolves: <SignatureOrValue>(value: ResolvedValue<SignatureOrValue>) => TestDouble<ResolvedSignature<SignatureOrValue>>;
|
|
32
|
+
readonly returns: <SignatureOrValue>(...value: ReturnArguments<SignatureOrValue>) => TestDouble<ReturnSignature<SignatureOrValue>>;
|
|
33
|
+
readonly throws: {
|
|
34
|
+
(thrown: unknown): TestDouble<UnknownFunction<never>>;
|
|
35
|
+
<Signature extends CallableSignature>(thrown: ReturnType<Signature> extends Promise<unknown> ? never : unknown): TestDouble<Signature>;
|
|
36
|
+
};
|
|
37
|
+
readonly yields: {
|
|
38
|
+
<YieldValue>(values: readonly YieldValue[]): TestDouble<UnknownFunction<Generator<YieldValue, undefined, unknown>>>;
|
|
39
|
+
<YieldValue, ReturnValue>(values: readonly YieldValue[], returnValue: ReturnValue): TestDouble<UnknownFunction<Generator<YieldValue, ReturnValue, unknown>>>;
|
|
40
|
+
<Signature extends CallableSignature>(values: readonly SyncYieldValue<ReturnType<SyncGeneratorSignature<Signature>>>[], ...returnValue: SyncReturnArguments<ReturnType<SyncGeneratorSignature<Signature>>>): TestDouble<SyncGeneratorSignature<Signature>>;
|
|
41
|
+
};
|
|
42
|
+
readonly yieldsAsync: {
|
|
43
|
+
<YieldValue>(values: readonly YieldValue[]): TestDouble<UnknownFunction<AsyncGenerator<YieldValue, undefined, unknown>>>;
|
|
44
|
+
<YieldValue, ReturnValue>(values: readonly YieldValue[], returnValue: ReturnValue): TestDouble<UnknownFunction<AsyncGenerator<YieldValue, ReturnValue, unknown>>>;
|
|
45
|
+
<Signature extends CallableSignature>(values: readonly AsyncYieldValue<ReturnType<AsyncGeneratorSignature<Signature>>>[], ...returnValue: AsyncReturnArguments<ReturnType<AsyncGeneratorSignature<Signature>>>): TestDouble<AsyncGeneratorSignature<Signature>>;
|
|
46
|
+
};
|
|
47
|
+
readonly yieldsAsyncFrom: {
|
|
48
|
+
<SourceFactory extends (...arguments_: readonly unknown[]) => AsyncIterable<unknown> | Iterable<unknown>>(sourceFactory: SourceFactory): TestDouble<UnknownFunction<ReturnType<SourceFactory>>>;
|
|
49
|
+
<Signature extends CallableSignature>(sourceFactory: AsyncSourceFactory<Signature>): TestDouble<AsyncGeneratorSignature<Signature>>;
|
|
50
|
+
};
|
|
51
|
+
readonly yieldsFrom: {
|
|
52
|
+
<SourceFactory extends (...arguments_: readonly unknown[]) => Iterable<unknown>>(sourceFactory: SourceFactory): TestDouble<UnknownFunction<ReturnType<SourceFactory>>>;
|
|
53
|
+
<Signature extends CallableSignature>(sourceFactory: SyncSourceFactory<Signature>): TestDouble<SyncGeneratorSignature<Signature>>;
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
export type TestDoubleScope = {
|
|
57
|
+
readonly testDouble: TestDoubleFactory;
|
|
58
|
+
};
|
|
59
|
+
export declare function createTestDoubleScope(): TestDoubleScope;
|
|
60
|
+
export declare const testDouble: TestDoubleFactory;
|
|
61
|
+
export {};
|
|
62
|
+
//# sourceMappingURL=test-double.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-double.d.ts","sourceRoot":"","sources":["../../../../source/doubles/test-double.ts"],"names":[],"mappings":"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"}
|