@fncts/test 0.0.32 → 0.0.33

Sign up to get free protection for your applications and to get access to all the features.
Files changed (71) hide show
  1. package/_cjs/api.cjs +5 -5
  2. package/_cjs/api.cjs.map +1 -1
  3. package/_cjs/control/AbstractRunnableSpec.cjs +1 -1
  4. package/_cjs/control/AbstractRunnableSpec.cjs.map +1 -1
  5. package/_cjs/control/Assertion/api.cjs +6 -5
  6. package/_cjs/control/Assertion/api.cjs.map +1 -1
  7. package/_cjs/control/DefaultTestReporter/render.cjs +1 -1
  8. package/_cjs/control/DefaultTestReporter/render.cjs.map +1 -1
  9. package/_cjs/control/Gen/api.cjs +216 -78
  10. package/_cjs/control/Gen/api.cjs.map +1 -1
  11. package/_cjs/control/Live/definition.cjs +9 -8
  12. package/_cjs/control/Live/definition.cjs.map +1 -1
  13. package/_cjs/control/Sample/api.cjs +16 -16
  14. package/_cjs/control/Sample/api.cjs.map +1 -1
  15. package/_cjs/control/Spec/api.cjs +7 -7
  16. package/_cjs/control/Spec/api.cjs.map +1 -1
  17. package/_cjs/control/TestAnnotationRenderer/api.cjs +6 -5
  18. package/_cjs/control/TestAnnotationRenderer/api.cjs.map +1 -1
  19. package/_cjs/control/TestAspect/api.cjs +2 -3
  20. package/_cjs/control/TestAspect/api.cjs.map +1 -1
  21. package/_cjs/control/TestClock/definition.cjs +6 -6
  22. package/_cjs/control/TestClock/definition.cjs.map +1 -1
  23. package/_cjs/data/AssertionResult.cjs +3 -2
  24. package/_cjs/data/AssertionResult.cjs.map +1 -1
  25. package/_cjs/data/AssertionValue/definition.cjs +2 -1
  26. package/_cjs/data/AssertionValue/definition.cjs.map +1 -1
  27. package/_cjs/data/FreeBooleanAlgebra/api.cjs +5 -4
  28. package/_cjs/data/FreeBooleanAlgebra/api.cjs.map +1 -1
  29. package/_cjs/data/TestAnnotation/api.cjs +3 -2
  30. package/_cjs/data/TestAnnotation/api.cjs.map +1 -1
  31. package/_cjs/demo.cjs +1 -1
  32. package/_mjs/api.mjs +5 -5
  33. package/_mjs/api.mjs.map +1 -1
  34. package/_mjs/control/AbstractRunnableSpec.mjs +1 -1
  35. package/_mjs/control/AbstractRunnableSpec.mjs.map +1 -1
  36. package/_mjs/control/Assertion/api.mjs +6 -5
  37. package/_mjs/control/Assertion/api.mjs.map +1 -1
  38. package/_mjs/control/DefaultTestReporter/render.mjs +1 -1
  39. package/_mjs/control/DefaultTestReporter/render.mjs.map +1 -1
  40. package/_mjs/control/Gen/api.mjs +198 -71
  41. package/_mjs/control/Gen/api.mjs.map +1 -1
  42. package/_mjs/control/Live/definition.mjs +8 -7
  43. package/_mjs/control/Live/definition.mjs.map +1 -1
  44. package/_mjs/control/Sample/api.mjs +16 -16
  45. package/_mjs/control/Sample/api.mjs.map +1 -1
  46. package/_mjs/control/Spec/api.mjs +7 -7
  47. package/_mjs/control/Spec/api.mjs.map +1 -1
  48. package/_mjs/control/TestAnnotationRenderer/api.mjs +6 -5
  49. package/_mjs/control/TestAnnotationRenderer/api.mjs.map +1 -1
  50. package/_mjs/control/TestAspect/api.mjs +2 -3
  51. package/_mjs/control/TestAspect/api.mjs.map +1 -1
  52. package/_mjs/control/TestClock/definition.mjs +6 -6
  53. package/_mjs/control/TestClock/definition.mjs.map +1 -1
  54. package/_mjs/data/AssertionResult.mjs +3 -2
  55. package/_mjs/data/AssertionResult.mjs.map +1 -1
  56. package/_mjs/data/AssertionValue/definition.mjs +2 -1
  57. package/_mjs/data/AssertionValue/definition.mjs.map +1 -1
  58. package/_mjs/data/FreeBooleanAlgebra/api.mjs +5 -4
  59. package/_mjs/data/FreeBooleanAlgebra/api.mjs.map +1 -1
  60. package/_mjs/data/TestAnnotation/api.mjs +3 -2
  61. package/_mjs/data/TestAnnotation/api.mjs.map +1 -1
  62. package/_mjs/demo.mjs +1 -1
  63. package/_src/api.ts +1 -1
  64. package/_src/control/Gen/api.ts +166 -1
  65. package/_src/control/Live/definition.ts +8 -9
  66. package/_src/control/TestAspect/api.ts +2 -2
  67. package/_src/demo.ts +1 -1
  68. package/api.d.ts +1 -1
  69. package/control/Gen/api.d.ts +46 -1
  70. package/control/Live/definition.d.ts +6 -2
  71. package/package.json +3 -3
@@ -1,23 +1,26 @@
1
1
  const fileName_1 = "(@fncts/test) src/control/Gen/api.ts";
