@hegeldev/hegel 0.1.5 → 0.2.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/README.md CHANGED
@@ -36,8 +36,7 @@ function mySort(ls: number[]): number[] {
36
36
  return [...new Set(result)];
37
37
  }
38
38
 
39
- test(
40
- "my_sort matches builtin",
39
+ test("my_sort matches builtin", () =>
41
40
  hegel.test((tc) => {
42
41
  const vec1 = tc.draw(gs.arrays(gs.integers()));
43
42
  const vec2 = mySort(vec1);
@@ -45,8 +44,7 @@ test(
45
44
  if (JSON.stringify(sorted) !== JSON.stringify(vec2)) {
46
45
  throw new Error(`sort mismatch: ${JSON.stringify(sorted)} != ${JSON.stringify(vec2)}`);
47
46
  }
48
- }),
49
- );
47
+ }));
50
48
  ```
51
49
 
52
50
  This test will fail when run with `vitest`! Hegel will produce a minimal failing test case for us:
@@ -57,3 +55,22 @@ Error: sort mismatch: [0,0] != [0]
57
55
  ```
58
56
 
59
57
  Hegel reports the minimal example showing that our sort is incorrectly dropping duplicates. If we remove the `new Set(...)` deduplication from `mySort()`, this test will then pass (because it's just comparing the standard sort against itself).
58
+
59
+ ## Async tests
60
+
61
+ For async tests, use `hegel.testAsync`:
62
+
63
+ ```typescript
64
+ import { test } from "vitest";
65
+ import * as hegel from "@hegeldev/hegel";
66
+ import * as gs from "@hegeldev/hegel/generators";
67
+
68
+ test("fetch returns a value matching its input", () =>
69
+ hegel.testAsync(async (tc) => {
70
+ const id = tc.draw(gs.integers({ minValue: 1, maxValue: 1000 }));
71
+ const result = await fetchUser(id);
72
+ if (result.id !== id) {
73
+ throw new Error(`Expected id=${id}, got ${result.id}`);
74
+ }
75
+ }));
76
+ ```
@@ -3,12 +3,12 @@
3
3
  *
4
4
  * @packageDocumentation
5
5
  */
6
- import { TestCase, type GeneratorLike } from "../testCase.js";
6
+ import { TestCase } from "../testCase.js";
7
7
  /**
8
8
  * Base class for all generators. Generators produce values of type T
9
9
  * synchronously by communicating with the hegel server.
10
10
  */
11
- export declare abstract class Generator<T> implements GeneratorLike<T> {
11
+ export declare abstract class Generator<T> {
12
12
  /** @internal */
13
13
  abstract doDraw(tc: TestCase): T;
14
14
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/generators/core.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAuB,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEnF;;;GAGG;AACH,8BAAsB,SAAS,CAAC,CAAC,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;IAC5D,gBAAgB;IAChB,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,GAAG,CAAC;IAEhC;;;;;;OAMG;IACH,OAAO,IAAI,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI;IAInC;;;OAGG;IACH,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;IAIxC;;OAEG;IACH,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;IAIvD;;;OAGG;IACH,MAAM,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC;CAGvD;AAED;;;;;;;GAOG;AACH,qBAAa,cAAc,CAAC,CAAC,CAAE,SAAQ,SAAS,CAAC,CAAC,CAAC;IACjD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA+B;gBAEzC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,CAAC;IAMxE,MAAM,CAAC,EAAE,EAAE,QAAQ,GAAG,CAAC;IAId,OAAO,IAAI,cAAc,CAAC,CAAC,CAAC;IAIrC,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,CAAC;CAG1B"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/generators/core.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAuB,MAAM,gBAAgB,CAAC;AAE/D;;;GAGG;AACH,8BAAsB,SAAS,CAAC,CAAC;IAC/B,gBAAgB;IAChB,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,GAAG,CAAC;IAEhC;;;;;;OAMG;IACH,OAAO,IAAI,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI;IAInC;;;OAGG;IACH,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;IAIxC;;OAEG;IACH,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;IAIvD;;;OAGG;IACH,MAAM,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC;CAGvD;AAED;;;;;;;GAOG;AACH,qBAAa,cAAc,CAAC,CAAC,CAAE,SAAQ,SAAS,CAAC,CAAC,CAAC;IACjD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA+B;gBAEzC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,CAAC;IAMxE,MAAM,CAAC,EAAE,EAAE,QAAQ,GAAG,CAAC;IAId,OAAO,IAAI,cAAc,CAAC,CAAC,CAAC;IAIrC,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,CAAC;CAG1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/generators/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/generators/core.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,16 +1,229 @@
1
1
  /**
2
- * Hegel property-based testing library for TypeScript.
2
+ * Hegel is a property-based testing library for TypeScript. Hegel is based on
3
+ * [Hypothesis](https://github.com/hypothesisworks/hypothesis), using the
4
+ * [Hegel protocol](https://hegel.dev/).
3
5
  *
4
- * The root entry point exposes the test runner, settings, and core types.
5
- * Generators live under `hegel/generators`.
6
+ * # Getting started
7
+ *
8
+ * This guide walks you through the basics of installing Hegel and writing your
9
+ * first tests.
10
+ *
11
+ * ## Install Hegel
12
+ *
13
+ * Add `@hegeldev/hegel` to your project as a dev dependency:
14
+ *
15
+ * ```bash
16
+ * npm install --save-dev @hegeldev/hegel
17
+ * ```
18
+ *
19
+ * Hegel requires Node 16+. Bun and Deno are not currently supported.
20
+ *
21
+ * ## Write your first test
22
+ *
23
+ * You're now ready to write your first test. We'll use
24
+ * [Vitest](https://vitest.dev/) as the test runner for the purposes of this
25
+ * guide. Create a new test file:
26
+ *
27
+ * ```ts
28
+ * import { test } from "vitest";
29
+ * import * as hegel from "@hegeldev/hegel";
30
+ * import * as gs from "@hegeldev/hegel/generators";
31
+ *
32
+ * test(
33
+ * "integer self equality",
34
+ * hegel.test((tc) => {
35
+ * const n = tc.draw(gs.integers());
36
+ * if (n !== n) {
37
+ * throw new Error("integer was not equal to itself");
38
+ * }
39
+ * }),
40
+ * );
41
+ * ```
42
+ *
43
+ * Now run the test using `npx vitest run`. You should see that this test
44
+ * passes.
45
+ *
46
+ * Let's look at what's happening in more detail. {@link test} runs your test
47
+ * many times (100, by default). The test function receives a {@link TestCase},
48
+ * which provides a {@link TestCase.draw | draw} method for drawing different
49
+ * values. This test draws a random integer and checks that it should be equal
50
+ * to itself.
51
+ *
52
+ * Next, try a test that fails:
53
+ *
54
+ * ```ts
55
+ * test(
56
+ * "integers always below 50",
57
+ * hegel.test((tc) => {
58
+ * const n = tc.draw(gs.integers());
59
+ * if (n >= 50) {
60
+ * throw new Error(`n=${n} is too large`);
61
+ * }
62
+ * }),
63
+ * );
64
+ * ```
65
+ *
66
+ * This test asserts that any integer is less than 50, which is obviously
67
+ * incorrect. Hegel will find a test case that makes this assertion fail, and
68
+ * then shrink it to find the smallest counterexample — in this case, `n = 50`.
69
+ *
70
+ * To fix this test, you can constrain the integers you generate with the
71
+ * `minValue` and `maxValue` options:
72
+ *
73
+ * ```ts
74
+ * test(
75
+ * "bounded integers always below 50",
76
+ * hegel.test((tc) => {
77
+ * const n = tc.draw(gs.integers({ minValue: 0, maxValue: 49 }));
78
+ * if (n >= 50) {
79
+ * throw new Error(`n=${n} is too large`);
80
+ * }
81
+ * }),
82
+ * );
83
+ * ```
84
+ *
85
+ * Run the test again. It should now pass.
86
+ *
87
+ * ## Use generators
88
+ *
89
+ * Hegel provides a rich library of generators that you can use out of the box.
90
+ * There are primitive generators, such as `integers`, `floats`, and `text`,
91
+ * and combinators that allow you to make generators out of other generators,
92
+ * such as `arrays` and `maps`.
93
+ *
94
+ * For example, you can use `arrays` to generate an array of integers:
95
+ *
96
+ * ```ts
97
+ * test(
98
+ * "append increases length",
99
+ * hegel.test((tc) => {
100
+ * const xs = tc.draw(gs.arrays(gs.integers()));
101
+ * const initialLength = xs.length;
102
+ * xs.push(tc.draw(gs.integers()));
103
+ * if (xs.length <= initialLength) {
104
+ * throw new Error("length did not increase");
105
+ * }
106
+ * }),
107
+ * );
108
+ * ```
109
+ *
110
+ * This test checks that appending an element to a random array of integers
111
+ * should always increase its length.
112
+ *
113
+ * You can also build composite values out of multiple generators. The simplest
114
+ * way is to draw fields directly inside the test body:
115
+ *
116
+ * ```ts
117
+ * interface Person {
118
+ * age: number;
119
+ * name: string;
120
+ * }
121
+ *
122
+ * test(
123
+ * "person",
124
+ * hegel.test((tc) => {
125
+ * const person: Person = {
126
+ * age: tc.draw(gs.integers({ minValue: 0, maxValue: 120 })),
127
+ * name: tc.draw(gs.text({ minSize: 1, maxSize: 50 })),
128
+ * };
129
+ * // use person in your test
130
+ * void person;
131
+ * }),
132
+ * );
133
+ * ```
134
+ *
135
+ * For composite values you want to reuse across tests, build a generator with
136
+ * `composite` (imperative — call `tc.draw()` on inner generators inside a
137
+ * builder function) or `record` (declarative — pass a schema mapping field
138
+ * names to generators). Both produce a generator that supports `.map()`,
139
+ * `.filter()`, and `.flatMap()` like any other generator.
140
+ *
141
+ * ```ts
142
+ * const personGen = gs.record({
143
+ * age: gs.integers({ minValue: 0, maxValue: 120 }),
144
+ * name: gs.text({ minSize: 1, maxSize: 50 }),
145
+ * });
146
+ *
147
+ * test(
148
+ * "person via record",
149
+ * hegel.test((tc) => {
150
+ * const person = tc.draw(personGen);
151
+ * void person;
152
+ * }),
153
+ * );
154
+ * ```
155
+ *
156
+ * Note that you can feed the results of one `draw` into subsequent calls — this
157
+ * is what `composite` is for. For example, say that you extend the `Person`
158
+ * interface to include a `drivingLicense` boolean field, where the field
159
+ * depends on `age`:
160
+ *
161
+ * ```ts
162
+ * interface Person {
163
+ * age: number;
164
+ * name: string;
165
+ * drivingLicense: boolean;
166
+ * }
167
+ *
168
+ * const personGen = gs.composite<Person>((tc) => {
169
+ * const age = tc.draw(gs.integers({ minValue: 0, maxValue: 120 }));
170
+ * const name = tc.draw(gs.text({ minSize: 1, maxSize: 50 }));
171
+ * const drivingLicense = age >= 18 ? tc.draw(gs.booleans()) : false;
172
+ * return { age, name, drivingLicense };
173
+ * });
174
+ * ```
175
+ *
176
+ * ## Debug your failing test cases
177
+ *
178
+ * Use the {@link TestCase.note | note} method to attach debug information:
179
+ *
180
+ * ```ts
181
+ * test(
182
+ * "addition is commutative",
183
+ * hegel.test((tc) => {
184
+ * const x = tc.draw(gs.integers());
185
+ * const y = tc.draw(gs.integers());
186
+ * tc.note(`x + y = ${x + y}, y + x = ${y + x}`);
187
+ * if (x + y !== y + x) {
188
+ * throw new Error("addition is not commutative");
189
+ * }
190
+ * }),
191
+ * );
192
+ * ```
193
+ *
194
+ * Notes only appear when Hegel replays the minimal failing example.
195
+ *
196
+ * ## Change the number of test cases
197
+ *
198
+ * By default Hegel runs 100 test cases. To override this, pass a
199
+ * {@link Settings} override as the second argument to {@link test}:
200
+ *
201
+ * ```ts
202
+ * test(
203
+ * "integers many",
204
+ * hegel.test(
205
+ * (tc) => {
206
+ * const n = tc.draw(gs.integers());
207
+ * if (n !== n) {
208
+ * throw new Error("integer was not equal to itself");
209
+ * }
210
+ * },
211
+ * { testCases: 500 },
212
+ * ),
213
+ * );
214
+ * ```
215
+ *
216
+ * ## Learning more
217
+ *
218
+ * - Browse the `@hegeldev/hegel/generators` module for the full list of
219
+ * available generators.
220
+ * - See {@link Settings} for more configuration settings to customize how
221
+ * your test runs.
6
222
  *
7
223
  * @packageDocumentation
8
224
  */
9
- export { TestCase, Collection, Labels, StopTestError, AssumeError } from "./testCase.js";
10
- export type { GeneratorLike, DataSource } from "./testCase.js";
11
- export { Hegel, test, Verbosity, HealthCheck, Database, defaultSettings, ServerDataSource, runTestCase, } from "./runner.js";
12
- export type { Settings, TestCaseResult, TestLocation } from "./runner.js";
13
- export type { Packet } from "./protocol.js";
14
- export { Connection, Stream } from "./connection.js";
15
- export { HegelSession, HEGEL_SERVER_VERSION } from "./session.js";
225
+ export * as generators from "./generators/index.js";
226
+ export { TestCase } from "./testCase.js";
227
+ export { test, testAsync, Verbosity, HealthCheck, Database } from "./runner.js";
228
+ export type { Settings } from "./runner.js";
16
229
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACzF,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EACL,KAAK,EACL,IAAI,EACJ,SAAS,EACT,WAAW,EACX,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC1E,YAAY,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+NG;AAEH,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAChF,YAAY,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -1,13 +1,228 @@
1
1
  /**
2
- * Hegel property-based testing library for TypeScript.
2
+ * Hegel is a property-based testing library for TypeScript. Hegel is based on
3
+ * [Hypothesis](https://github.com/hypothesisworks/hypothesis), using the
4
+ * [Hegel protocol](https://hegel.dev/).
3
5
  *
4
- * The root entry point exposes the test runner, settings, and core types.
5
- * Generators live under `hegel/generators`.
6
+ * # Getting started
7
+ *
8
+ * This guide walks you through the basics of installing Hegel and writing your
9
+ * first tests.
10
+ *
11
+ * ## Install Hegel
12
+ *
13
+ * Add `@hegeldev/hegel` to your project as a dev dependency:
14
+ *
15
+ * ```bash
16
+ * npm install --save-dev @hegeldev/hegel
17
+ * ```
18
+ *
19
+ * Hegel requires Node 16+. Bun and Deno are not currently supported.
20
+ *
21
+ * ## Write your first test
22
+ *
23
+ * You're now ready to write your first test. We'll use
24
+ * [Vitest](https://vitest.dev/) as the test runner for the purposes of this
25
+ * guide. Create a new test file:
26
+ *
27
+ * ```ts
28
+ * import { test } from "vitest";
29
+ * import * as hegel from "@hegeldev/hegel";
30
+ * import * as gs from "@hegeldev/hegel/generators";
31
+ *
32
+ * test(
33
+ * "integer self equality",
34
+ * hegel.test((tc) => {
35
+ * const n = tc.draw(gs.integers());
36
+ * if (n !== n) {
37
+ * throw new Error("integer was not equal to itself");
38
+ * }
39
+ * }),
40
+ * );
41
+ * ```
42
+ *
43
+ * Now run the test using `npx vitest run`. You should see that this test
44
+ * passes.
45
+ *
46
+ * Let's look at what's happening in more detail. {@link test} runs your test
47
+ * many times (100, by default). The test function receives a {@link TestCase},
48
+ * which provides a {@link TestCase.draw | draw} method for drawing different
49
+ * values. This test draws a random integer and checks that it should be equal
50
+ * to itself.
51
+ *
52
+ * Next, try a test that fails:
53
+ *
54
+ * ```ts
55
+ * test(
56
+ * "integers always below 50",
57
+ * hegel.test((tc) => {
58
+ * const n = tc.draw(gs.integers());
59
+ * if (n >= 50) {
60
+ * throw new Error(`n=${n} is too large`);
61
+ * }
62
+ * }),
63
+ * );
64
+ * ```
65
+ *
66
+ * This test asserts that any integer is less than 50, which is obviously
67
+ * incorrect. Hegel will find a test case that makes this assertion fail, and
68
+ * then shrink it to find the smallest counterexample — in this case, `n = 50`.
69
+ *
70
+ * To fix this test, you can constrain the integers you generate with the
71
+ * `minValue` and `maxValue` options:
72
+ *
73
+ * ```ts
74
+ * test(
75
+ * "bounded integers always below 50",
76
+ * hegel.test((tc) => {
77
+ * const n = tc.draw(gs.integers({ minValue: 0, maxValue: 49 }));
78
+ * if (n >= 50) {
79
+ * throw new Error(`n=${n} is too large`);
80
+ * }
81
+ * }),
82
+ * );
83
+ * ```
84
+ *
85
+ * Run the test again. It should now pass.
86
+ *
87
+ * ## Use generators
88
+ *
89
+ * Hegel provides a rich library of generators that you can use out of the box.
90
+ * There are primitive generators, such as `integers`, `floats`, and `text`,
91
+ * and combinators that allow you to make generators out of other generators,
92
+ * such as `arrays` and `maps`.
93
+ *
94
+ * For example, you can use `arrays` to generate an array of integers:
95
+ *
96
+ * ```ts
97
+ * test(
98
+ * "append increases length",
99
+ * hegel.test((tc) => {
100
+ * const xs = tc.draw(gs.arrays(gs.integers()));
101
+ * const initialLength = xs.length;
102
+ * xs.push(tc.draw(gs.integers()));
103
+ * if (xs.length <= initialLength) {
104
+ * throw new Error("length did not increase");
105
+ * }
106
+ * }),
107
+ * );
108
+ * ```
109
+ *
110
+ * This test checks that appending an element to a random array of integers
111
+ * should always increase its length.
112
+ *
113
+ * You can also build composite values out of multiple generators. The simplest
114
+ * way is to draw fields directly inside the test body:
115
+ *
116
+ * ```ts
117
+ * interface Person {
118
+ * age: number;
119
+ * name: string;
120
+ * }
121
+ *
122
+ * test(
123
+ * "person",
124
+ * hegel.test((tc) => {
125
+ * const person: Person = {
126
+ * age: tc.draw(gs.integers({ minValue: 0, maxValue: 120 })),
127
+ * name: tc.draw(gs.text({ minSize: 1, maxSize: 50 })),
128
+ * };
129
+ * // use person in your test
130
+ * void person;
131
+ * }),
132
+ * );
133
+ * ```
134
+ *
135
+ * For composite values you want to reuse across tests, build a generator with
136
+ * `composite` (imperative — call `tc.draw()` on inner generators inside a
137
+ * builder function) or `record` (declarative — pass a schema mapping field
138
+ * names to generators). Both produce a generator that supports `.map()`,
139
+ * `.filter()`, and `.flatMap()` like any other generator.
140
+ *
141
+ * ```ts
142
+ * const personGen = gs.record({
143
+ * age: gs.integers({ minValue: 0, maxValue: 120 }),
144
+ * name: gs.text({ minSize: 1, maxSize: 50 }),
145
+ * });
146
+ *
147
+ * test(
148
+ * "person via record",
149
+ * hegel.test((tc) => {
150
+ * const person = tc.draw(personGen);
151
+ * void person;
152
+ * }),
153
+ * );
154
+ * ```
155
+ *
156
+ * Note that you can feed the results of one `draw` into subsequent calls — this
157
+ * is what `composite` is for. For example, say that you extend the `Person`
158
+ * interface to include a `drivingLicense` boolean field, where the field
159
+ * depends on `age`:
160
+ *
161
+ * ```ts
162
+ * interface Person {
163
+ * age: number;
164
+ * name: string;
165
+ * drivingLicense: boolean;
166
+ * }
167
+ *
168
+ * const personGen = gs.composite<Person>((tc) => {
169
+ * const age = tc.draw(gs.integers({ minValue: 0, maxValue: 120 }));
170
+ * const name = tc.draw(gs.text({ minSize: 1, maxSize: 50 }));
171
+ * const drivingLicense = age >= 18 ? tc.draw(gs.booleans()) : false;
172
+ * return { age, name, drivingLicense };
173
+ * });
174
+ * ```
175
+ *
176
+ * ## Debug your failing test cases
177
+ *
178
+ * Use the {@link TestCase.note | note} method to attach debug information:
179
+ *
180
+ * ```ts
181
+ * test(
182
+ * "addition is commutative",
183
+ * hegel.test((tc) => {
184
+ * const x = tc.draw(gs.integers());
185
+ * const y = tc.draw(gs.integers());
186
+ * tc.note(`x + y = ${x + y}, y + x = ${y + x}`);
187
+ * if (x + y !== y + x) {
188
+ * throw new Error("addition is not commutative");
189
+ * }
190
+ * }),
191
+ * );
192
+ * ```
193
+ *
194
+ * Notes only appear when Hegel replays the minimal failing example.
195
+ *
196
+ * ## Change the number of test cases
197
+ *
198
+ * By default Hegel runs 100 test cases. To override this, pass a
199
+ * {@link Settings} override as the second argument to {@link test}:
200
+ *
201
+ * ```ts
202
+ * test(
203
+ * "integers many",
204
+ * hegel.test(
205
+ * (tc) => {
206
+ * const n = tc.draw(gs.integers());
207
+ * if (n !== n) {
208
+ * throw new Error("integer was not equal to itself");
209
+ * }
210
+ * },
211
+ * { testCases: 500 },
212
+ * ),
213
+ * );
214
+ * ```
215
+ *
216
+ * ## Learning more
217
+ *
218
+ * - Browse the `@hegeldev/hegel/generators` module for the full list of
219
+ * available generators.
220
+ * - See {@link Settings} for more configuration settings to customize how
221
+ * your test runs.
6
222
  *
7
223
  * @packageDocumentation
8
224
  */
9
- export { TestCase, Collection, Labels, StopTestError, AssumeError } from "./testCase.js";
10
- export { Hegel, test, Verbosity, HealthCheck, Database, defaultSettings, ServerDataSource, runTestCase, } from "./runner.js";
11
- export { Connection, Stream } from "./connection.js";
12
- export { HegelSession, HEGEL_SERVER_VERSION } from "./session.js";
225
+ export * as generators from "./generators/index.js";
226
+ export { TestCase } from "./testCase.js";
227
+ export { test, testAsync, Verbosity, HealthCheck, Database } from "./runner.js";
13
228
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEzF,OAAO,EACL,KAAK,EACL,IAAI,EACJ,SAAS,EACT,WAAW,EACX,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,WAAW,GACZ,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+NG;AAEH,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC"}
package/dist/runner.d.ts CHANGED
@@ -66,6 +66,7 @@ export type TestCaseResult = {
66
66
  status: "interesting";
67
67
  error: unknown;
68
68
  };
69
+ export declare function runTestCaseAsync(dataSource: DataSource, testFn: (tc: TestCase) => void | Promise<void>, isFinal: boolean): Promise<TestCaseResult>;
69
70
  export declare function runTestCase(dataSource: DataSource, testFn: (tc: TestCase) => void, isFinal: boolean): TestCaseResult;
70
71
  export interface TestLocation {
71
72
  function: string;
@@ -76,27 +77,50 @@ export interface TestLocation {
76
77
  export declare class Hegel {
77
78
  private testFn;
78
79
  private _settings;
79
- private _databaseKey;
80
80
  private _testLocation;
81
- constructor(testFn: (tc: TestCase) => void);
81
+ constructor(testFn: (tc: TestCase) => void | Promise<void>);
82
82
  /** Override default settings. Returns this for chaining. */
83
83
  settings(s: Partial<Settings>): this;
84
- /** Set the database key for persisting failing examples across runs. */
85
- databaseKey(key: string): this;
86
84
  /** Set the test location for Antithesis integration. */
87
85
  testLocation(location: TestLocation): this;
88
86
  /**
89
- * Execute the property-based test.
90
- *
91
- * Connects to the hegel server (spawning it on first use), runs the
92
- * configured number of test cases, and throws if any test case fails.
93
- * On failure, the failing input is shrunk to a minimal example and
94
- * replayed with draw output printed to stderr.
87
+ * Generator that drives the wire protocol but yields a `ServerDataSource`
88
+ * (plus an `isFinal` flag) each time a test case needs to be executed.
89
+ * The driver ({@link run} or {@link runSync}) calls the user's test body
90
+ * and resumes the generator with the resulting {@link TestCaseResult}.
91
+ * This factoring lets the sync and async drivers share one implementation
92
+ * of the protocol loop.
95
93
  */
96
- run(): void;
94
+ private runSteps;
95
+ run(): Promise<void>;
96
+ runSync(): void;
97
97
  }
98
98
  /**
99
- * Wrap a property-based test body into a function suitable for a test runner.
99
+ * Run a property-based test.
100
+ *
101
+ * If your property is async, see {@link testAsync} instead.
102
+ *
103
+ * @example
104
+ * ```ts
105
+ * import { test } from 'vitest';
106
+ * import * as hegel from 'hegel';
107
+ * import * as gs from 'hegel/generators';
108
+ *
109
+ * test('addition is commutative', () =>
110
+ * hegel.test((tc) => {
111
+ * const x = tc.draw(gs.integers());
112
+ * const y = tc.draw(gs.integers());
113
+ * expect(x + y).toBe(y + x);
114
+ * }),
115
+ * );
116
+ * ```
117
+ */
118
+ export declare function test(testFn: (tc: TestCase) => void, settings?: Partial<Settings>): void;
119
+ /**
120
+ * Run a property-based test with an asynchronous test body.
121
+ *
122
+ * Returns a `Promise<void>` that resolves when the test completes and
123
+ * rejects if any test case fails.
100
124
  *
101
125
  * @example
102
126
  * ```ts
@@ -104,12 +128,14 @@ export declare class Hegel {
104
128
  * import * as hegel from 'hegel';
105
129
  * import * as gs from 'hegel/generators';
106
130
  *
107
- * test('addition is commutative', hegel.test((tc) => {
108
- * const x = tc.draw(gs.integers());
109
- * const y = tc.draw(gs.integers());
110
- * expect(x + y).toBe(y + x);
111
- * }));
131
+ * test('my async test', () =>
132
+ * hegel.testAsync(async (tc) => {
133
+ * const x = tc.draw(gs.integers());
134
+ * const result = await someAsyncOperation(x);
135
+ * expect(result).toEqual(expected(x));
136
+ * }),
137
+ * );
112
138
  * ```
113
139
  */
114
- export declare function test(testFn: (tc: TestCase) => void, settings?: Partial<Settings>): () => void;
140
+ export declare function testAsync(testFn: (tc: TestCase) => void | Promise<void>, settings?: Partial<Settings>): Promise<void>;
115
141
  //# sourceMappingURL=runner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
package/dist/runner.js CHANGED
@@ -63,9 +63,6 @@ export function defaultSettings() {
63
63
  // ---------------------------------------------------------------------------
64
64
  // ServerDataSource
65
65
  // ---------------------------------------------------------------------------
66
- function isRecord(value) {
67
- return value !== null && typeof value === "object" && !Array.isArray(value);
68
- }
69
66
  /**
70
67
  * DataSource implementation that communicates with the hegel server
71
68
  * over a multiplexed stream connection.
@@ -89,14 +86,8 @@ export class ServerDataSource {
89
86
  const id = this.stream.sendRequest(encoded);
90
87
  const responseBytes = this.stream.receiveReply(id);
91
88
  const response = decode(responseBytes);
92
- /* v8 ignore start: server always returns CBOR maps */
93
- if (!isRecord(response))
94
- return response;
95
- /* v8 ignore stop */
96
89
  if ("error" in response) {
97
- /* v8 ignore start: server always sends type field */
98
- const errorType = String(response["type"] ?? "");
99
- /* v8 ignore stop */
90
+ const errorType = response["type"];
100
91
  const errorMsg = JSON.stringify(response["error"]);
101
92
  if (errorMsg.includes("overflow") ||
102
93
  errorMsg.includes("StopTest") ||
@@ -120,12 +111,7 @@ export class ServerDataSource {
120
111
  /* v8 ignore stop */
121
112
  throw new Error(`Server error (${errorType}): ${errorMsg}`);
122
113
  }
123
- /* v8 ignore start: server always wraps responses in {result: ...} */
124
- if ("result" in response) {
125
- return response["result"];
126
- }
127
- return response;
128
- /* v8 ignore stop */
114
+ return response["result"];
129
115
  }
130
116
  generate(schema) {
131
117
  return this.sendRequest("generate", { schema });
@@ -141,22 +127,12 @@ export class ServerDataSource {
141
127
  if (maxSize !== undefined) {
142
128
  payload["max_size"] = maxSize;
143
129
  }
144
- const result = this.sendRequest("new_collection", payload);
145
- /* v8 ignore start: server always returns integer for new_collection */
146
- if (typeof result !== "number")
147
- throw new Error(`Expected integer from new_collection, got ${typeof result}`);
148
- /* v8 ignore stop */
149
- return result;
130
+ return this.sendRequest("new_collection", payload);
150
131
  }
151
132
  collectionMore(collectionId) {
152
- const result = this.sendRequest("collection_more", {
133
+ return this.sendRequest("collection_more", {
153
134
  collection_id: collectionId,
154
135
  });
155
- /* v8 ignore start: server always returns boolean for collection_more */
156
- if (typeof result !== "boolean")
157
- throw new Error(`Expected boolean from collection_more, got ${typeof result}`);
158
- /* v8 ignore stop */
159
- return result;
160
136
  }
161
137
  collectionReject(collectionId, why) {
162
138
  const payload = {
@@ -203,6 +179,40 @@ function extractOrigin(error) {
203
179
  return null;
204
180
  /* v8 ignore stop */
205
181
  }
182
+ function classifyResult(e, isFinal) {
183
+ if (e instanceof AssumeError)
184
+ return { result: { status: "invalid" }, origin: null };
185
+ if (e instanceof StopTestError)
186
+ return { result: { status: "invalid" }, origin: null };
187
+ if (isFinal) {
188
+ const msg = e instanceof Error ? e.message : String(e);
189
+ console.error(`\n${msg}`);
190
+ if (e instanceof Error && e.stack) {
191
+ console.error(e.stack);
192
+ }
193
+ }
194
+ return { result: { status: "interesting", error: e }, origin: extractOrigin(e) };
195
+ }
196
+ function finalizeTestCase(tc, dataSource, result, origin) {
197
+ if (tc.testAborted)
198
+ return;
199
+ const status = result.status === "valid" ? "VALID" : result.status === "invalid" ? "INVALID" : "INTERESTING";
200
+ dataSource.markComplete(status, origin);
201
+ }
202
+ export async function runTestCaseAsync(dataSource, testFn, isFinal) {
203
+ const tc = new TestCase(dataSource, isFinal);
204
+ let result;
205
+ let origin = null;
206
+ try {
207
+ await testFn(tc);
208
+ result = { status: "valid" };
209
+ }
210
+ catch (e) {
211
+ ({ result, origin } = classifyResult(e, isFinal));
212
+ }
213
+ finalizeTestCase(tc, dataSource, result, origin);
214
+ return result;
215
+ }
206
216
  export function runTestCase(dataSource, testFn, isFinal) {
207
217
  const tc = new TestCase(dataSource, isFinal);
208
218
  let result;
@@ -212,29 +222,9 @@ export function runTestCase(dataSource, testFn, isFinal) {
212
222
  result = { status: "valid" };
213
223
  }
214
224
  catch (e) {
215
- if (e instanceof AssumeError) {
216
- result = { status: "invalid" };
217
- }
218
- else if (e instanceof StopTestError) {
219
- result = { status: "invalid" };
220
- }
221
- else {
222
- result = { status: "interesting", error: e };
223
- origin = extractOrigin(e);
224
- if (isFinal) {
225
- const msg = e instanceof Error ? e.message : String(e);
226
- console.error(`\n${msg}`);
227
- if (e instanceof Error && e.stack) {
228
- console.error(e.stack);
229
- }
230
- }
231
- }
232
- }
233
- // Send mark_complete unless test was aborted (server already closed stream)
234
- if (!tc.testAborted) {
235
- const status = result.status === "valid" ? "VALID" : result.status === "invalid" ? "INVALID" : "INTERESTING";
236
- dataSource.markComplete(status, origin);
225
+ ({ result, origin } = classifyResult(e, isFinal));
237
226
  }
227
+ finalizeTestCase(tc, dataSource, result, origin);
238
228
  return result;
239
229
  }
240
230
  /* v8 ignore start: only runs inside Antithesis */
@@ -285,7 +275,6 @@ function emitAntithesisAssertion(location, passed) {
285
275
  export class Hegel {
286
276
  testFn;
287
277
  _settings;
288
- _databaseKey = null;
289
278
  _testLocation = null;
290
279
  constructor(testFn) {
291
280
  this.testFn = testFn;
@@ -296,11 +285,6 @@ export class Hegel {
296
285
  Object.assign(this._settings, s);
297
286
  return this;
298
287
  }
299
- /** Set the database key for persisting failing examples across runs. */
300
- databaseKey(key) {
301
- this._databaseKey = key;
302
- return this;
303
- }
304
288
  /** Set the test location for Antithesis integration. */
305
289
  /* v8 ignore start: only used inside Antithesis */
306
290
  testLocation(location) {
@@ -309,29 +293,26 @@ export class Hegel {
309
293
  }
310
294
  /* v8 ignore stop */
311
295
  /**
312
- * Execute the property-based test.
313
- *
314
- * Connects to the hegel server (spawning it on first use), runs the
315
- * configured number of test cases, and throws if any test case fails.
316
- * On failure, the failing input is shrunk to a minimal example and
317
- * replayed with draw output printed to stderr.
296
+ * Generator that drives the wire protocol but yields a `ServerDataSource`
297
+ * (plus an `isFinal` flag) each time a test case needs to be executed.
298
+ * The driver ({@link run} or {@link runSync}) calls the user's test body
299
+ * and resumes the generator with the resulting {@link TestCaseResult}.
300
+ * This factoring lets the sync and async drivers share one implementation
301
+ * of the protocol loop.
318
302
  */
319
- run() {
303
+ *runSteps() {
320
304
  const session = HegelSession.get();
321
305
  const connection = session.connection;
322
306
  const testStream = connection.newStream();
323
307
  // Build run_test message
324
308
  const suppressNames = this._settings.suppressHealthCheck.map((c) => c);
325
- const databaseKeyValue = this._databaseKey !== null ? Buffer.from(this._databaseKey, "utf-8") : null;
326
309
  const runTestMsg = {
327
310
  command: "run_test",
328
311
  test_cases: this._settings.testCases,
329
312
  seed: this._settings.seed,
330
313
  stream_id: testStream.streamId,
331
- database_key: databaseKeyValue,
332
314
  derandomize: this._settings.derandomize,
333
315
  };
334
- // Database field
335
316
  if (this._settings.database.kind === "disabled") {
336
317
  runTestMsg["database"] = null;
337
318
  }
@@ -358,8 +339,7 @@ export class Hegel {
358
339
  // Ack BEFORE running the test
359
340
  testStream.writeReply(eventId, ackNull);
360
341
  const ds = new ServerDataSource(connection, testCaseStream);
361
- runTestCase(ds, this.testFn, false);
362
- // Track interesting cases (server uses this for final replay decisions)
342
+ yield { ds, isFinal: false };
363
343
  }
364
344
  else {
365
345
  /* v8 ignore start: server only sends test_case and test_done events */
@@ -369,9 +349,7 @@ export class Hegel {
369
349
  /* v8 ignore stop */
370
350
  const ackTrue = encode({ result: true });
371
351
  testStream.writeReply(eventId, ackTrue);
372
- /* v8 ignore start: server always sends results object */
373
- resultData = event["results"] ?? {};
374
- /* v8 ignore stop */
352
+ resultData = event["results"];
375
353
  break;
376
354
  }
377
355
  }
@@ -387,9 +365,7 @@ export class Hegel {
387
365
  if (resultData["flaky"]) {
388
366
  throw new Error(`Flaky test detected: ${resultData["flaky"]}`);
389
367
  }
390
- /* v8 ignore start: server always sends interesting_test_cases */
391
- const nInteresting = resultData["interesting_test_cases"] ?? 0;
392
- /* v8 ignore stop */
368
+ const nInteresting = resultData["interesting_test_cases"];
393
369
  // Final replays for interesting test cases
394
370
  let finalResult = null;
395
371
  for (let i = 0; i < nInteresting; i++) {
@@ -399,7 +375,7 @@ export class Hegel {
399
375
  const testCaseStream = connection.connectStream(streamId);
400
376
  testStream.writeReply(eventId, ackNull);
401
377
  const ds = new ServerDataSource(connection, testCaseStream);
402
- const result = runTestCase(ds, this.testFn, true);
378
+ const result = yield { ds, isFinal: true };
403
379
  /* v8 ignore start: replay cases are always interesting */
404
380
  if (result.status === "interesting") {
405
381
  finalResult = result;
@@ -407,9 +383,7 @@ export class Hegel {
407
383
  /* v8 ignore stop */
408
384
  }
409
385
  testStream.close();
410
- /* v8 ignore start: server always sends passed field */
411
- const passed = resultData["passed"] ?? true;
412
- /* v8 ignore stop */
386
+ const passed = resultData["passed"];
413
387
  const testFailed = !passed;
414
388
  /* v8 ignore start: only runs inside Antithesis */
415
389
  if (isRunningInAntithesis() && this._testLocation) {
@@ -427,9 +401,29 @@ export class Hegel {
427
401
  throw new Error(`Property test failed: ${msg}`);
428
402
  }
429
403
  }
404
+ async run() {
405
+ const gen = this.runSteps();
406
+ let next = gen.next();
407
+ while (!next.done) {
408
+ const { ds, isFinal } = next.value;
409
+ const result = await runTestCaseAsync(ds, this.testFn, isFinal);
410
+ next = gen.next(result);
411
+ }
412
+ }
413
+ runSync() {
414
+ const gen = this.runSteps();
415
+ let next = gen.next();
416
+ while (!next.done) {
417
+ const { ds, isFinal } = next.value;
418
+ const result = runTestCase(ds, this.testFn, isFinal);
419
+ next = gen.next(result);
420
+ }
421
+ }
430
422
  }
431
423
  /**
432
- * Wrap a property-based test body into a function suitable for a test runner.
424
+ * Run a property-based test.
425
+ *
426
+ * If your property is async, see {@link testAsync} instead.
433
427
  *
434
428
  * @example
435
429
  * ```ts
@@ -437,19 +431,49 @@ export class Hegel {
437
431
  * import * as hegel from 'hegel';
438
432
  * import * as gs from 'hegel/generators';
439
433
  *
440
- * test('addition is commutative', hegel.test((tc) => {
441
- * const x = tc.draw(gs.integers());
442
- * const y = tc.draw(gs.integers());
443
- * expect(x + y).toBe(y + x);
444
- * }));
434
+ * test('addition is commutative', () =>
435
+ * hegel.test((tc) => {
436
+ * const x = tc.draw(gs.integers());
437
+ * const y = tc.draw(gs.integers());
438
+ * expect(x + y).toBe(y + x);
439
+ * }),
440
+ * );
445
441
  * ```
446
442
  */
447
443
  export function test(testFn, settings) {
448
- return () => {
449
- const h = new Hegel(testFn);
450
- if (settings)
451
- h.settings(settings);
452
- h.run();
453
- };
444
+ if (testFn.constructor.name === "AsyncFunction") {
445
+ throw new TypeError("hegel.test received an async test body. Use hegel.testAsync instead.");
446
+ }
447
+ const h = new Hegel(testFn);
448
+ if (settings)
449
+ h.settings(settings);
450
+ h.runSync();
451
+ }
452
+ /**
453
+ * Run a property-based test with an asynchronous test body.
454
+ *
455
+ * Returns a `Promise<void>` that resolves when the test completes and
456
+ * rejects if any test case fails.
457
+ *
458
+ * @example
459
+ * ```ts
460
+ * import { test } from 'vitest';
461
+ * import * as hegel from 'hegel';
462
+ * import * as gs from 'hegel/generators';
463
+ *
464
+ * test('my async test', () =>
465
+ * hegel.testAsync(async (tc) => {
466
+ * const x = tc.draw(gs.integers());
467
+ * const result = await someAsyncOperation(x);
468
+ * expect(result).toEqual(expected(x));
469
+ * }),
470
+ * );
471
+ * ```
472
+ */
473
+ export async function testAsync(testFn, settings) {
474
+ const h = new Hegel(testFn);
475
+ if (settings)
476
+ h.settings(settings);
477
+ await h.run();
454
478
  }
455
479
  //# sourceMappingURL=runner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@
6
6
  *
7
7
  * @packageDocumentation
8
8
  */
9
+ import type { Generator } from "./generators/core.js";
9
10
  export declare class StopTestError extends Error {
10
11
  constructor();
11
12
  }
@@ -29,9 +30,6 @@ export declare const Labels: {
29
30
  readonly SAMPLED_FROM: 14;
30
31
  readonly ENUM_VARIANT: 15;
31
32
  };
32
- export interface GeneratorLike<T> {
33
- doDraw(tc: TestCase): T;
34
- }
35
33
  /**
36
34
  * Abstraction over the data backend for a test case.
37
35
  *
@@ -58,17 +56,14 @@ export declare class TestCase {
58
56
  constructor(dataSource: DataSource, isLastRun: boolean);
59
57
  /** @internal */
60
58
  dataSource(): DataSource;
59
+ /** @internal */
61
60
  get isLastRun(): boolean;
61
+ /** @internal */
62
62
  get testAborted(): boolean;
63
63
  /**
64
64
  * Draw a value from a generator.
65
65
  */
66
- draw<T>(generator: GeneratorLike<T>): T;
67
- /**
68
- * Draw a value from a generator without recording it in the output.
69
- * Unlike draw(), this does not print the value during the final replay.
70
- */
71
- drawSilent<T>(generator: GeneratorLike<T>): T;
66
+ draw<T>(generator: Generator<T>): T;
72
67
  /**
73
68
  * Reject the current test case if the condition is false.
74
69
  */
@@ -79,10 +74,12 @@ export declare class TestCase {
79
74
  note(message: string): void;
80
75
  /**
81
76
  * Start a shrinking span with the given label.
77
+ * @internal
82
78
  */
83
79
  startSpan(label: number): void;
84
80
  /**
85
81
  * Stop the current shrinking span.
82
+ * @internal
86
83
  */
87
84
  stopSpan(discard?: boolean): void;
88
85
  }
@@ -1 +1 @@
1
- {"version":3,"file":"testCase.d.ts","sourceRoot":"","sources":["../src/testCase.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,qBAAa,aAAc,SAAQ,KAAK;;CAKvC;AAED,qBAAa,WAAY,SAAQ,KAAK;;CAKrC;AAMD,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;CAgBT,CAAC;AAEX,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,MAAM,CAAC,EAAE,EAAE,QAAQ,GAAG,CAAC,CAAC;CACzB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;IACnD,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzD,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9C,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3D,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1D,WAAW,IAAI,OAAO,CAAC;CACxB;AAED,qBAAa,QAAQ;IACnB,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,SAAS,CAAK;IAEtB,gBAAgB;gBACJ,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO;IAKtD,gBAAgB;IAChB,UAAU,IAAI,UAAU;IAIxB,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;OAEG;IACH,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC;IAWvC;;;OAGG;IACH,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC;IAI7C;;OAEG;IACH,MAAM,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;IAMhC;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAM3B;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAU9B;;OAEG;IACH,QAAQ,CAAC,OAAO,UAAQ,GAAG,IAAI;CAQhC;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAElF;AAED;;;;;GAKG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,QAAQ,CAAS;gBAEb,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAM3D,OAAO,CAAC,iBAAiB;IAOzB;;OAEG;IACH,IAAI,IAAI,OAAO;IAkBf;;OAEG;IACH,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;CAK3B"}
1
+ {"version":3,"file":"testCase.d.ts","sourceRoot":"","sources":["../src/testCase.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtD,qBAAa,aAAc,SAAQ,KAAK;;CAKvC;AAED,qBAAa,WAAY,SAAQ,KAAK;;CAKrC;AAMD,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;CAgBT,CAAC;AAEX;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;IACnD,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzD,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9C,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3D,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1D,WAAW,IAAI,OAAO,CAAC;CACxB;AAED,qBAAa,QAAQ;IACnB,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,SAAS,CAAK;IAEtB,gBAAgB;gBACJ,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO;IAKtD,gBAAgB;IAChB,UAAU,IAAI,UAAU;IAIxB,gBAAgB;IAChB,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,gBAAgB;IAChB,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;OAEG;IACH,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;IAWnC;;OAEG;IACH,MAAM,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;IAMhC;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAM3B;;;OAGG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAU9B;;;OAGG;IACH,QAAQ,CAAC,OAAO,UAAQ,GAAG,IAAI;CAQhC;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAElF;AAED;;;;;GAKG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,QAAQ,CAAS;gBAEb,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAM3D,OAAO,CAAC,iBAAiB;IAOzB;;OAEG;IACH,IAAI,IAAI,OAAO;IAkBf;;OAEG;IACH,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;CAK3B"}
package/dist/testCase.js CHANGED
@@ -53,9 +53,11 @@ export class TestCase {
53
53
  dataSource() {
54
54
  return this._dataSource;
55
55
  }
56
+ /** @internal */
56
57
  get isLastRun() {
57
58
  return this._isLastRun;
58
59
  }
60
+ /** @internal */
59
61
  get testAborted() {
60
62
  return this._dataSource.testAborted();
61
63
  }
@@ -72,13 +74,6 @@ export class TestCase {
72
74
  }
73
75
  return value;
74
76
  }
75
- /**
76
- * Draw a value from a generator without recording it in the output.
77
- * Unlike draw(), this does not print the value during the final replay.
78
- */
79
- drawSilent(generator) {
80
- return generator.doDraw(this);
81
- }
82
77
  /**
83
78
  * Reject the current test case if the condition is false.
84
79
  */
@@ -97,6 +92,7 @@ export class TestCase {
97
92
  }
98
93
  /**
99
94
  * Start a shrinking span with the given label.
95
+ * @internal
100
96
  */
101
97
  startSpan(label) {
102
98
  this.spanDepth++;
@@ -110,6 +106,7 @@ export class TestCase {
110
106
  }
111
107
  /**
112
108
  * Stop the current shrinking span.
109
+ * @internal
113
110
  */
114
111
  stopSpan(discard = false) {
115
112
  this.spanDepth--;
@@ -1 +1 @@
1
- {"version":3,"file":"testCase.js","sourceRoot":"","sources":["../src/testCase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testCase.js","sourceRoot":"","sources":["../src/testCase.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hegeldev/hegel",
3
- "version": "0.1.5",
3
+ "version": "0.2.1",
4
4
  "description": "Property-based testing for TypeScript",
5
5
  "type": "module",
6
6
  "repository": {