testeranto 0.94.0 → 0.100.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.
Files changed (103) hide show
  1. package/bundle.js +4 -7
  2. package/dist/common/src/PM/main.js +160 -42
  3. package/dist/common/src/PM/node.js +20 -5
  4. package/dist/common/src/PM/web.js +19 -4
  5. package/dist/common/src/SubPackages/react/jsx/node.js +1 -6
  6. package/dist/common/src/cli.js +439 -0
  7. package/dist/common/src/cli2.js +144 -0
  8. package/dist/common/src/esbuildConfigs/inputFilesPlugin.js +18 -6
  9. package/dist/common/src/esbuildConfigs/node.js +1 -4
  10. package/dist/common/src/esbuildConfigs/web.js +1 -1
  11. package/dist/common/src/lib/abstractBase.js +14 -91
  12. package/dist/common/src/lib/types.js +1 -0
  13. package/dist/common/tsconfig.common.tsbuildinfo +1 -1
  14. package/dist/module/src/PM/main.js +160 -42
  15. package/dist/module/src/PM/node.js +20 -5
  16. package/dist/module/src/PM/web.js +19 -4
  17. package/dist/module/src/SubPackages/react/jsx/node.js +1 -6
  18. package/dist/module/src/cli.js +411 -0
  19. package/dist/module/src/cli2.js +116 -0
  20. package/dist/module/src/esbuildConfigs/inputFilesPlugin.js +18 -6
  21. package/dist/module/src/esbuildConfigs/node.js +1 -4
  22. package/dist/module/src/esbuildConfigs/web.js +1 -1
  23. package/dist/module/src/lib/abstractBase.js +14 -91
  24. package/dist/module/src/lib/types.js +1 -0
  25. package/dist/module/tsconfig.module.tsbuildinfo +1 -1
  26. package/dist/prebuild/cli.mjs +1491 -0
  27. package/dist/prebuild/{run-tests.mjs → cli2.mjs} +203 -156
  28. package/dist/types/src/Node.d.ts +2 -2
  29. package/dist/types/src/PM/index.d.ts +10 -2
  30. package/dist/types/src/PM/main.d.ts +13 -7
  31. package/dist/types/src/PM/node.d.ts +9 -2
  32. package/dist/types/src/PM/web.d.ts +9 -3
  33. package/dist/types/src/SubPackages/puppeteer.d.ts +1 -1
  34. package/dist/types/src/SubPackages/react/component/node.d.ts +1 -1
  35. package/dist/types/src/SubPackages/react/component/web.d.ts +1 -1
  36. package/dist/types/src/SubPackages/react/jsx/node.d.ts +3 -3
  37. package/dist/types/src/SubPackages/react/jsx/web.d.ts +2 -2
  38. package/dist/types/src/SubPackages/react-dom/component/node.d.ts +2 -2
  39. package/dist/types/src/SubPackages/react-dom/component/web.d.ts +1 -1
  40. package/dist/types/src/SubPackages/react-dom/jsx/node.d.ts +1 -1
  41. package/dist/types/src/SubPackages/react-dom/jsx/web.d.ts +2 -2
  42. package/dist/types/src/SubPackages/react-test-renderer/MemoExoticComponent/node.d.ts +2 -2
  43. package/dist/types/src/SubPackages/react-test-renderer/component/node.d.ts +2 -2
  44. package/dist/types/src/SubPackages/react-test-renderer/component/web.d.ts +2 -2
  45. package/dist/types/src/SubPackages/react-test-renderer/fc/node.d.ts +2 -2
  46. package/dist/types/src/SubPackages/react-test-renderer/fc/web.d.ts +2 -2
  47. package/dist/types/src/SubPackages/react-test-renderer/jsx/node.d.ts +3 -2
  48. package/dist/types/src/SubPackages/react-test-renderer/jsx/web.d.ts +2 -2
  49. package/dist/types/src/SubPackages/react-test-renderer/jsx-promised/node.d.ts +2 -2
  50. package/dist/types/src/SubPackages/react-test-renderer/jsx-promised/web.d.ts +2 -2
  51. package/dist/types/src/Types.d.ts +60 -21
  52. package/dist/types/src/Web.d.ts +2 -2
  53. package/dist/types/src/lib/index.d.ts +1 -1
  54. package/dist/types/src/lib/types.d.ts +2 -30
  55. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  56. package/package.json +11 -8
  57. package/src/PM/index.ts +12 -8
  58. package/src/PM/main.ts +218 -62
  59. package/src/PM/node.ts +42 -7
  60. package/src/PM/web.ts +33 -5
  61. package/src/SubPackages/react/jsx/node.ts +16 -5
  62. package/src/SubPackages/react-test-renderer/jsx/node.ts +16 -1
  63. package/src/Types.ts +362 -114
  64. package/src/cli.ts +535 -0
  65. package/src/cli2.ts +157 -0
  66. package/src/esbuildConfigs/inputFilesPlugin.ts +27 -6
  67. package/src/esbuildConfigs/node.ts +4 -7
  68. package/src/esbuildConfigs/web.ts +4 -3
  69. package/src/lib/abstractBase.ts +58 -115
  70. package/src/lib/types.ts +3 -177
  71. package/dist/common/src/Aider.js +0 -143
  72. package/dist/common/src/Project.js +0 -227
  73. package/dist/common/src/Puppeteer.js +0 -111
  74. package/dist/common/src/build-tests.js +0 -39
  75. package/dist/common/src/esbuildConfigs/features.js +0 -14
  76. package/dist/common/src/esbuildConfigs/report.js +0 -14
  77. package/dist/common/src/esbuildConfigs/tests.js +0 -13
  78. package/dist/common/src/run-tests.js +0 -39
  79. package/dist/module/src/Aider.js +0 -136
  80. package/dist/module/src/Project.js +0 -220
  81. package/dist/module/src/Puppeteer.js +0 -106
  82. package/dist/module/src/build-tests.js +0 -11
  83. package/dist/module/src/esbuildConfigs/features.js +0 -12
  84. package/dist/module/src/esbuildConfigs/report.js +0 -14
  85. package/dist/module/src/esbuildConfigs/tests.js +0 -11
  86. package/dist/module/src/run-tests.js +0 -11
  87. package/dist/prebuild/build-tests.mjs +0 -553
  88. package/dist/types/src/Aider.d.ts +0 -1
  89. package/dist/types/src/Project.d.ts +0 -12
  90. package/dist/types/src/Puppeteer.d.ts +0 -2
  91. package/dist/types/src/esbuildConfigs/features.d.ts +0 -4
  92. package/dist/types/src/esbuildConfigs/report.d.ts +0 -0
  93. package/dist/types/src/esbuildConfigs/tests.d.ts +0 -4
  94. package/src/Aider.ts +0 -168
  95. package/src/Project.ts +0 -292
  96. package/src/Puppeteer.ts +0 -143
  97. package/src/build-tests.ts +0 -12
  98. package/src/esbuildConfigs/features.ts +0 -17
  99. package/src/esbuildConfigs/report.ts +0 -15
  100. package/src/esbuildConfigs/tests.ts +0 -14
  101. package/src/run-tests.ts +0 -12
  102. /package/dist/types/src/{build-tests.d.ts → cli.d.ts} +0 -0
  103. /package/dist/types/src/{run-tests.d.ts → cli2.d.ts} +0 -0