2
- import * as tsplus_module_1 from "@fncts/test/control/Sized/api";
3
- import * as tsplus_module_2 from "@fncts/test/control/Sample/api";
4
- import * as tsplus_module_3 from "@fncts/io/Random/api";
5
- import * as tsplus_module_4 from "@fncts/io/IO/api";
6
- import * as tsplus_module_5 from "@fncts/base/collection/immutable/Conc/definition";
7
- import * as tsplus_module_6 from "@fncts/base/data/Maybe/constructors";
8
- import * as tsplus_module_7 from "@fncts/io/Stream/api";
9
- import * as tsplus_module_8 from "@fncts/base/collection/immutable/Conc/api/empty";
10
- import * as tsplus_module_9 from "@fncts/base/collection/immutable/Conc/api";
11
- import * as tsplus_module_10 from "@fncts/base/collection/immutable/Conc/api/replicate";
12
- import * as tsplus_module_11 from "@fncts/base/data/Maybe/api";
13
- import * as tsplus_module_12 from "@fncts/base/data/Maybe/destructors";
14
- import * as tsplus_module_13 from "@fncts/base/collection/compat/Array/api";
15
- import * as tsplus_module_14 from "@fncts/base/collection/immutable/Conc/constructors";
16
- import * as tsplus_module_15 from "@fncts/base/data/Equatable/api";
17
- import * as tsplus_module_16 from "@fncts/base/data/Eq/definition";
2
+ import * as tsplus_module_1 from "@fncts/base/data/Equatable/api";
3
+ import * as tsplus_module_2 from "@fncts/base/data/Eq/definition";
4
+ import * as tsplus_module_3 from "@fncts/test/control/Sized/api";
5
+ import * as tsplus_module_4 from "@fncts/test/control/Sample/api";
6
+ import * as tsplus_module_5 from "@fncts/io/Random/api";
7
+ import * as tsplus_module_6 from "@fncts/io/IO/api";
8
+ import * as tsplus_module_7 from "@fncts/base/collection/immutable/Conc/definition";
9
+ import * as tsplus_module_8 from "@fncts/base/data/Maybe/constructors";
10
+ import * as tsplus_module_9 from "@fncts/io/Stream/api";
11
+ import * as tsplus_module_10 from "@fncts/base/collection/immutable/Conc/api/empty";
12
+ import * as tsplus_module_11 from "@fncts/base/collection/immutable/Conc/api";
13
+ import * as tsplus_module_12 from "@fncts/base/collection/immutable/Conc/api/replicate";
14
+ import * as tsplus_module_13 from "@fncts/base/data/Maybe/api";
15
+ import * as tsplus_module_14 from "@fncts/base/data/Maybe/destructors";
16
+ import * as tsplus_module_15 from "@fncts/base/collection/compat/Array/api";
17
+ import * as tsplus_module_16 from "@fncts/base/collection/immutable/Conc/constructors";
18
18
  import * as tsplus_module_17 from "@fncts/base/data/number/instances";
19
19
  import * as tsplus_module_18 from "@fncts/base/collection/immutable/SortedMap/api";
20
20
  import * as tsplus_module_19 from "@fncts/base/data/function/api";
21
+ import * as tsplus_module_20 from "@fncts/base/data/string/instances";
22
+ import * as tsplus_module_21 from "@fncts/base/data/Eq/api";
23
+ export const array = array_1;
21
24
  export const arrayWith = arrayWith_1;
22
25
  export const arrayN = arrayN_1;
23
26
  export const arrayInt64 = arrayInt64_1;
@@ -37,6 +40,7 @@ export const fromIOSample = fromIOSample_1;
37
40
  export const floatWith = floatWith_1;
38
41
  export const intWith = intWith_1;
39
42
  export const map = map_1;
43
+ export const memo = memo_1;
40
44
  export const oneOf = oneOf_1;
41
45
  export const reshrink = reshrink_1;
42
46
  export const small = small_1;
@@ -48,21 +52,73 @@ export const uniqueConcN = uniqueConcN_1;
48
52
  export const unwrap = unwrap_1;
49
53
  export const weighted = weighted_1;
50
54
  export const zipWith = zipWith_1;
55
+ export const tuple = tuple_1;
56
+ export const record = record_1;
57
+ export const date = date_1;
58
+ export const int8Array = int8Array_1;
59
+ export const int16Array = int16Array_1;
60
+ export const int32Array = int32Array_1;
61
+ export const uint8Array = uint8Array_1;
62
+ export const uint16Array = uint16Array_1;
63
+ export const uint32Array = uint32Array_1;
51
64
  import { IllegalArgumentError, NoSuchElementError } from "@fncts/base/data/exceptions";
52
65
  import { identity } from "@fncts/base/data/function";
53
66
  import { add64, clamp, computeArrayInt64GenerateRange, indexToDouble, indexToFloat, isStrictlyPositive64, isStrictlySmaller64, MAX_VALUE_32, safeDoubleToIndex, safeFloatToIndex, substract64, Unit64 } from "../../util/math.mjs";
54
67
  import { Sample } from "../Sample.mjs";
55
68
  import { Gen } from "./definition.mjs";
56
69
  const gapSize = 0xdfff + 1 - 0xd800;
