@hegeldev/hegel 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +59 -0
- package/dist/binary.d.ts +27 -0
- package/dist/binary.d.ts.map +1 -0
- package/dist/binary.js +50 -0
- package/dist/binary.js.map +1 -0
- package/dist/collections.d.ts +114 -0
- package/dist/collections.d.ts.map +1 -0
- package/dist/collections.js +313 -0
- package/dist/collections.js.map +1 -0
- package/dist/combinators.d.ts +34 -0
- package/dist/combinators.d.ts.map +1 -0
- package/dist/combinators.js +152 -0
- package/dist/combinators.js.map +1 -0
- package/dist/conformance.d.ts +31 -0
- package/dist/conformance.d.ts.map +1 -0
- package/dist/conformance.js +60 -0
- package/dist/conformance.js.map +1 -0
- package/dist/connection.d.ts +82 -0
- package/dist/connection.d.ts.map +1 -0
- package/dist/connection.js +231 -0
- package/dist/connection.js.map +1 -0
- package/dist/crc32.d.ts +13 -0
- package/dist/crc32.d.ts.map +1 -0
- package/dist/crc32.js +30 -0
- package/dist/crc32.js.map +1 -0
- package/dist/derive.d.ts +225 -0
- package/dist/derive.d.ts.map +1 -0
- package/dist/derive.js +296 -0
- package/dist/derive.js.map +1 -0
- package/dist/embedded.d.ts +38 -0
- package/dist/embedded.d.ts.map +1 -0
- package/dist/embedded.js +237 -0
- package/dist/embedded.js.map +1 -0
- package/dist/floats.d.ts +57 -0
- package/dist/floats.d.ts.map +1 -0
- package/dist/floats.js +100 -0
- package/dist/floats.js.map +1 -0
- package/dist/formats.d.ts +62 -0
- package/dist/formats.d.ts.map +1 -0
- package/dist/formats.js +164 -0
- package/dist/formats.js.map +1 -0
- package/dist/generator.d.ts +80 -0
- package/dist/generator.d.ts.map +1 -0
- package/dist/generator.js +128 -0
- package/dist/generator.js.map +1 -0
- package/dist/generators/collections.d.ts +20 -0
- package/dist/generators/collections.d.ts.map +1 -0
- package/dist/generators/collections.js +209 -0
- package/dist/generators/collections.js.map +1 -0
- package/dist/generators/combinators.d.ts +15 -0
- package/dist/generators/combinators.d.ts.map +1 -0
- package/dist/generators/combinators.js +143 -0
- package/dist/generators/combinators.js.map +1 -0
- package/dist/generators/compose.d.ts +27 -0
- package/dist/generators/compose.d.ts.map +1 -0
- package/dist/generators/compose.js +82 -0
- package/dist/generators/compose.js.map +1 -0
- package/dist/generators/core.d.ts +53 -0
- package/dist/generators/core.d.ts.map +1 -0
- package/dist/generators/core.js +134 -0
- package/dist/generators/core.js.map +1 -0
- package/dist/generators/index.d.ts +18 -0
- package/dist/generators/index.d.ts.map +1 -0
- package/dist/generators/index.js +15 -0
- package/dist/generators/index.js.map +1 -0
- package/dist/generators/numeric.d.ts +40 -0
- package/dist/generators/numeric.d.ts.map +1 -0
- package/dist/generators/numeric.js +128 -0
- package/dist/generators/numeric.js.map +1 -0
- package/dist/generators/primitives.d.ts +138 -0
- package/dist/generators/primitives.d.ts.map +1 -0
- package/dist/generators/primitives.js +240 -0
- package/dist/generators/primitives.js.map +1 -0
- package/dist/generators/strings.d.ts +73 -0
- package/dist/generators/strings.d.ts.map +1 -0
- package/dist/generators/strings.js +215 -0
- package/dist/generators/strings.js.map +1 -0
- package/dist/generators/tuples.d.ts +11 -0
- package/dist/generators/tuples.d.ts.map +1 -0
- package/dist/generators/tuples.js +43 -0
- package/dist/generators/tuples.js.map +1 -0
- package/dist/generators.d.ts +408 -0
- package/dist/generators.d.ts.map +1 -0
- package/dist/generators.js +898 -0
- package/dist/generators.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/install.d.ts +6 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +91 -0
- package/dist/install.js.map +1 -0
- package/dist/integers.d.ts +37 -0
- package/dist/integers.d.ts.map +1 -0
- package/dist/integers.js +63 -0
- package/dist/integers.js.map +1 -0
- package/dist/labels.d.ts +21 -0
- package/dist/labels.d.ts.map +1 -0
- package/dist/labels.js +20 -0
- package/dist/labels.js.map +1 -0
- package/dist/objects.d.ts +39 -0
- package/dist/objects.d.ts.map +1 -0
- package/dist/objects.js +98 -0
- package/dist/objects.js.map +1 -0
- package/dist/primitives.d.ts +14 -0
- package/dist/primitives.d.ts.map +1 -0
- package/dist/primitives.js +51 -0
- package/dist/primitives.js.map +1 -0
- package/dist/protocol.d.ts +25 -0
- package/dist/protocol.d.ts.map +1 -0
- package/dist/protocol.js +77 -0
- package/dist/protocol.js.map +1 -0
- package/dist/runner.d.ts +115 -0
- package/dist/runner.d.ts.map +1 -0
- package/dist/runner.js +455 -0
- package/dist/runner.js.map +1 -0
- package/dist/session.d.ts +19 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +157 -0
- package/dist/session.js.map +1 -0
- package/dist/spans.d.ts +23 -0
- package/dist/spans.d.ts.map +1 -0
- package/dist/spans.js +51 -0
- package/dist/spans.js.map +1 -0
- package/dist/strings.d.ts +67 -0
- package/dist/strings.d.ts.map +1 -0
- package/dist/strings.js +107 -0
- package/dist/strings.js.map +1 -0
- package/dist/testCase.d.ts +118 -0
- package/dist/testCase.d.ts.map +1 -0
- package/dist/testCase.js +186 -0
- package/dist/testCase.js.map +1 -0
- package/dist/uv-install.sh +2226 -0
- package/dist/uv.d.ts +20 -0
- package/dist/uv.d.ts.map +1 -0
- package/dist/uv.js +103 -0
- package/dist/uv.js.map +1 -0
- package/dist/wtf8.d.ts +16 -0
- package/dist/wtf8.d.ts.map +1 -0
- package/dist/wtf8.js +52 -0
- package/dist/wtf8.js.map +1 -0
- package/package.json +60 -0
package/dist/testCase.js
ADDED
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TestCase: per-test-case state passed explicitly to test functions.
|
|
3
|
+
*
|
|
4
|
+
* Provides draw(), assume(), note(), span management, and the Collection
|
|
5
|
+
* class for server-managed collection sizing.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
import { inspect } from "node:util";
|
|
10
|
+
export class StopTestError extends Error {
|
|
11
|
+
constructor() {
|
|
12
|
+
super("Server ran out of data (StopTest)");
|
|
13
|
+
this.name = "StopTestError";
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export class AssumeError extends Error {
|
|
17
|
+
constructor() {
|
|
18
|
+
super("Assumption rejected");
|
|
19
|
+
this.name = "AssumeError";
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
// Span labels
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
export const Labels = {
|
|
26
|
+
LIST: 1,
|
|
27
|
+
LIST_ELEMENT: 2,
|
|
28
|
+
SET: 3,
|
|
29
|
+
SET_ELEMENT: 4,
|
|
30
|
+
MAP: 5,
|
|
31
|
+
MAP_ENTRY: 6,
|
|
32
|
+
TUPLE: 7,
|
|
33
|
+
ONE_OF: 8,
|
|
34
|
+
OPTIONAL: 9,
|
|
35
|
+
FIXED_DICT: 10,
|
|
36
|
+
FLAT_MAP: 11,
|
|
37
|
+
FILTER: 12,
|
|
38
|
+
MAPPED: 13,
|
|
39
|
+
SAMPLED_FROM: 14,
|
|
40
|
+
ENUM_VARIANT: 15,
|
|
41
|
+
};
|
|
42
|
+
export class TestCase {
|
|
43
|
+
_dataSource;
|
|
44
|
+
_isLastRun;
|
|
45
|
+
drawCount = 0;
|
|
46
|
+
spanDepth = 0;
|
|
47
|
+
/** @internal */
|
|
48
|
+
constructor(dataSource, isLastRun) {
|
|
49
|
+
this._dataSource = dataSource;
|
|
50
|
+
this._isLastRun = isLastRun;
|
|
51
|
+
}
|
|
52
|
+
/** @internal */
|
|
53
|
+
dataSource() {
|
|
54
|
+
return this._dataSource;
|
|
55
|
+
}
|
|
56
|
+
get isLastRun() {
|
|
57
|
+
return this._isLastRun;
|
|
58
|
+
}
|
|
59
|
+
get testAborted() {
|
|
60
|
+
return this._dataSource.testAborted();
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Draw a value from a generator.
|
|
64
|
+
*/
|
|
65
|
+
draw(generator) {
|
|
66
|
+
const value = generator.doDraw(this);
|
|
67
|
+
if (this.spanDepth === 0) {
|
|
68
|
+
this.drawCount++;
|
|
69
|
+
if (this._isLastRun) {
|
|
70
|
+
console.error(`var draw_${this.drawCount} = ${inspect(value, { depth: null })};`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return value;
|
|
74
|
+
}
|
|
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
|
+
/**
|
|
83
|
+
* Reject the current test case if the condition is false.
|
|
84
|
+
*/
|
|
85
|
+
assume(condition) {
|
|
86
|
+
if (!condition) {
|
|
87
|
+
throw new AssumeError();
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Note a message that will be displayed during the final replay.
|
|
92
|
+
*/
|
|
93
|
+
note(message) {
|
|
94
|
+
if (this._isLastRun) {
|
|
95
|
+
console.error(message);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Start a shrinking span with the given label.
|
|
100
|
+
*/
|
|
101
|
+
startSpan(label) {
|
|
102
|
+
this.spanDepth++;
|
|
103
|
+
try {
|
|
104
|
+
this._dataSource.startSpan(label);
|
|
105
|
+
}
|
|
106
|
+
catch (e) {
|
|
107
|
+
this.spanDepth--;
|
|
108
|
+
throw e;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Stop the current shrinking span.
|
|
113
|
+
*/
|
|
114
|
+
stopSpan(discard = false) {
|
|
115
|
+
this.spanDepth--;
|
|
116
|
+
try {
|
|
117
|
+
this._dataSource.stopSpan(discard);
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
// Ignore errors during stop_span (matches Rust: `let _ = ...`)
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Send a generate command to the data source and return the raw result.
|
|
126
|
+
* Throws StopTestError if the data source runs out of data.
|
|
127
|
+
* @internal
|
|
128
|
+
*/
|
|
129
|
+
export function generateRaw(tc, schema) {
|
|
130
|
+
return tc.dataSource().generate(schema);
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Server-managed collection sizing.
|
|
134
|
+
*
|
|
135
|
+
* The server determines how many elements to generate based on
|
|
136
|
+
* min_size, max_size, and shrinking state.
|
|
137
|
+
*/
|
|
138
|
+
export class Collection {
|
|
139
|
+
dataSource;
|
|
140
|
+
minSize;
|
|
141
|
+
maxSize;
|
|
142
|
+
collectionId = null;
|
|
143
|
+
finished = false;
|
|
144
|
+
constructor(tc, minSize, maxSize) {
|
|
145
|
+
this.dataSource = tc.dataSource();
|
|
146
|
+
this.minSize = minSize;
|
|
147
|
+
this.maxSize = maxSize;
|
|
148
|
+
}
|
|
149
|
+
ensureInitialized() {
|
|
150
|
+
if (this.collectionId === null) {
|
|
151
|
+
this.collectionId = this.dataSource.newCollection(this.minSize, this.maxSize);
|
|
152
|
+
}
|
|
153
|
+
return this.collectionId;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Ask the server whether to produce another element.
|
|
157
|
+
*/
|
|
158
|
+
more() {
|
|
159
|
+
if (this.finished) {
|
|
160
|
+
return false;
|
|
161
|
+
}
|
|
162
|
+
const collectionId = this.ensureInitialized();
|
|
163
|
+
let result;
|
|
164
|
+
try {
|
|
165
|
+
result = this.dataSource.collectionMore(collectionId);
|
|
166
|
+
}
|
|
167
|
+
catch (e) {
|
|
168
|
+
this.finished = true;
|
|
169
|
+
throw e;
|
|
170
|
+
}
|
|
171
|
+
if (!result) {
|
|
172
|
+
this.finished = true;
|
|
173
|
+
}
|
|
174
|
+
return result;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Reject the last element (don't count towards size budget).
|
|
178
|
+
*/
|
|
179
|
+
reject(why) {
|
|
180
|
+
if (this.finished)
|
|
181
|
+
return;
|
|
182
|
+
const collectionId = this.ensureInitialized();
|
|
183
|
+
this.dataSource.collectionReject(collectionId, why);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=testCase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testCase.js","sourceRoot":"","sources":["../src/testCase.ts"],"names":[],"mappings":"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"}
|