@@ -8,7 +8,22 @@ import {
8
8
  testInterface as baseInterface,
9
9
  } from "./index.js";
10
10
 
11
- export default <ITestShape extends IBaseTest>(
11
+ export default <
12
+ ITestShape extends IBaseTest<
13
+ IInput,
14
+ number,
15
+ number,
16
+ number,
17
+ unknown,
18
+ unknown,
19
+ unknown,
20
+ Record<string, any>,
21
+ Record<string, any>,
22
+ Record<string, any>,
23
+ Record<string, any>,
24
+ Record<string, any>
25
+ >
26
+ >(
12
27
  testImplementations: ITestImpl<ITestShape>,
13
28
  testSpecifications: ITestSpec<ITestShape>,
14
29
  testInput: IInput,
@@ -19,9 +34,5 @@ export default <ITestShape extends IBaseTest>(
19
34
  testSpecifications,
20
35
  testImplementations,
21
36
  testInterface
22
- // {
23
- // ...baseInterface,
24
- // ...testInterface,
25
- // }
26
37
  );
27
38
  };
@@ -5,7 +5,22 @@ import type { ITestImpl, ITestSpec } from "../jsx-promised";
5
5
 
6
6
  import { IInput, testInterface } from "./index.js";
7
7
 
8
- export default <ITestShape extends IBaseTest>(
8
+ export default <
9
+ ITestShape extends IBaseTest<
10
+ unknown,
11
+ unknown,
12
+ unknown,
13
+ unknown,
14
+ unknown,
15
+ unknown,
16
+ unknown,
17
+ Record<string, any>,
18
+ Record<string, any>,
19
+ Record<string, any>,
20
+ Record<string, any>,
21
+ Record<string, any>
22
+ >
23
+ >(
9
24
  testImplementations: ITestImpl<ITestShape>,
10
25
  testSpecifications: ITestSpec<ITestShape>,
11
26
  testInput: IInput,
package/src/Types.ts CHANGED
@@ -1,4 +1,8 @@
1
- import { ITTestResourceRequest, ITestCheckCallback } from "./lib/index.js";
1
+ import {
2
+ ITTestResourceConfiguration,
3
+ ITestArtificer,
4
+ ITestCheckCallback,
5
+ } from "./lib/index.js";
2
6
  import {
3
7
  IGivens,
4
8
  BaseCheck,
@@ -7,16 +11,10 @@ import {
7
11
  BaseThen,
8
12
  BaseGiven,
9
13
  } from "./lib/abstractBase.js";
10
- import Testeranto from "./lib/core.js";
11
- import {
12
- INodeTestInterface,
13
- ITestInterface,
14
- IWebTestInterface,
15
- } from "./lib/types.js";
16
14
  import { PM } from "./PM/index.js";
17
15
 
18
- export type IPartialInterface<
19
- I extends IBaseTest<
16
+ export type IWebTestInterface<
17
+ ITestShape extends IBaseTest<
20
18
  unknown,
21
19
  unknown,
22
20
  unknown,
@@ -30,43 +28,166 @@ export type IPartialInterface<
30
28
  Record<string, any>,
31
29
  Record<string, any>
32
30
  >
33
- > = Partial<ITestInterface<I>>;
31
+ > = {
32
+ assertThis: (x: ITestShape["then"]) => void;
33
+ andWhen: (
34
+ store: ITestShape["istore"],
35
+ whenCB: ITestShape["when"],
36
+ testResource: ITTestResourceConfiguration,
37
+ utils: PM
38
+ ) => Promise<ITestShape["istore"]>;
39
+ butThen: (
40
+ store: ITestShape["istore"],
41
+ thenCB,
42
+ testResource: ITTestResourceConfiguration,
43
+ utils: PM
44
+ ) => Promise<ITestShape["iselection"]>;
45
+ afterAll: (
46
+ store: ITestShape["istore"],
47
+ artificer: ITestArtificer,
48
+ utils: PM
49
+ ) => any;
50
+ afterEach: (
51
+ store: ITestShape["istore"],
52
+ key: string,
53
+ artificer: ITestArtificer,
54
+ utils: PM
55
+ ) => Promise<unknown>;
56
+ beforeAll: (
57
+ input: ITestShape["iinput"],
58
+ testResource: ITTestResourceConfiguration,
59
+ artificer: ITestArtificer,
60
+ utils: PM
61
+ ) => Promise<ITestShape["isubject"]>;
62
+ beforeEach: (
63
+ subject: ITestShape["isubject"],
64
+ initializer: (c?) => ITestShape["given"],
65
+ artificer: ITestArtificer,
66
+ testResource: ITTestResourceConfiguration,
67
+ initialValues,
68
+ utils: PM
69
+ ) => Promise<ITestShape["istore"]>;
70
+ };
34
71
 
35
- export type IPartialNodeInterface<
36
- I extends IBaseTest<
72
+ export type INodeTestInterface<
73
+ I extends Ibdd_in<
37
74
  unknown,
38
75
  unknown,
39
76
  unknown,
40
77
  unknown,
41
78
  unknown,
42
79
  unknown,
43
- unknown,
44
- Record<string, any>,
45
- Record<string, any>,
46
- Record<string, any>,
47
- Record<string, any>,
48
- Record<string, any>
80
+ unknown
49
81
  >
50
- > = Partial<INodeTestInterface<I>>;
51
- export type IPartialWebInterface<
52
- I extends IBaseTest<
82
+ > = {
83
+ assertThis: (x: I["then"]) => void;
84
+ andWhen: (
85
+ store: I["istore"],
86
+ whenCB: I["when"],
87
+ testResource: ITTestResourceConfiguration,
88
+ utils: PM
89
+ ) => Promise<I["istore"]>;
90
+ butThen: (
91
+ store: I["istore"],
92
+ thenCB,
93
+ testResource: ITTestResourceConfiguration,
94
+ utils: PM
95
+ ) => Promise<I["iselection"]>;
96
+ afterAll: (store: I["istore"], artificer: ITestArtificer, pm: PM) => any;
97
+ afterEach: (
98
+ store: I["istore"],
99
+ key: string,
100
+ artificer: ITestArtificer,
101
+ pm: PM
102
+ ) => Promise<unknown>;
103
+ beforeAll: (
104
+ input: I["iinput"],
105
+ testResource: ITTestResourceConfiguration,
106
+ artificer: ITestArtificer,
107
+ pm: PM
108
+ ) => Promise<I["isubject"]>;
109
+ beforeEach: (
110
+ subject: I["isubject"],
111
+ initializer: (c?) => I["given"],
112
+ artificer: ITestArtificer,
113
+ testResource: ITTestResourceConfiguration,
114
+ initialValues,
115
+ pm: PM
116
+ ) => Promise<I["istore"]>;
117
+ };
118
+
119
+ export type ITestInterface<
120
+ I extends Ibdd_in<
53
121
  unknown,
54
122
  unknown,
55
123
  unknown,
56
124
  unknown,
57
125
  unknown,
58
126
  unknown,
127
+ unknown
128
+ >
129
+ > = {
130
+ assertThis: (x: I["then"]) => void;
131
+ andWhen: (
132
+ store: I["istore"],
133
+ whenCB: I["when"],
134
+ testResource: ITTestResourceConfiguration,
135
+ pm: PM
136
+ ) => Promise<I["istore"]>;
137
+ butThen: (
138
+ store: I["istore"],
139
+ thenCB: I["then"],
140
+ testResource: ITTestResourceConfiguration,
141
+ pm: PM
142
+ ) => Promise<I["iselection"]>;
143
+ afterAll: (store: I["istore"], artificer: ITestArtificer, pm: PM) => any;
144
+ afterEach: (
145
+ store: I["istore"],
146
+ key: string,
147
+ artificer: ITestArtificer,
148
+ pm: PM
149
+ ) => Promise<unknown>;
150
+ beforeAll: (
151
+ input: I["iinput"],
152
+ testResource: ITTestResourceConfiguration,
153
+ artificer: ITestArtificer,
154
+ pm: PM
155
+ ) => Promise<I["isubject"]>;
156
+ beforeEach: (
157
+ subject: I["isubject"],
158
+ initializer: (c?) => I["given"],
159
+ artificer: ITestArtificer,
160
+ testResource: ITTestResourceConfiguration,
161
+ initialValues,
162
+ pm: PM
163
+ ) => Promise<I["istore"]>;
164
+ };
165
+
166
+ export type IPartialInterface<
167
+ I extends Ibdd_in<
59
168
  unknown,
60
- Record<string, any>,
61
- Record<string, any>,
62
- Record<string, any>,
63
- Record<string, any>,
64
- Record<string, any>
169
+ unknown,
170
+ unknown,
171
+ unknown,
172
+ unknown,
173
+ unknown,
174
+ unknown
65
175
  >
66
- > = Partial<IWebTestInterface<I>>;
176
+ > = Partial<ITestInterface<I>>;
67
177
 
68
- export type IEntry<
69
- ITestShape extends IBaseTest<
178
+ export type IPartialNodeInterface<
179
+ I extends Ibdd_in<
180
+ unknown,
181
+ unknown,
182
+ unknown,
183
+ unknown,
184
+ unknown,
185
+ unknown,
186
+ unknown
187
+ >
188
+ > = Partial<INodeTestInterface<I>>;
189
+ export type IPartialWebInterface<
190
+ I extends IBaseTest<
70
191
  unknown,
71
192
  unknown,
72
193
  unknown,
@@ -80,23 +201,10 @@ export type IEntry<
80
201
  Record<string, any>,
81
202
  Record<string, any>
82
203
  >
83
- > = (
84
- input: ITestShape["iinput"],
85
- testSpecification: ITestSpecification<ITestShape>,
86
- testImplementation: ITestImplementation<ITestShape, object>,
87
- testInterface: IPartialInterface<ITestShape>,
88
- testResourceRequirement: ITTestResourceRequest
89
- ) => Promise<Testeranto<ITestShape>>;
204
+ > = Partial<IWebTestInterface<I>>;
90
205
 
91
206
  export type ITestSpecification<
92
- ITestShape extends IBaseTest<
93
- unknown,
94
- unknown,
95
- unknown,
96
- unknown,
97
- unknown,
98
- unknown,
99
- unknown,
207
+ I extends Ibdd_out<
100
208
  Record<string, any>,
101
209
  Record<string, any>,
102
210
  Record<string, any>,
@@ -105,100 +213,208 @@ export type ITestSpecification<
105
213
  >
106
214
  > = (
107
215
  Suite: {
108
- [K in keyof ITestShape["suites"]]: (
216
+ [K in keyof I["suites"]]: (
109
217
  name: string,
110
- givens: IGivens<ITestShape>,
111
- checks: BaseCheck<ITestShape>[]
112
- ) => BaseSuite<ITestShape>;
218
+ givens: IGivens<
219
+ IBaseTest<
220
+ unknown,
221
+ unknown,
222
+ unknown,
223
+ unknown,
224
+ unknown,
225
+ unknown,
226
+ unknown,
227
+ Record<string, any>,
228
+ Record<string, any>,
229
+ Record<string, any>,
230
+ Record<string, any>,
231
+ Record<string, any>
232
+ >
233
+ >,
234
+ checks: BaseCheck<
235
+ IBaseTest<
236
+ unknown,
237
+ unknown,
238
+ unknown,
239
+ unknown,
240
+ unknown,
241
+ unknown,
242
+ unknown,
243
+ Record<string, any>,
244
+ Record<string, any>,
245
+ Record<string, any>,
246
+ Record<string, any>,
247
+ Record<string, any>
248
+ >
249
+ >[]
250
+ ) => BaseSuite<
251
+ IBaseTest<
252
+ unknown,
253
+ unknown,
254
+ unknown,
255
+ unknown,
256
+ unknown,
257
+ unknown,
258
+ unknown,
259
+ Record<string, any>,
260
+ Record<string, any>,
261
+ Record<string, any>,
262
+ Record<string, any>,
263
+ Record<string, any>
264
+ >
265
+ >;
113
266
  },
114
267
  Given: {
115
- [K in keyof ITestShape["givens"]]: (
268
+ [K in keyof I["givens"]]: (
116
269
  features: string[],
117
- whens: BaseWhen<ITestShape>[],
118
- thens: BaseThen<ITestShape>[],
119
- ...xtrasB: ITestShape["givens"][K]
120
- ) => BaseGiven<ITestShape>;
270
+ whens: BaseWhen<
271
+ IBaseTest<
272
+ unknown,
273
+ unknown,
274
+ unknown,
275
+ unknown,
276
+ unknown,
277
+ unknown,
278
+ unknown,
279
+ Record<string, any>,
280
+ Record<string, any>,
281
+ Record<string, any>,
282
+ Record<string, any>,
283
+ Record<string, any>
284
+ >
285
+ >[],
286
+ thens: BaseThen<
287
+ IBaseTest<
288
+ unknown,
289
+ unknown,
290
+ unknown,
291
+ unknown,
292
+ unknown,
293
+ unknown,
294
+ unknown,
295
+ Record<string, any>,
296
+ Record<string, any>,
297
+ Record<string, any>,
298
+ Record<string, any>,
299
+ Record<string, any>
300
+ >
301
+ >[],
302
+ ...xtrasB: I["givens"][K]
303
+ ) => BaseGiven<
304
+ IBaseTest<
305
+ unknown,
306
+ unknown,
307
+ unknown,
308
+ unknown,
309
+ unknown,
310
+ unknown,
311
+ unknown,
312
+ Record<string, any>,
313
+ Record<string, any>,
314
+ Record<string, any>,
315
+ Record<string, any>,
316
+ Record<string, any>
317
+ >
318
+ >;
121
319
  },
122
320
  When: {
123
- [K in keyof ITestShape["whens"]]: (
124
- ...xtrasC: ITestShape["whens"][K]
125
- ) => BaseWhen<ITestShape>;
321
+ [K in keyof I["whens"]]: (
322
+ ...xtrasC: I["whens"][K]
323
+ ) => BaseWhen<
324
+ IBaseTest<
325
+ unknown,
326
+ unknown,
327
+ unknown,
328
+ unknown,
329
+ unknown,
330
+ unknown,
331
+ unknown,
332
+ Record<string, any>,
333
+ Record<string, any>,
334
+ Record<string, any>,
335
+ Record<string, any>,
336
+ Record<string, any>
337
+ >
338
+ >;
126
339
  },
127
340
  Then: {
128
- [K in keyof ITestShape["thens"]]: (
129
- ...xtrasD: ITestShape["thens"][K]
130
- ) => BaseThen<ITestShape>;
341
+ [K in keyof I["thens"]]: (
342
+ ...xtrasD: I["thens"][K]
343
+ ) => BaseThen<
344
+ IBaseTest<
345
+ unknown,
346
+ unknown,
347
+ unknown,
348
+ unknown,
349
+ unknown,
350
+ unknown,
351
+ unknown,
352
+ Record<string, any>,
353
+ Record<string, any>,
354
+ Record<string, any>,
355
+ Record<string, any>,
356
+ Record<string, any>
357
+ >
358
+ >;
131
359
  },
132
- Check: ITestCheckCallback<ITestShape>
360
+ Check: ITestCheckCallback<
361
+ IBaseTest<
362
+ unknown,
363
+ unknown,
364
+ unknown,
365
+ unknown,
366
+ unknown,
367
+ unknown,
368
+ unknown,
369
+ Record<string, any>,
370
+ Record<string, any>,
371
+ Record<string, any>,
372
+ Record<string, any>,
373
+ Record<string, any>
374
+ >
375
+ >
133
376
  ) => any[];
134
377
 
135
378
  export type ITestImplementation<
136
- ITestShape extends IBaseTest<
137
- unknown,
379
+ IN extends Ibdd_in<
138
380
  unknown,
139
381
  unknown,
140
382
  unknown,
141
383
  unknown,
142
384
  unknown,
143
385
  unknown,
386
+ unknown
387
+ >,
388
+ OUT extends Ibdd_out<
144
389
  Record<string, any>,
145
390
  Record<string, any>,
146
391
  Record<string, any>,
147
392
  Record<string, any>,
148
393
  Record<string, any>
149
- >,
150
- IMod = object
151
- > = Modify<
152
- {
153
- suites: {
154
- [K in keyof ITestShape["suites"]]: string;
155
- };
156
- givens: {
157
- [K in keyof ITestShape["givens"]]: (
158
- ...Ig: ITestShape["givens"][K]
159
- ) => ITestShape["given"];
160
- };
161
- whens: {
162
- [K in keyof ITestShape["whens"]]: (
163
- ...Iw: ITestShape["whens"][K]
164
- ) => (
165
- zel: ITestShape["iselection"],
166
- utils: PM
167
- ) => Promise<ITestShape["when"]>;
168
- };
169
- thens: {
170
- [K in keyof ITestShape["thens"]]: (
171
- ...It: ITestShape["thens"][K]
172
- ) => (ssel: ITestShape["iselection"], utils: PM) => ITestShape["then"];
173
- };
174
- checks: {
175
- [K in keyof ITestShape["checks"]]: (
176
- ...Ic: ITestShape["checks"][K]
177
- ) => ITestShape["given"];
178
- };
179
- },
180
- IMod
181
- >;
182
-
183
- type Modify<T, R> = Omit<T, keyof R> & R;
184
-
185
- // export type IBaseTest<Shape = any, II = Shape> = {
186
- // iinput: II;
187
- // isubject: Shape;
188
- // istore: Shape;
189
- // iselection: Shape;
190
- // // iinitial;
191
-
192
- // given;
193
- // when;
194
- // then;
394
+ >
395
+ > = {
396
+ suites: {
397
+ [K in keyof OUT["suites"]]: string;
398
+ };
399
+ givens: {
400
+ [K in keyof OUT["givens"]]: (...Ig: OUT["givens"][K]) => IN["given"];
401
+ };
402
+ whens: {
403
+ [K in keyof OUT["whens"]]: (
404
+ ...Iw: OUT["whens"][K]
405
+ ) => (zel: IN["iselection"], utils: PM) => Promise<IN["when"]>;
406
+ };
407
+ thens: {
408
+ [K in keyof OUT["thens"]]: (
409
+ ...It: OUT["thens"][K]
410
+ ) => (ssel: IN["iselection"], utils: PM) => IN["then"];
411
+ };
412
+ checks: {
413
+ [K in keyof OUT["checks"]]: (...Ic: OUT["checks"][K]) => IN["given"];
414
+ };
415
+ };
195
416
 
196
- // suites: Record<string, any>;
197
- // givens: Record<string, any>;
198
- // whens: Record<string, any>;
199
- // thens: Record<string, any>;
200
- // checks: Record<string, any>;
201
- // };
417
+ export type Modify<T, R> = Omit<T, keyof R> & R;
202
418
 
203
419
  export type IBaseTest<
204
420
  IInput,
@@ -227,3 +443,35 @@ export type IBaseTest<
227
443
  thens: IThens;
228
444
  checks: IChecks;
229
445
  };
446
+
447
+ export type Ibdd_out<
448
+ ISuites extends Record<string, any>,
449
+ IGivens extends Record<string, any>,
450
+ IWhens extends Record<string, any>,
451
+ IThens extends Record<string, any>,
452
+ IChecks extends Record<string, any>
453
+ > = {
454
+ suites: ISuites;
455
+ givens: IGivens;
456
+ whens: IWhens;
457
+ thens: IThens;
458
+ checks: IChecks;
459
+ };
460
+
461
+ export type Ibdd_in<
462
+ IInput,
463
+ ISubject,
464
+ IStore,
465
+ ISelection,
466
+ IGiven,
467
+ IWhen,
468
+ IThen
469
+ > = {
470
+ iinput: IInput;
471
+ isubject: ISubject;
472
+ istore: IStore;
473
+ iselection: ISelection;
474
+ given: IGiven;
475
+ when: IWhen;
476
+ then: IThen;
477
+ };