70
+ /**
71
+ * @tsplus static fncts.test.GenOps anything
72
+ */
73
+ export function anything(constraints = {}) {
74
+ const key = constraints.key ?? alphaNumericString_1;
75
+ const maxDepth = constraints.maxDepth ?? 2;
76
+ const maxKeys = constraints.maxKeys ?? 5;
77
+ const values = constraints.values ?? [boolean_1, alphaNumericString_1, double_1, int_1, oneOf_1(alphaNumericString_1, constant_1(null), constant_1(undefined))];
78
+ function mapOf(key, value) {
79
+ return map_1(pairs => new Map(pairs))(uniqueConc_1({
80
+ eq: tsplus_module_2.makeEq({
81
+ equals: ([k1]) => ([k]) => tsplus_module_1.strictEquals(k, k1)
82
+ }),
83
+ maxLength: maxKeys
84
+ })(tuple_1(key, value)));
85
+ }
86
+ function setOf(value) {
87
+ return map_1(values => new Set(values))(uniqueConc_1({
88
+ eq: tsplus_module_2.makeEq({
89
+ equals: v1 => v => tsplus_module_1.strictEquals(v, v1)
90
+ }),
91
+ maxLength: maxKeys
92
+ })(value));
93
+ }
94
+ const base = oneOf_1(...values);
95
+ const arrayBase = oneOf_1(...values.map(gen => arrayWith_1({
96
+ maxLength: maxKeys
97
+ })(gen)));
98
+ const arrayGen = memo_1(n => oneOf_1(arrayBase, arrayWith_1({
99
+ maxLength: maxKeys
100
+ })(gen(n))));
101
+ const objectBase = oneOf_1(...values.map(gen => record_1(key, gen)));
102
+ const objectGen = memo_1(n => oneOf_1(objectBase, record_1(key, gen(n))));
103
+ const setBase = oneOf_1(...values.map(setOf));
104
+ const setGen = memo_1(n => oneOf_1(setBase, setOf(gen(n))));
105
+ const mapBase = oneOf_1(...values.map(value => mapOf(key, value)));
106
+ const mapGen = memo_1(n => oneOf_1(mapBase, mapOf(oneOf_1(key, gen(n)), gen(n))));
107
+ const gen = memo_1(n => {
108
+ if (n <= 0) return base;
109
+ return oneOf_1(base, arrayGen(), objectGen(), ...(constraints.withDate ? [date_1()] : []), ...(constraints.withSet ? [setGen()] : []), ...(constraints.withMap ? [mapGen()] : []), ...(constraints.withTypedArray ? [oneOf_1(int8Array_1(), uint8Array_1(), int16Array_1(), uint16Array_1(), int32Array_1(), uint32Array_1())] : []));
110
+ });
111
+ return gen(maxDepth);
112
+ }
57
113
  /**
58
114
  * @tsplus static fncts.test.GenOps size
59
115
  */
60
- const size_1 = /*#__PURE__*/fromIO_1(tsplus_module_1.size);
116
+ const size_1 = /*#__PURE__*/fromIO_1(tsplus_module_3.size);
61
117
  export const size = size_1;
62
118
  /**
63
119
  * @tsplus static fncts.test.GenOps uniform
64
120
  */
65
- const uniform_1 = /*#__PURE__*/fromIOSample_1( /*#__PURE__*/tsplus_module_4.map(tsplus_module_2.shrinkFractional(0.0), fileName_1 + ":37:82")(tsplus_module_3.nextDouble));
121
+ const uniform_1 = /*#__PURE__*/fromIOSample_1( /*#__PURE__*/tsplus_module_6.map(tsplus_module_4.shrinkFractional(0.0), fileName_1 + ":127:82")(tsplus_module_5.nextDouble));
66
122
  export const uniform = uniform_1;
67
123
  /**
68
124
  * @tsplus static fncts.test.GenOps alphaNumericChar
@@ -87,12 +143,13 @@ export function alphaNumericStringWith(constraints = {}) {
87
143
  /**
88
144
  * @tsplus static fncts.test.GenOps alphaNumericString
89
145
  */
90
- export const alphaNumericString = /*#__PURE__*/string_1()(alphaNumericChar_1);
146
+ const alphaNumericString_1 = /*#__PURE__*/string_1()(alphaNumericChar_1);
147
+ export const alphaNumericString = alphaNumericString_1;
91
148
  /**
92
149
  * @tsplus static fncts.test.GenOps array
93
150
  * @tsplus getter fncts.test.Gen array
94
151
  */
