@logixjs/test 0.0.1
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/dist/Assertions-OpNAhiI_.d.ts +16 -0
- package/dist/Assertions-uDVCBadW.d.cts +16 -0
- package/dist/Assertions.cjs +85 -0
- package/dist/Assertions.d.cts +4 -0
- package/dist/Assertions.d.ts +4 -0
- package/dist/Assertions.js +12 -0
- package/dist/Execution-Cu-n-UYb.d.ts +18 -0
- package/dist/Execution-FfEGGSS7.d.cts +18 -0
- package/dist/Execution.cjs +98 -0
- package/dist/Execution.d.cts +2 -0
- package/dist/Execution.d.ts +2 -0
- package/dist/Execution.js +24 -0
- package/dist/ExecutionResult-BRC-Jzsv.d.cts +35 -0
- package/dist/ExecutionResult-BRC-Jzsv.d.ts +35 -0
- package/dist/TestProgram-BLXiWhJQ.d.cts +31 -0
- package/dist/TestProgram-CPvVAbfI.d.cts +10 -0
- package/dist/TestProgram-DJAm0dIS.d.ts +10 -0
- package/dist/TestProgram-X35n_2Js.d.ts +31 -0
- package/dist/TestProgram.cjs +220 -0
- package/dist/TestProgram.d.cts +6 -0
- package/dist/TestProgram.d.ts +6 -0
- package/dist/TestProgram.js +10 -0
- package/dist/TestRuntime-CyYCUXdT.d.cts +10 -0
- package/dist/TestRuntime-CyYCUXdT.d.ts +10 -0
- package/dist/TestRuntime.cjs +36 -0
- package/dist/TestRuntime.d.cts +2 -0
- package/dist/TestRuntime.d.ts +2 -0
- package/dist/TestRuntime.js +8 -0
- package/dist/Vitest-BXBtxem-.d.ts +28 -0
- package/dist/Vitest-BiBMIx3C.d.cts +28 -0
- package/dist/Vitest.cjs +3338 -0
- package/dist/Vitest.d.cts +7 -0
- package/dist/Vitest.d.ts +7 -0
- package/dist/Vitest.js +13 -0
- package/dist/chunk-42QGM623.js +16 -0
- package/dist/chunk-5XFEOVH5.js +16 -0
- package/dist/chunk-CZJ37XWT.js +132 -0
- package/dist/chunk-DKT5EFOF.js +10 -0
- package/dist/chunk-DU6VSL4D.js +57 -0
- package/dist/chunk-FOYMJMJR.js +38 -0
- package/dist/chunk-J5AZHNSA.js +32 -0
- package/dist/chunk-RG24KSEB.js +64 -0
- package/dist/chunk-TDYES47J.js +3125 -0
- package/dist/chunk-WVD5DTP4.js +20 -0
- package/dist/index.cjs +3424 -0
- package/dist/index.d.cts +11 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.js +27 -0
- package/dist/magic-string.es-6HF3TVF6.js +1308 -0
- package/dist/waitUntil-CjpwZxCu.d.cts +13 -0
- package/dist/waitUntil-CjpwZxCu.d.ts +13 -0
- package/package.json +71 -0
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// src/TestProgram.ts
|
|
31
|
+
var TestProgram_exports = {};
|
|
32
|
+
__export(TestProgram_exports, {
|
|
33
|
+
runProgram: () => runProgram
|
|
34
|
+
});
|
|
35
|
+
module.exports = __toCommonJS(TestProgram_exports);
|
|
36
|
+
|
|
37
|
+
// src/internal/api/TestProgram.ts
|
|
38
|
+
var import_effect3 = require("effect");
|
|
39
|
+
var Logix = __toESM(require("@logixjs/core"), 1);
|
|
40
|
+
|
|
41
|
+
// src/internal/api/ExecutionResult.ts
|
|
42
|
+
var make = (state, actions, trace) => ({
|
|
43
|
+
state,
|
|
44
|
+
actions,
|
|
45
|
+
trace
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
// src/internal/utils/assertions.ts
|
|
49
|
+
var import_effect = require("effect");
|
|
50
|
+
var assertState = (actual, predicate, message) => {
|
|
51
|
+
return import_effect.Effect.suspend(() => {
|
|
52
|
+
if (predicate(actual)) {
|
|
53
|
+
return import_effect.Effect.void;
|
|
54
|
+
}
|
|
55
|
+
return import_effect.Effect.fail(new Error(message || `State assertion failed. Actual: ${JSON.stringify(actual)}`));
|
|
56
|
+
});
|
|
57
|
+
};
|
|
58
|
+
var assertSignal = (actual, expectedType, expectedPayload) => {
|
|
59
|
+
return import_effect.Effect.suspend(() => {
|
|
60
|
+
const candidate = actual;
|
|
61
|
+
if (candidate && typeof candidate === "object" && typeof candidate._tag === "string" && candidate._tag === expectedType) {
|
|
62
|
+
if (expectedPayload !== void 0) {
|
|
63
|
+
if (import_effect.Equal.equals(candidate.payload, expectedPayload)) {
|
|
64
|
+
return import_effect.Effect.void;
|
|
65
|
+
}
|
|
66
|
+
return import_effect.Effect.fail(
|
|
67
|
+
new Error(
|
|
68
|
+
`Signal payload mismatch. Expected: ${JSON.stringify(expectedPayload)}, Actual: ${JSON.stringify(
|
|
69
|
+
candidate.payload
|
|
70
|
+
)}`
|
|
71
|
+
)
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
return import_effect.Effect.void;
|
|
75
|
+
}
|
|
76
|
+
return import_effect.Effect.fail(
|
|
77
|
+
new Error(`Signal assertion failed. Expected type: ${expectedType}, Actual: ${JSON.stringify(actual)}`)
|
|
78
|
+
);
|
|
79
|
+
});
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
// src/internal/utils/waitUntil.ts
|
|
83
|
+
var import_effect2 = require("effect");
|
|
84
|
+
var waitUntil = (check, options = {}) => import_effect2.Effect.gen(function* () {
|
|
85
|
+
const maxAttempts = options.maxAttempts ?? 20;
|
|
86
|
+
const step = options.step ?? "10 millis";
|
|
87
|
+
let lastError;
|
|
88
|
+
for (let i = 0; i < maxAttempts; i++) {
|
|
89
|
+
const result = yield* check.pipe(import_effect2.Effect.exit);
|
|
90
|
+
if (result._tag === "Success") {
|
|
91
|
+
return result.value;
|
|
92
|
+
}
|
|
93
|
+
lastError = result.cause;
|
|
94
|
+
yield* import_effect2.TestClock.adjust(step);
|
|
95
|
+
yield* import_effect2.Effect.yieldNow();
|
|
96
|
+
}
|
|
97
|
+
return yield* import_effect2.Effect.fail(lastError);
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
// src/internal/api/TestProgram.ts
|
|
101
|
+
var defaultOptions = (options) => {
|
|
102
|
+
const base = options ?? {};
|
|
103
|
+
const userLayer = base.layer ?? import_effect3.Layer.empty;
|
|
104
|
+
const layer = import_effect3.Layer.mergeAll(import_effect3.TestContext.TestContext, userLayer);
|
|
105
|
+
return {
|
|
106
|
+
...base,
|
|
107
|
+
layer,
|
|
108
|
+
handleSignals: base.handleSignals ?? false
|
|
109
|
+
};
|
|
110
|
+
};
|
|
111
|
+
var makeTestApi = (ctx, actionsRef) => {
|
|
112
|
+
const assertStateEffect = (predicate, options) => import_effect3.Effect.gen(function* () {
|
|
113
|
+
const check = import_effect3.Effect.flatMap(ctx.module.getState, (s) => assertState(s, predicate));
|
|
114
|
+
yield* waitUntil(check, options);
|
|
115
|
+
});
|
|
116
|
+
const assertSignalEffect = (expectedType, expectedPayload, options) => import_effect3.Effect.gen(function* () {
|
|
117
|
+
const check = import_effect3.Effect.flatMap(
|
|
118
|
+
import_effect3.Ref.get(actionsRef),
|
|
119
|
+
(actions) => import_effect3.Effect.sync(() => {
|
|
120
|
+
for (const actual of import_effect3.Chunk.toReadonlyArray(actions)) {
|
|
121
|
+
const exit = import_effect3.Effect.runSyncExit(assertSignal(actual, expectedType, expectedPayload));
|
|
122
|
+
if (exit._tag === "Success") {
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
throw new Error(
|
|
127
|
+
`Signal assertion failed: expected type=${expectedType}, payload=${JSON.stringify(expectedPayload)}`
|
|
128
|
+
);
|
|
129
|
+
})
|
|
130
|
+
);
|
|
131
|
+
yield* waitUntil(check, options);
|
|
132
|
+
});
|
|
133
|
+
return {
|
|
134
|
+
ctx,
|
|
135
|
+
dispatch: ctx.module.dispatch,
|
|
136
|
+
advance: (duration) => import_effect3.TestClock.adjust(duration).pipe(import_effect3.Effect.asVoid),
|
|
137
|
+
assert: {
|
|
138
|
+
state: assertStateEffect,
|
|
139
|
+
signal: assertSignalEffect
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
};
|
|
143
|
+
var startTraceCollectors = (ctx, traceRef, actionsRef) => import_effect3.Effect.gen(function* () {
|
|
144
|
+
yield* import_effect3.Stream.runForEach(
|
|
145
|
+
ctx.module.actions$,
|
|
146
|
+
(action) => import_effect3.Effect.gen(function* () {
|
|
147
|
+
const timestamp = yield* import_effect3.Clock.currentTimeMillis;
|
|
148
|
+
const event = { _tag: "Action", action, timestamp };
|
|
149
|
+
yield* import_effect3.Ref.update(traceRef, import_effect3.Chunk.append(event));
|
|
150
|
+
yield* import_effect3.Ref.update(actionsRef, import_effect3.Chunk.append(action));
|
|
151
|
+
})
|
|
152
|
+
).pipe(import_effect3.Effect.forkScoped, import_effect3.Scope.extend(ctx.scope));
|
|
153
|
+
yield* import_effect3.Stream.runForEach(
|
|
154
|
+
ctx.module.changes((s) => s),
|
|
155
|
+
(state) => import_effect3.Effect.gen(function* () {
|
|
156
|
+
const timestamp = yield* import_effect3.Clock.currentTimeMillis;
|
|
157
|
+
const event = { _tag: "State", state, timestamp };
|
|
158
|
+
yield* import_effect3.Ref.update(traceRef, import_effect3.Chunk.append(event));
|
|
159
|
+
})
|
|
160
|
+
).pipe(import_effect3.Effect.forkScoped, import_effect3.Scope.extend(ctx.scope));
|
|
161
|
+
yield* import_effect3.TestClock.adjust(1);
|
|
162
|
+
yield* import_effect3.Effect.yieldNow();
|
|
163
|
+
});
|
|
164
|
+
var runProgram = (program, body, options) => import_effect3.Effect.gen(function* () {
|
|
165
|
+
const traceRef = yield* import_effect3.Ref.make(import_effect3.Chunk.empty());
|
|
166
|
+
const actionsRef = yield* import_effect3.Ref.make(import_effect3.Chunk.empty());
|
|
167
|
+
const debugSink = {
|
|
168
|
+
record: (event) => {
|
|
169
|
+
if (event.type !== "lifecycle:error") {
|
|
170
|
+
return import_effect3.Effect.void;
|
|
171
|
+
}
|
|
172
|
+
return import_effect3.Effect.gen(function* () {
|
|
173
|
+
const timestamp = yield* import_effect3.Clock.currentTimeMillis;
|
|
174
|
+
const traceEvent = {
|
|
175
|
+
_tag: "Error",
|
|
176
|
+
cause: event.cause,
|
|
177
|
+
timestamp
|
|
178
|
+
};
|
|
179
|
+
yield* import_effect3.Ref.update(traceRef, import_effect3.Chunk.append(traceEvent));
|
|
180
|
+
}).pipe(import_effect3.Effect.asVoid);
|
|
181
|
+
}
|
|
182
|
+
};
|
|
183
|
+
const resolved = defaultOptions(options);
|
|
184
|
+
const ctx = yield* import_effect3.Effect.locally(Logix.Debug.internal.currentDebugSinks, [debugSink])(
|
|
185
|
+
Logix.Runtime.openProgram(program, resolved)
|
|
186
|
+
);
|
|
187
|
+
yield* import_effect3.Effect.tryPromise({
|
|
188
|
+
try: () => ctx.runtime.runPromise(startTraceCollectors(ctx, traceRef, actionsRef)),
|
|
189
|
+
catch: (e) => e
|
|
190
|
+
}).pipe(import_effect3.Effect.orDie);
|
|
191
|
+
const api = makeTestApi(ctx, actionsRef);
|
|
192
|
+
yield* import_effect3.Effect.tryPromise({
|
|
193
|
+
try: () => ctx.runtime.runPromise(body(api).pipe(import_effect3.Scope.extend(ctx.scope))),
|
|
194
|
+
catch: (e) => e
|
|
195
|
+
}).pipe(import_effect3.Effect.orDie);
|
|
196
|
+
yield* import_effect3.Effect.tryPromise({
|
|
197
|
+
try: () => ctx.runtime.runPromise(
|
|
198
|
+
import_effect3.Effect.gen(function* () {
|
|
199
|
+
yield* import_effect3.TestClock.adjust(1);
|
|
200
|
+
yield* import_effect3.Effect.yieldNow();
|
|
201
|
+
})
|
|
202
|
+
),
|
|
203
|
+
catch: (e) => e
|
|
204
|
+
}).pipe(import_effect3.Effect.orDie);
|
|
205
|
+
const finalState = yield* import_effect3.Effect.tryPromise({
|
|
206
|
+
try: () => ctx.runtime.runPromise(ctx.module.getState),
|
|
207
|
+
catch: (e) => e
|
|
208
|
+
}).pipe(import_effect3.Effect.orDie);
|
|
209
|
+
const actionsChunk = yield* import_effect3.Ref.get(actionsRef);
|
|
210
|
+
const traceChunk = yield* import_effect3.Ref.get(traceRef);
|
|
211
|
+
return make(
|
|
212
|
+
finalState,
|
|
213
|
+
import_effect3.Chunk.toReadonlyArray(actionsChunk),
|
|
214
|
+
import_effect3.Chunk.toReadonlyArray(traceChunk)
|
|
215
|
+
);
|
|
216
|
+
});
|
|
217
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
218
|
+
0 && (module.exports = {
|
|
219
|
+
runProgram
|
|
220
|
+
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Effect } from 'effect';
|
|
2
|
+
|
|
3
|
+
declare const runTest: <A, E, R>(effect: Effect.Effect<A, E, R>) => Promise<A>;
|
|
4
|
+
|
|
5
|
+
declare const TestRuntime_runTest: typeof runTest;
|
|
6
|
+
declare namespace TestRuntime {
|
|
7
|
+
export { TestRuntime_runTest as runTest };
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export { TestRuntime as T, runTest as r };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Effect } from 'effect';
|
|
2
|
+
|
|
3
|
+
declare const runTest: <A, E, R>(effect: Effect.Effect<A, E, R>) => Promise<A>;
|
|
4
|
+
|
|
5
|
+
declare const TestRuntime_runTest: typeof runTest;
|
|
6
|
+
declare namespace TestRuntime {
|
|
7
|
+
export { TestRuntime_runTest as runTest };
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export { TestRuntime as T, runTest as r };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/TestRuntime.ts
|
|
21
|
+
var TestRuntime_exports = {};
|
|
22
|
+
__export(TestRuntime_exports, {
|
|
23
|
+
runTest: () => runTest
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(TestRuntime_exports);
|
|
26
|
+
|
|
27
|
+
// src/internal/runtime/runTest.ts
|
|
28
|
+
var import_effect = require("effect");
|
|
29
|
+
var runTest = (effect) => {
|
|
30
|
+
const program = import_effect.Effect.scoped(effect).pipe(import_effect.Effect.provide(import_effect.TestContext.TestContext));
|
|
31
|
+
return import_effect.Effect.runPromise(program);
|
|
32
|
+
};
|
|
33
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
34
|
+
0 && (module.exports = {
|
|
35
|
+
runTest
|
|
36
|
+
});
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Effect } from 'effect';
|
|
2
|
+
import * as Logix from '@logixjs/core';
|
|
3
|
+
import { E as ExecutionResult } from './ExecutionResult-BRC-Jzsv.js';
|
|
4
|
+
import { T as TestApi, a as TestProgramOptions } from './TestProgram-X35n_2Js.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Sugar: defines a program test based on `TestProgram.runProgram`.
|
|
8
|
+
*
|
|
9
|
+
* - By default, asserts `Execution.expectNoError(result)`.
|
|
10
|
+
* - Recommended: for both single-module and multi-module tests, use the "program module" as the input,
|
|
11
|
+
* instead of hand-rolling lifecycle/kernel assembly.
|
|
12
|
+
*/
|
|
13
|
+
declare const itProgram: <Sh extends Logix.AnyModuleShape>(name: string, program: Logix.ModuleImpl<any, Sh, any> | Logix.AnyModule, body: (api: TestApi<Sh>) => Effect.Effect<void, any, any>, options?: TestProgramOptions) => void;
|
|
14
|
+
/**
|
|
15
|
+
* Variant: exposes `ExecutionResult`, leaving assertions to the caller.
|
|
16
|
+
*
|
|
17
|
+
* - Does not automatically call `Execution.expectNoError`.
|
|
18
|
+
* - Use this API when you expect specific diagnostics/traces.
|
|
19
|
+
*/
|
|
20
|
+
declare const itProgramResult: <Sh extends Logix.AnyModuleShape>(name: string, program: Logix.ModuleImpl<any, Sh, any> | Logix.AnyModule, body: (api: TestApi<Sh>) => Effect.Effect<void, any, any>, assert: (result: ExecutionResult<Sh>) => void, options?: TestProgramOptions) => void;
|
|
21
|
+
|
|
22
|
+
declare const Vitest_itProgram: typeof itProgram;
|
|
23
|
+
declare const Vitest_itProgramResult: typeof itProgramResult;
|
|
24
|
+
declare namespace Vitest {
|
|
25
|
+
export { Vitest_itProgram as itProgram, Vitest_itProgramResult as itProgramResult };
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export { Vitest as V, itProgramResult as a, itProgram as i };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Effect } from 'effect';
|
|
2
|
+
import * as Logix from '@logixjs/core';
|
|
3
|
+
import { E as ExecutionResult } from './ExecutionResult-BRC-Jzsv.cjs';
|
|
4
|
+
import { T as TestApi, a as TestProgramOptions } from './TestProgram-BLXiWhJQ.cjs';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Sugar: defines a program test based on `TestProgram.runProgram`.
|
|
8
|
+
*
|
|
9
|
+
* - By default, asserts `Execution.expectNoError(result)`.
|
|
10
|
+
* - Recommended: for both single-module and multi-module tests, use the "program module" as the input,
|
|
11
|
+
* instead of hand-rolling lifecycle/kernel assembly.
|
|
12
|
+
*/
|
|
13
|
+
declare const itProgram: <Sh extends Logix.AnyModuleShape>(name: string, program: Logix.ModuleImpl<any, Sh, any> | Logix.AnyModule, body: (api: TestApi<Sh>) => Effect.Effect<void, any, any>, options?: TestProgramOptions) => void;
|
|
14
|
+
/**
|
|
15
|
+
* Variant: exposes `ExecutionResult`, leaving assertions to the caller.
|
|
16
|
+
*
|
|
17
|
+
* - Does not automatically call `Execution.expectNoError`.
|
|
18
|
+
* - Use this API when you expect specific diagnostics/traces.
|
|
19
|
+
*/
|
|
20
|
+
declare const itProgramResult: <Sh extends Logix.AnyModuleShape>(name: string, program: Logix.ModuleImpl<any, Sh, any> | Logix.AnyModule, body: (api: TestApi<Sh>) => Effect.Effect<void, any, any>, assert: (result: ExecutionResult<Sh>) => void, options?: TestProgramOptions) => void;
|
|
21
|
+
|
|
22
|
+
declare const Vitest_itProgram: typeof itProgram;
|
|
23
|
+
declare const Vitest_itProgramResult: typeof itProgramResult;
|
|
24
|
+
declare namespace Vitest {
|
|
25
|
+
export { Vitest_itProgram as itProgram, Vitest_itProgramResult as itProgramResult };
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export { Vitest as V, itProgramResult as a, itProgram as i };
|