95
- export function array(self) {
152
+ function array_1(self) {
96
153
  return arrayWith_1()(self);
97
154
  }
98
155
  /**
@@ -112,22 +169,22 @@ function arrayWith_1(constraints = {}) {
112
169
  */
113
170
  function arrayN_1(n) {
114
171
  return self => {
115
- return map_1(conc => tsplus_module_5.toArray(conc))(concN_1(n)(self));
172
+ return map_1(conc => tsplus_module_7.toArray(conc))(concN_1(n)(self));
116
173
  };
117
174
  }
118
175
  /**
119
176
  * @tsplus static fncts.test.GenOps arrayInt64
120
177
  */
121
178
  function arrayInt64_1(min, max) {
122
- return new Gen(tsplus_module_7.map(uncheckedValue => {
179
+ return new Gen(tsplus_module_9.map(uncheckedValue => {
123
180
  if (uncheckedValue.data.length === 1) {
124
181
  uncheckedValue.data.unshift(0);
125
182
  }
126
- return tsplus_module_6.just(tsplus_module_2.shrinkArrayInt64(min)(uncheckedValue));
127
- }, fileName_1 + ":96:11")(tsplus_module_7.flatMap(({
183
+ return tsplus_module_8.just(tsplus_module_4.shrinkArrayInt64(min)(uncheckedValue), fileName_1 + ":190:20");
184
+ }, fileName_1 + ":186:11")(tsplus_module_9.flatMap(({
128
185
  min,
129
186
  max
130
- }) => tsplus_module_7.repeatIO(tsplus_module_3.nextArrayIntBetween(min, max, fileName_1 + ":95:76"), fileName_1 + ":95:49"), fileName_1 + ":95:15")(tsplus_module_7.fromIO(computeArrayInt64GenerateRange(min, max, undefined, undefined), fileName_1 + ":94:18"))));
187
+ }) => tsplus_module_9.repeatIO(tsplus_module_5.nextArrayIntBetween(min, max, fileName_1 + ":185:76"), fileName_1 + ":185:49"), fileName_1 + ":185:15")(tsplus_module_9.fromIO(computeArrayInt64GenerateRange(min, max, undefined, undefined), fileName_1 + ":184:18"))));
131
188
  }
132
189
  /**
133
190
  * @tsplus static fncts.test.GenOps asciiChar
@@ -162,11 +219,12 @@ function base64StringWith_1(constraints = {}) {
162
219
  /**
163
220
  * @tsplus static fncts.test.GenOps bigInt
164
221
  */
165
- export const bigInt = /*#__PURE__*/fromIOSample_1( /*#__PURE__*/tsplus_module_4.map(tsplus_module_2.shrinkBigInt(BigInt(0)), fileName_1 + ":143:98")( /*#__PURE__*/tsplus_module_3.nextBigIntBetween( /*#__PURE__*/BigInt(-1) << /*#__PURE__*/BigInt(255), ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/BigInt(255)) - /*#__PURE__*/BigInt(1), fileName_1 + ":143:27")));
222
+ export const bigInt = /*#__PURE__*/fromIOSample_1( /*#__PURE__*/tsplus_module_6.map(tsplus_module_4.shrinkBigInt(BigInt(0)), fileName_1 + ":233:98")( /*#__PURE__*/tsplus_module_5.nextBigIntBetween( /*#__PURE__*/BigInt(-1) << /*#__PURE__*/BigInt(255), ( /*#__PURE__*/BigInt(1) << /*#__PURE__*/BigInt(255)) - /*#__PURE__*/BigInt(1), fileName_1 + ":233:27")));
166
223
  /**
167
224
  * @tsplus static fncts.test.GenOps boolean
168
225
  */
169
- export const boolean = /*#__PURE__*/defer_1(() => oneOf_1(constant_1(true), constant_1(false)));
226
+ const boolean_1 = /*#__PURE__*/defer_1(() => oneOf_1(constant_1(true), constant_1(false)));
227
+ export const boolean = boolean_1;
170
228
  /**
171
229
  * @tsplus static fncts.test.GenOps bounded
172
230
  */
@@ -211,25 +269,26 @@ export function conc(self) {
211
269
  */
212
270
  function concN_1(n) {
213
271
  return g => {
214
- return tsplus_module_9.foldLeft(constant_1(tsplus_module_8.empty()), (gen, a) => zipWith_1(a, (as, a) => tsplus_module_9.append(a)(as))(gen))(tsplus_module_10.replicate(n, g));
272
+ return tsplus_module_11.foldLeft(constant_1(tsplus_module_10.empty()), (gen, a) => zipWith_1(a, (as, a) => tsplus_module_11.append(a)(as))(gen))(tsplus_module_12.replicate(n, g));
215
273
  };
216
274
  }
217
275
  /**
218
276
  * @tsplus static fncts.test.GenOps constant
219
277
  */
220
278
  function constant_1(a) {
221
- return new Gen(tsplus_module_7.succeedNow(tsplus_module_6.just(tsplus_module_2.noShrink(a)), fileName_1 + ":207:35"));
279
+ return new Gen(tsplus_module_9.succeedNow(tsplus_module_8.just(tsplus_module_4.noShrink(a), fileName_1 + ":297:40"), fileName_1 + ":297:35"));
222
280
  }
223
281
  /**
224
282
  * @tsplus static fncts.test.GenOps defer
225
283
  */
226
284
  function defer_1(gen) {
227
- return flatten_1(fromIO_1(tsplus_module_4.succeed(gen, fileName_1 + ":214:31")));
285
+ return flatten_1(fromIO_1(tsplus_module_6.succeed(gen, fileName_1 + ":304:31")));
228
286
  }
229
287
  /**
230
288
  * @tsplus static fncts.test.GenOps double
231
289
  */
232
- export const double = /*#__PURE__*/fromIOSample_1( /*#__PURE__*/tsplus_module_4.map(tsplus_module_2.shrinkFractional(0), fileName_1 + ":220:81")(tsplus_module_3.nextDouble));
290
+ const double_1 = /*#__PURE__*/fromIOSample_1( /*#__PURE__*/tsplus_module_6.map(tsplus_module_4.shrinkFractional(0), fileName_1 + ":310:81")(tsplus_module_5.nextDouble));
291
+ export const double = double_1;
233
292
  /**
234
293
  * @tsplus static fncts.test.GenOps doubleWith
235
294
  */
@@ -240,11 +299,11 @@ export function doubleWith(constraints = {}) {
240
299
  min = noDefaultInfinity ? -Number.MAX_VALUE : Number.NEGATIVE_INFINITY,
241
300
  max = noDefaultInfinity ? Number.MAX_VALUE : Number.POSITIVE_INFINITY
242
301
  } = constraints;
243
- return unwrap_1(tsplus_module_4.gen(function* (_) {
244
- const minIndex = yield* _(safeDoubleToIndex(min, "min"), fileName_1 + ":234:32");
245
- const maxIndex = yield* _(safeDoubleToIndex(max, "max"), fileName_1 + ":235:32");
302
+ return unwrap_1(tsplus_module_6.gen(function* (_) {
303
+ const minIndex = yield* _(safeDoubleToIndex(min, "min"), fileName_1 + ":324:32");
304
+ const maxIndex = yield* _(safeDoubleToIndex(max, "max"), fileName_1 + ":325:32");
246
305
  if (isStrictlySmaller64(maxIndex, minIndex)) {
247
- return yield* _(tsplus_module_4.haltNow(new IllegalArgumentError("min must be less than or equal to max", "Gen.double"), fileName_1 + ":237:35"), fileName_1 + ":237:24");
306
+ return yield* _(tsplus_module_6.haltNow(new IllegalArgumentError("min must be less than or equal to max", "Gen.double"), fileName_1 + ":327:35"), fileName_1 + ":327:24");
248
307
  }
249
308
  if (noNaN) {
250
309
  return map_1(indexToDouble)(arrayInt64_1(minIndex, maxIndex));
@@ -255,12 +314,12 @@ export function doubleWith(constraints = {}) {
255
314
  return map_1(index => {
256
315
  if (isStrictlySmaller64(maxIndex, index) || isStrictlySmaller64(index, minIndex)) return Number.NaN;else return indexToDouble(index);
257
316
  })(arrayInt64_1(minIndexWithNaN, maxIndexWithNaN));
258
- }, fileName_1 + ":233:11"));
317
+ }, fileName_1 + ":323:11"));
259
318
  }
260
319
  /**
261
320
  * @tsplus static fncts.test.GenOps empty
262
321
  */
263
- const empty_1 = /*#__PURE__*/new Gen(tsplus_module_7.empty);
322
+ const empty_1 = /*#__PURE__*/new Gen(tsplus_module_9.empty);
264
323
  export const empty = empty_1;
265
324
  /**
266
325
  * @tsplus static fncts.test.GenOps exponential
@@ -285,10 +344,10 @@ export function filterNot(p) {
285
344
  */
286
345
  function flatMap_1(f) {
287
346
  return ma => {
288
- return new Gen(tsplus_module_2.flatMapStream(ma.sample, sample => {
347
+ return new Gen(tsplus_module_4.flatMapStream(ma.sample, sample => {
289
348
  const values = f(sample.value).sample;
290
349
  const shrinks = flatMap_1(a => f(a))(new Gen(sample.shrink)).sample;
291
- return tsplus_module_7.map(maybeSample => tsplus_module_11.map(sample => tsplus_module_2.flatMap(b => new Sample(b, shrinks))(sample))(maybeSample), fileName_1 + ":292:26")(values);
350
+ return tsplus_module_9.map(maybeSample => tsplus_module_13.map(sample => tsplus_module_4.flatMap(b => new Sample(b, shrinks))(sample))(maybeSample), fileName_1 + ":382:26")(values);
292
351
  }));
293
352
  };
294
353
  }
@@ -302,13 +361,13 @@ function flatten_1(mma) {
302
361
  * @tsplus static fncts.test.GenOps fromIO
303
362
  */
304
363
  function fromIO_1(effect) {
305
- return fromIOSample_1(tsplus_module_4.map(tsplus_module_2.noShrink, fileName_1 + ":309:37")(effect));
364
+ return fromIOSample_1(tsplus_module_6.map(tsplus_module_4.noShrink, fileName_1 + ":399:37")(effect));
306
365
  }
307
366
  /**
308
367
  * @tsplus static fncts.test.GenOps fromIOSample
309
368
  */
310
369
  function fromIOSample_1(effect) {
311
- return new Gen(tsplus_module_7.fromIO(tsplus_module_4.map(tsplus_module_6.just, fileName_1 + ":316:42")(effect), fileName_1 + ":316:31"));
370
+ return new Gen(tsplus_module_9.fromIO(tsplus_module_6.map(tsplus_module_8.just, fileName_1 + ":406:42")(effect), fileName_1 + ":406:31"));
312
371
  }
313
372
  /**
314
373
  * @tsplus static fncts.test.GenOps floatWith
@@ -320,11 +379,11 @@ function floatWith_1(constraints = {}) {
320
379
  max = noDefaultInfinity ? MAX_VALUE_32 : Number.POSITIVE_INFINITY,
321
380
  noNaN = false
322
381
  } = constraints;
323
- return unwrap_1(tsplus_module_4.gen(function* (_) {
324
- const minIndex = yield* _(safeFloatToIndex(min, "min"), fileName_1 + ":331:32");
325
- const maxIndex = yield* _(safeFloatToIndex(max, "max"), fileName_1 + ":332:32");
382
+ return unwrap_1(tsplus_module_6.gen(function* (_) {
383
+ const minIndex = yield* _(safeFloatToIndex(min, "min"), fileName_1 + ":421:32");
384
+ const maxIndex = yield* _(safeFloatToIndex(max, "max"), fileName_1 + ":422:32");
326
385
  if (minIndex > maxIndex) {
327
- return yield* _(tsplus_module_4.haltNow(new Error("Gen.float constraints.min must be less than or equal to constraints.max"), fileName_1 + ":335:21"), fileName_1 + ":334:24");
386
+ return yield* _(tsplus_module_6.haltNow(new Error("Gen.float constraints.min must be less than or equal to constraints.max"), fileName_1 + ":425:21"), fileName_1 + ":424:24");
328
387
  }
329
388
  if (noNaN) {
330
389
  return map_1(indexToFloat)(intWith_1({
@@ -340,7 +399,7 @@ function floatWith_1(constraints = {}) {
340
399
  min: minIndexWithNaN,
341
400
  max: maxIndexWithNaN
342
401
  }));
343
- }, fileName_1 + ":330:11"));
402
+ }, fileName_1 + ":420:11"));
344
403
  }
345
404
  /**
346
405
  * @tsplus static fncts.test.GenOps float
@@ -371,27 +430,28 @@ export function hexString(constraints = {}) {
371
430
  /**
372
431
  * @tsplus static fncts.test.GenOps int
373
432
  */
374
- export const int = /*#__PURE__*/fromIOSample_1( /*#__PURE__*/tsplus_module_4.map(tsplus_module_2.shrinkIntegral(0), fileName_1 + ":383:75")(tsplus_module_3.nextInt));
433
+ const int_1 = /*#__PURE__*/fromIOSample_1( /*#__PURE__*/tsplus_module_6.map(tsplus_module_4.shrinkIntegral(0), fileName_1 + ":473:75")(tsplus_module_5.nextInt));
434
+ export const int = int_1;
375
435
  /**
376
436
  * @tsplus static fncts.test.GenOps intWith
377
437
  */
378
438
  function intWith_1(constraints = {}) {
379
- return fromIOSample_1(tsplus_module_4.defer(() => {
439
+ return fromIOSample_1(tsplus_module_6.defer(() => {
380
440
  const min = constraints.min ?? -0x80000000;
381
441
  const max = constraints.max ?? 0x7fffffff;
382
442
  if (min > max || min < Number.MIN_SAFE_INTEGER || max > Number.MAX_SAFE_INTEGER) {
383
- return tsplus_module_4.haltNow(new IllegalArgumentError("invalid bounds", "Gen.intWith"), fileName_1 + ":394:26");
443
+ return tsplus_module_6.haltNow(new IllegalArgumentError("invalid bounds", "Gen.intWith"), fileName_1 + ":484:26");
384
444
  } else {
385
- return tsplus_module_4.map(tsplus_module_2.shrinkIntegral(min), fileName_1 + ":396:51")(tsplus_module_3.nextIntBetween(min, max, fileName_1 + ":396:37"));
445
+ return tsplus_module_6.map(tsplus_module_4.shrinkIntegral(min), fileName_1 + ":486:51")(tsplus_module_5.nextIntBetween(min, max, fileName_1 + ":486:37"));
386
446
  }
387
- }, fileName_1 + ":390:13"));
447
+ }, fileName_1 + ":480:13"));
388
448
  }
389
449
  /**
390
450
  * @tsplus pipeable fncts.test.Gen map
391
451
  */
392
452
  function map_1(f) {
393
453
  return self => {
394
- return new Gen(tsplus_module_7.map(maybeSample => tsplus_module_11.map(sample => tsplus_module_2.map(f)(sample))(maybeSample), fileName_1 + ":407:35")(self.sample));
454
+ return new Gen(tsplus_module_9.map(maybeSample => tsplus_module_13.map(sample => tsplus_module_4.map(f)(sample))(maybeSample), fileName_1 + ":497:35")(self.sample));
395
455
  };
396
456
  }
397
457
  /**
@@ -399,19 +459,19 @@ function map_1(f) {
399
459
  */
400
460
  export function mapIO(f) {
401
461
  return self => {
402
- return new Gen(tsplus_module_7.mapIO(maybeSample => tsplus_module_12.match(() => tsplus_module_4.succeedNow(tsplus_module_6.nothing(), fileName_1 + ":419:30"), sample => tsplus_module_4.map(tsplus_module_6.just, fileName_1 + ":420:44")(tsplus_module_2.foreach(f)(sample)))(maybeSample), fileName_1 + ":417:24")(self.sample));
462
+ return new Gen(tsplus_module_9.mapIO(maybeSample => tsplus_module_14.match(() => tsplus_module_6.succeedNow(tsplus_module_8.nothing(fileName_1 + ":509:38"), fileName_1 + ":509:30"), sample => tsplus_module_6.map(tsplus_module_8.just, fileName_1 + ":510:44")(tsplus_module_4.foreach(f)(sample)))(maybeSample), fileName_1 + ":507:24")(self.sample));
403
463
  };
404
464
  }
405
465
  /**
406
466
  * @tsplus static fncts.test.GenOps medium
407
467
  */
408
468
  export function medium(f, min = 0) {
409
- return flatMap_1(f)(reshrink_1(tsplus_module_2.shrinkIntegral(min))(flatMap_1(max => map_1(n => clamp(Math.round(n * max / 10.0), min, max))(exponential_1))(size_1)));
469
+ return flatMap_1(f)(reshrink_1(tsplus_module_4.shrinkIntegral(min))(flatMap_1(max => map_1(n => clamp(Math.round(n * max / 10.0), min, max))(exponential_1))(size_1)));
410
470
  }
411
471
  /**
412
472
  * @tsplus static fncts.test.GenOps memo
413
473
  */
414
- export function memo(builder) {
474
+ function memo_1(builder) {
415
475
  const previous = {};
416
476
  let remainingDepth = 10;
417
477
  return maxDepth => {
@@ -438,7 +498,7 @@ export function nat(max = 0x7fffffff) {
438
498
  * @tsplus static fncts.test.GenOps oneOf
439
499
  */
440
500
  function oneOf_1(...gens) {
441
- if (tsplus_module_13.isEmpty(gens)) return empty_1;else return flatMap_1(i => gens[i])(intWith_1({
501
+ if (tsplus_module_15.isEmpty(gens)) return empty_1;else return flatMap_1(i => gens[i])(intWith_1({
442
502
  min: 0,
443
503
  max: gens.length - 1
444
504
  }));
@@ -448,10 +508,10 @@ function oneOf_1(...gens) {
448
508
  */
449
509
  export function partial(properties) {
450
510
  const entries = Object.entries(properties);
451
- return tsplus_module_13.foldLeft(constant_1({}), (b, [k, gen]) => unwrap_1(tsplus_module_4.ifIO(() => tsplus_module_4.succeed(() => zipWith_1(gen, (r, a) => ({
511
+ return tsplus_module_15.foldLeft(constant_1({}), (b, [k, gen]) => unwrap_1(tsplus_module_6.ifIO(() => tsplus_module_6.succeed(() => zipWith_1(gen, (r, a) => ({
452
512
  ...r,
453
513
  [k]: a
454
- }))(b), fileName_1 + ":485:50"), () => tsplus_module_4.succeed(() => b, fileName_1 + ":485:108"), fileName_1 + ":485:39")(tsplus_module_3.nextBoolean)))(entries);
514
+ }))(b), fileName_1 + ":575:50"), () => tsplus_module_6.succeed(() => b, fileName_1 + ":575:108"), fileName_1 + ":575:39")(tsplus_module_5.nextBoolean)))(entries);
455
515
  }
456
516
  /**
457
517
  * @tsplus static fncts.test.GenOps printableChar
@@ -465,7 +525,7 @@ export const printableChar = /*#__PURE__*/char_1({
465
525
  */
466
526
  function reshrink_1(f) {
467
527
  return gen => {
468
- return new Gen(tsplus_module_7.map(maybeSample => tsplus_module_11.map(sample => f(sample.value))(maybeSample), fileName_1 + ":500:69")(gen.sample));
528
+ return new Gen(tsplus_module_9.map(maybeSample => tsplus_module_13.map(sample => f(sample.value))(maybeSample), fileName_1 + ":590:69")(gen.sample));
469
529
  };
470
530
  }
471
531
  /**
@@ -478,7 +538,7 @@ export function sized(f) {
478
538
  * @tsplus static fncts.test.GenOps small
479
539
  */
480
540
  function small_1(f, min = 0) {
481
- return flatMap_1(f)(reshrink_1(tsplus_module_2.shrinkIntegral(min))(flatMap_1(max => map_1(n => clamp(Math.round(n * max / 25), min, max))(exponential_1))(size_1)));
541
+ return flatMap_1(f)(reshrink_1(tsplus_module_4.shrinkIntegral(min))(flatMap_1(max => map_1(n => clamp(Math.round(n * max / 25), min, max))(exponential_1))(size_1)));
482
542
  }
483
543
  /**
484
544
  * @tsplus static fncts.test.GenOps string16
@@ -508,7 +568,7 @@ function stringN_1(n) {
508
568
  */
509
569
  export function struct(properties) {
510
570
  const entries = Object.entries(properties);
511
- return tsplus_module_13.foldLeft(constant_1({}), (b, [k, gen]) => zipWith_1(gen, (out, a) => ({
571
+ return tsplus_module_15.foldLeft(constant_1({}), (b, [k, gen]) => zipWith_1(gen, (out, a) => ({
512
572
  ...out,
513
573
  [k]: a
514
574
  }))(b))(entries);
@@ -523,7 +583,7 @@ export function unfoldGen(s, f) {
523
583
  * @tsplus static fncts.test.GenOps unfoldGenN
524
584
  */
525
585
  function unfoldGenN_1(n, s, f) {
526
- if (n <= 0) return constant_1(tsplus_module_14.make());else return flatMap_1(([s, a]) => map_1(as => tsplus_module_9.append(a)(as))(unfoldGenN_1(n - 1, s, f)))(f(s));
586
+ if (n <= 0) return constant_1(tsplus_module_16.make());else return flatMap_1(([s, a]) => map_1(as => tsplus_module_11.append(a)(as))(unfoldGenN_1(n - 1, s, f)))(f(s));
527
587
  }
528
588
  /**
529
589
  * @tsplus static fncts.test.GenOps unicodeChar
@@ -541,7 +601,7 @@ export function unicodeString(constraints = {}) {
541
601
  */
542
602
  export function uniqueArray(constraints = {}) {
543
603
  return gen => {
544
- return map_1(conc => tsplus_module_5.toArray(conc))(uniqueConc_1(constraints)(gen));
604
+ return map_1(conc => tsplus_module_7.toArray(conc))(uniqueConc_1(constraints)(gen));
545
605
  };
546
606
  }
547
607
  /**
@@ -550,8 +610,8 @@ export function uniqueArray(constraints = {}) {
550
610
  function uniqueConc_1(constraints = {}) {
551
611
  return self => {
552
612
  const minLength = constraints.minLength ?? 0;
553
- const eq = constraints.eq ?? tsplus_module_16.makeEq({
554
- equals: y => x => tsplus_module_15.strictEquals(x, y)
613
+ const eq = constraints.eq ?? tsplus_module_2.makeEq({
614
+ equals: y => x => tsplus_module_1.strictEquals(x, y)
555
615
  });
556
616
  return constraints.maxLength ? bounded_1(minLength, constraints.maxLength, n => uniqueConcN_1(n, eq)(self)) : small_1(n => uniqueConcN_1(n, eq)(self), minLength);
557
617
  };
@@ -561,7 +621,7 @@ function uniqueConc_1(constraints = {}) {
561
621
  */
562
622
  function uniqueConcN_1(n, /** @tsplus auto */E) {
563
623
  return self => {
564
- return tsplus_module_9.foldLeft(constant_1(tsplus_module_8.empty()), (gen, a) => zipWith_1(a, (as, a) => tsplus_module_9.elem(a, E)(as) ? as : tsplus_module_9.append(a)(as))(gen))(tsplus_module_10.replicate(n, self));
624
+ return tsplus_module_11.foldLeft(constant_1(tsplus_module_10.empty()), (gen, a) => zipWith_1(a, (as, a) => tsplus_module_11.elem(a, E)(as) ? as : tsplus_module_11.append(a)(as))(gen))(tsplus_module_12.replicate(n, self));
565
625
  };
566
626
  }
567
627
  /**
@@ -574,11 +634,11 @@ function unwrap_1(effect) {
574
634
  * @tsplus static fncts.test.GenOps weighted
575
635
  */
576
636
  function weighted_1(...gens) {
577
- const sum = tsplus_module_13.foldLeft(0, (b, a) => b + a)(gens.map(([, weight]) => weight));
578
- const [map] = tsplus_module_13.foldLeft(tsplus_module_19.tuple(tsplus_module_18.make(tsplus_module_17.Ord), 0), ([map, acc], [gen, d]) => {
637
+ const sum = tsplus_module_15.foldLeft(0, (b, a) => b + a)(gens.map(([, weight]) => weight));
638
+ const [map] = tsplus_module_15.foldLeft(tsplus_module_19.tuple(tsplus_module_18.make(tsplus_module_17.Ord), 0), ([map, acc], [gen, d]) => {
579
639
  if ((acc + d) / sum > acc / sum) return tsplus_module_19.tuple(tsplus_module_18.set((acc + d) / sum, gen)(map), acc + d);else return tsplus_module_19.tuple(map, acc);
580
640
  })(gens);
581
- return flatMap_1(n => tsplus_module_11.getOrElse(() => {
641
+ return flatMap_1(n => tsplus_module_13.getOrElse(() => {
582
642
  throw new NoSuchElementError("Gen.weighted");
583
643
  })(tsplus_module_18.getGte(n)(map)))(uniform_1);
584
644
  }
@@ -601,8 +661,75 @@ export function zip(that) {
601
661
  /**
602
662
  * @tsplus static fncts.test.GenOps tuple
603
663
  */
604
- export function tuple(...components) {
605
- return tsplus_module_13.foldLeft(constant_1([]), (b, a) => zipWith_1(a, (vs, v) => [...vs, v])(b))(components);
664
+ function tuple_1(...components) {
665
+ return tsplus_module_15.foldLeft(constant_1([]), (b, a) => zipWith_1(a, (vs, v) => [...vs, v])(b))(components);
666
+ }
667
+ /**
668
+ * @tsplus static fncts.test.GenOps record
669
+ */
670
+ function record_1(key, value, constraints) {
671
+ return map_1(pairs => tsplus_module_11.foldLeft({}, (b, [k, v]) => ({
672
+ ...b,
673
+ [k]: v
674
+ }))(pairs))(uniqueConc_1({
675
+ eq: tsplus_module_21.contramap(([k]) => k)(tsplus_module_20.Eq),
676
+ ...constraints
677
+ })(tuple_1(key, value)));
678
+ }
679
+ /**
680
+ * @tsplus static fncts.test.GenOps date
681
+ */
682
+ function date_1(constraints = {}) {
683
+ const min = constraints.min ? constraints.min.getTime() : -8640000000000000;
684
+ const max = constraints.max ? constraints.max.getTime() : 8640000000000000;
685
+ return map_1(n => new Date(n))(intWith_1({
686
+ min,
687
+ max
688
+ }));
689
+ }
690
+ function typedArray(constraints, minBound, maxBound, ctor) {
691
+ const min = constraints.min ? clamp(constraints.min, minBound, maxBound) : minBound;
692
+ const max = constraints.max ? clamp(constraints.max, minBound, maxBound) : maxBound;
693
+ return map_1(n => new ctor(n))(array_1(intWith_1({
694
+ min,
695
+ max
696
+ })));
697
+ }
698
+ /**
699
+ * @tsplus static fncts.test.GenOps int8Array
700
+ */
701
+ function int8Array_1(constraints = {}) {
702
+ return typedArray(constraints, -128, 127, Int8Array);
703
+ }
704
+ /**
705
+ * @tsplus static fncts.test.GenOps int16Array
706
+ */
707
+ function int16Array_1(constraints = {}) {
708
+ return typedArray(constraints, -32768, 32767, Int16Array);
709
+ }
710
+ /**
711
+ * @tsplus static fncts.test.GenOps int32Array
712
+ */
713
+ function int32Array_1(constraints = {}) {
714
+ return typedArray(constraints, -0x80000000, 0x7fffffff, Int32Array);
715
+ }
716
+ /**
717
+ * @tsplus static fncts.test.GenOps uint8Array
718
+ */
719
+ function uint8Array_1(constraints = {}) {
720
+ return typedArray(constraints, 0, 255, Uint8Array);
721
+ }
722
+ /**
723
+ * @tsplus static fncts.test.GenOps uint16Array
724
+ */
725
+ function uint16Array_1(constraints = {}) {
726
+ return typedArray(constraints, 0, 65535, Uint16Array);
727
+ }
728
+ /**
729
+ * @tsplus static fncts.test.GenOps uint32Array
730
+ */
731
+ function uint32Array_1(constraints = {}) {
732
+ return typedArray(constraints, 0, 0xffffffff, Uint32Array);
606
733
  }
607
734
  function _char(min, max, mapToCode) {
608
735
  return map_1(n => String.fromCharCode(mapToCode(n)))(intWith_1({