@fncts/test 0.0.19 → 0.0.21

Sign up to get free protection for your applications and to get access to all the features.
Files changed (262) hide show
  1. package/_cjs/api.cjs +39 -31
  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/Annotations/live.cjs +10 -12
  6. package/_cjs/control/Annotations/live.cjs.map +1 -1
  7. package/_cjs/control/Assertion/api.cjs +45 -33
  8. package/_cjs/control/Assertion/api.cjs.map +1 -1
  9. package/_cjs/control/AssertionIO/api.cjs +20 -14
  10. package/_cjs/control/AssertionIO/api.cjs.map +1 -1
  11. package/_cjs/control/DefaultTestReporter/render.cjs +50 -50
  12. package/_cjs/control/DefaultTestReporter/render.cjs.map +1 -1
  13. package/_cjs/control/FreeBooleanAlgebraIO/api.cjs +20 -16
  14. package/_cjs/control/FreeBooleanAlgebraIO/api.cjs.map +1 -1
  15. package/_cjs/control/Gen/api/array.cjs +23 -17
  16. package/_cjs/control/Gen/api/array.cjs.map +1 -1
  17. package/_cjs/control/Gen/api/char.cjs +2 -2
  18. package/_cjs/control/Gen/api/char.cjs.map +1 -1
  19. package/_cjs/control/Gen/api/conc.cjs +35 -26
  20. package/_cjs/control/Gen/api/conc.cjs.map +1 -1
  21. package/_cjs/control/Gen/api/double.cjs +8 -8
  22. package/_cjs/control/Gen/api/double.cjs.map +1 -1
  23. package/_cjs/control/Gen/api/float.cjs +6 -6
  24. package/_cjs/control/Gen/api/float.cjs.map +1 -1
  25. package/_cjs/control/Gen/api/string.cjs +18 -14
  26. package/_cjs/control/Gen/api/string.cjs.map +1 -1
  27. package/_cjs/control/Gen/api/struct.cjs +4 -4
  28. package/_cjs/control/Gen/api/struct.cjs.map +1 -1
  29. package/_cjs/control/Gen/api.cjs +78 -65
  30. package/_cjs/control/Gen/api.cjs.map +1 -1
  31. package/_cjs/control/Gen.cjs.map +1 -1
  32. package/_cjs/control/Live/definition.cjs +5 -5
  33. package/_cjs/control/Live/definition.cjs.map +1 -1
  34. package/_cjs/control/RunnableSpec.cjs +8 -8
  35. package/_cjs/control/RunnableSpec.cjs.map +1 -1
  36. package/_cjs/control/Sample/api.cjs +66 -52
  37. package/_cjs/control/Sample/api.cjs.map +1 -1
  38. package/_cjs/control/Sized/live.cjs +3 -3
  39. package/_cjs/control/Sized/live.cjs.map +1 -1
  40. package/_cjs/control/Spec/api.cjs +322 -286
  41. package/_cjs/control/Spec/api.cjs.map +1 -1
  42. package/_cjs/control/Spec/definition.cjs.map +1 -1
  43. package/_cjs/control/SummaryBuilder.cjs +10 -10
  44. package/_cjs/control/SummaryBuilder.cjs.map +1 -1
  45. package/_cjs/control/Test.cjs +1 -1
  46. package/_cjs/control/Test.cjs.map +1 -1
  47. package/_cjs/control/TestAnnotationRenderer/api.cjs +28 -26
  48. package/_cjs/control/TestAnnotationRenderer/api.cjs.map +1 -1
  49. package/_cjs/control/TestAnnotationRenderer/definition.cjs +2 -2
  50. package/_cjs/control/TestAnnotationRenderer/definition.cjs.map +1 -1
  51. package/_cjs/control/TestAspect/api.cjs +14 -14
  52. package/_cjs/control/TestAspect/api.cjs.map +1 -1
  53. package/_cjs/control/TestClock/api.cjs +9 -11
  54. package/_cjs/control/TestClock/api.cjs.map +1 -1
  55. package/_cjs/control/TestClock/definition.cjs +65 -75
  56. package/_cjs/control/TestClock/definition.cjs.map +1 -1
  57. package/_cjs/control/TestConsole/api.cjs +3 -3
  58. package/_cjs/control/TestConsole/api.cjs.map +1 -1
  59. package/_cjs/control/TestConsole/definition.cjs +20 -24
  60. package/_cjs/control/TestConsole/definition.cjs.map +1 -1
  61. package/_cjs/control/TestEnvironment.cjs +3 -3
  62. package/_cjs/control/TestEnvironment.cjs.map +1 -1
  63. package/_cjs/control/TestExecutor.cjs +3 -3
  64. package/_cjs/control/TestExecutor.cjs.map +1 -1
  65. package/_cjs/control/TestLogger.cjs +2 -2
  66. package/_cjs/control/TestLogger.cjs.map +1 -1
  67. package/_cjs/control/TestRandom/api.cjs +9 -9
  68. package/_cjs/control/TestRandom/api.cjs.map +1 -1
  69. package/_cjs/control/TestRandom/definition.cjs +65 -71
  70. package/_cjs/control/TestRandom/definition.cjs.map +1 -1
  71. package/_cjs/control/TestRenderer/ConsoleRenderer.cjs +11 -11
  72. package/_cjs/control/TestRenderer/ConsoleRenderer.cjs.map +1 -1
  73. package/_cjs/control/TestRunner.cjs +1 -1
  74. package/_cjs/control/TestRunner.cjs.map +1 -1
  75. package/_cjs/data/AssertionValue/api.cjs +22 -14
  76. package/_cjs/data/AssertionValue/api.cjs.map +1 -1
  77. package/_cjs/data/AssertionValue/definition.cjs.map +1 -1
  78. package/_cjs/data/ExecutedSpec/api.cjs +61 -53
  79. package/_cjs/data/ExecutedSpec/api.cjs.map +1 -1
  80. package/_cjs/data/ExecutionResult.cjs +42 -38
  81. package/_cjs/data/ExecutionResult.cjs.map +1 -1
  82. package/_cjs/data/FreeBooleanAlgebra/api.cjs +93 -77
  83. package/_cjs/data/FreeBooleanAlgebra/api.cjs.map +1 -1
  84. package/_cjs/data/LogLine/Fragment.cjs +2 -2
  85. package/_cjs/data/LogLine/Fragment.cjs.map +1 -1
  86. package/_cjs/data/LogLine/Line.cjs +11 -9
  87. package/_cjs/data/LogLine/Line.cjs.map +1 -1
  88. package/_cjs/data/LogLine/Message.cjs +32 -24
  89. package/_cjs/data/LogLine/Message.cjs.map +1 -1
  90. package/_cjs/data/LogLine/Style.cjs.map +1 -1
  91. package/_cjs/data/Render/definition.cjs +1 -1
  92. package/_cjs/data/Render/definition.cjs.map +1 -1
  93. package/_cjs/data/TestAnnotation/api.cjs +2 -2
  94. package/_cjs/data/TestAnnotation/api.cjs.map +1 -1
  95. package/_cjs/data/TestAnnotation/definition.cjs.map +1 -1
  96. package/_cjs/data/TestAnnotationMap.cjs +3 -3
  97. package/_cjs/data/TestAnnotationMap.cjs.map +1 -1
  98. package/_cjs/demo.cjs +5 -5
  99. package/_cjs/demo.cjs.map +1 -1
  100. package/_cjs/util/math.cjs +6 -6
  101. package/_cjs/util/math.cjs.map +1 -1
  102. package/_mjs/api.mjs +37 -29
  103. package/_mjs/api.mjs.map +1 -1
  104. package/_mjs/control/AbstractRunnableSpec.mjs +1 -1
  105. package/_mjs/control/AbstractRunnableSpec.mjs.map +1 -1
  106. package/_mjs/control/Annotations/live.mjs +10 -11
  107. package/_mjs/control/Annotations/live.mjs.map +1 -1
  108. package/_mjs/control/Assertion/api.mjs +40 -28
  109. package/_mjs/control/Assertion/api.mjs.map +1 -1
  110. package/_mjs/control/AssertionIO/api.mjs +17 -11
  111. package/_mjs/control/AssertionIO/api.mjs.map +1 -1
  112. package/_mjs/control/DefaultTestReporter/render.mjs +50 -50
  113. package/_mjs/control/DefaultTestReporter/render.mjs.map +1 -1
  114. package/_mjs/control/FreeBooleanAlgebraIO/api.mjs +18 -14
  115. package/_mjs/control/FreeBooleanAlgebraIO/api.mjs.map +1 -1
  116. package/_mjs/control/Gen/api/array.mjs +20 -14
  117. package/_mjs/control/Gen/api/array.mjs.map +1 -1
  118. package/_mjs/control/Gen/api/char.mjs +2 -2
  119. package/_mjs/control/Gen/api/char.mjs.map +1 -1
  120. package/_mjs/control/Gen/api/conc.mjs +30 -22
  121. package/_mjs/control/Gen/api/conc.mjs.map +1 -1
  122. package/_mjs/control/Gen/api/double.mjs +8 -8
  123. package/_mjs/control/Gen/api/double.mjs.map +1 -1
  124. package/_mjs/control/Gen/api/float.mjs +6 -6
  125. package/_mjs/control/Gen/api/float.mjs.map +1 -1
  126. package/_mjs/control/Gen/api/string.mjs +18 -14
  127. package/_mjs/control/Gen/api/string.mjs.map +1 -1
  128. package/_mjs/control/Gen/api/struct.mjs +4 -4
  129. package/_mjs/control/Gen/api/struct.mjs.map +1 -1
  130. package/_mjs/control/Gen/api.mjs +68 -54
  131. package/_mjs/control/Gen/api.mjs.map +1 -1
  132. package/_mjs/control/Gen.mjs.map +1 -1
  133. package/_mjs/control/Live/definition.mjs +5 -5
  134. package/_mjs/control/Live/definition.mjs.map +1 -1
  135. package/_mjs/control/RunnableSpec.mjs +8 -8
  136. package/_mjs/control/RunnableSpec.mjs.map +1 -1
  137. package/_mjs/control/Sample/api.mjs +57 -43
  138. package/_mjs/control/Sample/api.mjs.map +1 -1
  139. package/_mjs/control/Sized/live.mjs +3 -3
  140. package/_mjs/control/Sized/live.mjs.map +1 -1
  141. package/_mjs/control/Spec/api.mjs +300 -265
  142. package/_mjs/control/Spec/api.mjs.map +1 -1
  143. package/_mjs/control/Spec/definition.mjs.map +1 -1
  144. package/_mjs/control/SummaryBuilder.mjs +10 -10
  145. package/_mjs/control/SummaryBuilder.mjs.map +1 -1
  146. package/_mjs/control/Test.mjs +1 -1
  147. package/_mjs/control/Test.mjs.map +1 -1
  148. package/_mjs/control/TestAnnotationRenderer/api.mjs +27 -25
  149. package/_mjs/control/TestAnnotationRenderer/api.mjs.map +1 -1
  150. package/_mjs/control/TestAnnotationRenderer/definition.mjs +2 -2
  151. package/_mjs/control/TestAnnotationRenderer/definition.mjs.map +1 -1
  152. package/_mjs/control/TestAspect/api.mjs +14 -14
  153. package/_mjs/control/TestAspect/api.mjs.map +1 -1
  154. package/_mjs/control/TestClock/api.mjs +9 -10
  155. package/_mjs/control/TestClock/api.mjs.map +1 -1
  156. package/_mjs/control/TestClock/definition.mjs +65 -72
  157. package/_mjs/control/TestClock/definition.mjs.map +1 -1
  158. package/_mjs/control/TestConsole/api.mjs +3 -3
  159. package/_mjs/control/TestConsole/api.mjs.map +1 -1
  160. package/_mjs/control/TestConsole/definition.mjs +20 -22
  161. package/_mjs/control/TestConsole/definition.mjs.map +1 -1
  162. package/_mjs/control/TestEnvironment.mjs +3 -3
  163. package/_mjs/control/TestEnvironment.mjs.map +1 -1
  164. package/_mjs/control/TestExecutor.mjs +3 -3
  165. package/_mjs/control/TestExecutor.mjs.map +1 -1
  166. package/_mjs/control/TestLogger.mjs +2 -2
  167. package/_mjs/control/TestLogger.mjs.map +1 -1
  168. package/_mjs/control/TestRandom/api.mjs +9 -9
  169. package/_mjs/control/TestRandom/api.mjs.map +1 -1
  170. package/_mjs/control/TestRandom/definition.mjs +65 -68
  171. package/_mjs/control/TestRandom/definition.mjs.map +1 -1
  172. package/_mjs/control/TestRenderer/ConsoleRenderer.mjs +11 -11
  173. package/_mjs/control/TestRenderer/ConsoleRenderer.mjs.map +1 -1
  174. package/_mjs/control/TestRunner.mjs +1 -1
  175. package/_mjs/control/TestRunner.mjs.map +1 -1
  176. package/_mjs/data/AssertionValue/api.mjs +22 -14
  177. package/_mjs/data/AssertionValue/api.mjs.map +1 -1
  178. package/_mjs/data/AssertionValue/definition.mjs.map +1 -1
  179. package/_mjs/data/ExecutedSpec/api.mjs +55 -47
  180. package/_mjs/data/ExecutedSpec/api.mjs.map +1 -1
  181. package/_mjs/data/ExecutionResult.mjs +40 -36
  182. package/_mjs/data/ExecutionResult.mjs.map +1 -1
  183. package/_mjs/data/FreeBooleanAlgebra/api.mjs +81 -65
  184. package/_mjs/data/FreeBooleanAlgebra/api.mjs.map +1 -1
  185. package/_mjs/data/LogLine/Fragment.mjs +2 -2
  186. package/_mjs/data/LogLine/Fragment.mjs.map +1 -1
  187. package/_mjs/data/LogLine/Line.mjs +11 -9
  188. package/_mjs/data/LogLine/Line.mjs.map +1 -1
  189. package/_mjs/data/LogLine/Message.mjs +26 -18
  190. package/_mjs/data/LogLine/Message.mjs.map +1 -1
  191. package/_mjs/data/LogLine/Style.mjs.map +1 -1
  192. package/_mjs/data/Render/definition.mjs +1 -1
  193. package/_mjs/data/Render/definition.mjs.map +1 -1
  194. package/_mjs/data/TestAnnotation/api.mjs +2 -2
  195. package/_mjs/data/TestAnnotation/api.mjs.map +1 -1
  196. package/_mjs/data/TestAnnotation/definition.mjs.map +1 -1
  197. package/_mjs/data/TestAnnotationMap.mjs +3 -3
  198. package/_mjs/data/TestAnnotationMap.mjs.map +1 -1
  199. package/_mjs/demo.mjs +5 -5
  200. package/_mjs/demo.mjs.map +1 -1
  201. package/_mjs/util/math.mjs +6 -6
  202. package/_mjs/util/math.mjs.map +1 -1
  203. package/_src/api.ts +36 -35
  204. package/_src/control/AbstractRunnableSpec.ts +0 -3
  205. package/_src/control/Annotations/live.ts +0 -4
  206. package/_src/control/Assertion/api.ts +31 -20
  207. package/_src/control/AssertionIO/api.ts +23 -17
  208. package/_src/control/DefaultTestReporter/render.ts +1 -11
  209. package/_src/control/FreeBooleanAlgebraIO/api.ts +12 -14
  210. package/_src/control/Gen/api/array.ts +18 -15
  211. package/_src/control/Gen/api/conc.ts +31 -26
  212. package/_src/control/Gen/api/string.ts +13 -9
  213. package/_src/control/Gen/api/struct.ts +12 -2
  214. package/_src/control/Gen/api.ts +56 -40
  215. package/_src/control/Gen.ts +0 -1
  216. package/_src/control/Live/definition.ts +0 -4
  217. package/_src/control/Sample/api.ts +77 -66
  218. package/_src/control/Spec/api.ts +235 -222
  219. package/_src/control/Spec/definition.ts +0 -2
  220. package/_src/control/SummaryBuilder.ts +0 -1
  221. package/_src/control/TestAnnotationRenderer/api.ts +17 -15
  222. package/_src/control/TestAnnotationRenderer/definition.ts +0 -2
  223. package/_src/control/TestAspect/api.ts +0 -1
  224. package/_src/control/TestClock/definition.ts +4 -17
  225. package/_src/control/TestConsole/definition.ts +0 -1
  226. package/_src/control/TestLogger.ts +0 -2
  227. package/_src/control/TestRandom/api.ts +5 -0
  228. package/_src/control/TestRandom/definition.ts +3 -37
  229. package/_src/control/TestRenderer/ConsoleRenderer.ts +0 -1
  230. package/_src/data/AssertionValue/api.ts +26 -22
  231. package/_src/data/AssertionValue/definition.ts +0 -1
  232. package/_src/data/ExecutedSpec/api.ts +41 -36
  233. package/_src/data/ExecutionResult.ts +54 -51
  234. package/_src/data/FreeBooleanAlgebra/api.ts +68 -58
  235. package/_src/data/LogLine/Line.ts +5 -3
  236. package/_src/data/LogLine/Message.ts +26 -18
  237. package/_src/data/LogLine/Style.ts +0 -1
  238. package/_src/data/Render/definition.ts +0 -2
  239. package/_src/data/TestAnnotation/api.ts +3 -1
  240. package/_src/data/TestAnnotation/definition.ts +0 -3
  241. package/_src/data/TestAnnotationMap.ts +0 -6
  242. package/_src/demo.ts +3 -4
  243. package/_src/util/math.ts +31 -17
  244. package/api.d.ts +12 -12
  245. package/control/Assertion/api.d.ts +14 -10
  246. package/control/AssertionIO/api.d.ts +8 -8
  247. package/control/FreeBooleanAlgebraIO/api.d.ts +6 -6
  248. package/control/Gen/api/array.d.ts +6 -6
  249. package/control/Gen/api/conc.d.ts +8 -8
  250. package/control/Gen/api/string.d.ts +4 -4
  251. package/control/Gen/api.d.ts +15 -15
  252. package/control/Sample/api.d.ts +14 -14
  253. package/control/Spec/api.d.ts +38 -41
  254. package/control/TestAnnotationRenderer/api.d.ts +3 -3
  255. package/control/TestConsole/definition.d.ts +2 -2
  256. package/data/AssertionValue/api.d.ts +8 -8
  257. package/data/ExecutedSpec/api.d.ts +8 -8
  258. package/data/ExecutionResult.d.ts +4 -4
  259. package/data/FreeBooleanAlgebra/api.d.ts +20 -20
  260. package/data/LogLine/Line.d.ts +2 -2
  261. package/data/LogLine/Message.d.ts +10 -10
  262. package/package.json +3 -3
@@ -8,86 +8,93 @@ import { add64, halve64, isEqual64, substract64 } from "../../util/math.js";
8
8
  import { Sample } from "./definition.js";
9
9
 
10
10
  /**
11
- * @tsplus fluent fncts.test.Sample flatMap
11
+ * @tsplus pipeable fncts.test.Sample flatMap
12
12
  */
13
- export function flatMap_<R, A, R1, B>(ma: Sample<R, A>, f: (a: A) => Sample<R1, B>): Sample<R | R1, B> {
14
- const sample = f(ma.value);
15
- return new Sample(
16
- sample.value,
17
- mergeStream(
18
- sample.shrink,
19
- ma.shrink.map((maybeSample) => maybeSample.map((sample) => sample.flatMap(f))),
20
- ),
21
- );
13
+ export function flatMap<A, R1, B>(f: (a: A) => Sample<R1, B>) {
14
+ return <R>(ma: Sample<R, A>): Sample<R | R1, B> => {
15
+ const sample = f(ma.value);
16
+ return new Sample(
17
+ sample.value,
18
+ mergeStream(
19
+ sample.shrink,
20
+ ma.shrink.map((maybeSample) => maybeSample.map((sample) => sample.flatMap(f))),
21
+ ),
22
+ );
23
+ };
22
24
  }
23
25
 
24
26
  /**
25
- * @tsplus fluent fncts.test.Sample filter
27
+ * @tsplus pipeable fncts.test.Sample filter
26
28
  */
27
- export function filter_<R, A>(ma: Sample<R, A>, f: Predicate<A>): Stream<R, never, Maybe<Sample<R, A>>> {
28
- if (f(ma.value)) {
29
- return Stream.succeedNow(
30
- Just(
31
- new Sample(
32
- ma.value,
33
- ma.shrink.flatMap((maybeSample) => maybeSample.map((sample) => sample.filter(f)).getOrElse(Stream.empty)),
29
+ export function filter<A>(f: Predicate<A>) {
30
+ return <R>(ma: Sample<R, A>): Stream<R, never, Maybe<Sample<R, A>>> => {
31
+ if (f(ma.value)) {
32
+ return Stream.succeedNow(
33
+ Just(
34
+ new Sample(
35
+ ma.value,
36
+ ma.shrink.flatMap((maybeSample) => maybeSample.map((sample) => sample.filter(f)).getOrElse(Stream.empty)),
37
+ ),
34
38
  ),
35
- ),
36
- );
37
- } else {
38
- return ma.shrink.flatMap((maybeSample) => maybeSample.map((sample) => sample.filter(f)).getOrElse(Stream.empty));
39
- }
39
+ );
40
+ } else {
41
+ return ma.shrink.flatMap((maybeSample) => maybeSample.map((sample) => sample.filter(f)).getOrElse(Stream.empty));
42
+ }
43
+ };
40
44
  }
41
45
 
42
46
  /**
43
- * @tsplus fluent fncts.test.Sample foreach
47
+ * @tsplus pipeable fncts.test.Sample foreach
44
48
  */
45
- export function foreach_<R, A, R1, B>(
46
- ma: Sample<R, A>,
47
- f: (a: A) => IO<R1, never, B>,
48
- ): IO<R | R1, never, Sample<R | R1, B>> {
49
- return f(ma.value).map(
50
- (b) =>
51
- new Sample(
52
- b,
53
- ma.shrink.mapIO((maybeSample) =>
54
- maybeSample.match(
55
- () => IO.succeedNow(Nothing()),
56
- (sample) => sample.foreach(f).map((value) => Just(value)),
49
+ export function foreach<A, R1, B>(f: (a: A) => IO<R1, never, B>) {
50
+ return <R>(ma: Sample<R, A>): IO<R | R1, never, Sample<R | R1, B>> => {
51
+ return f(ma.value).map(
52
+ (b) =>
53
+ new Sample(
54
+ b,
55
+ ma.shrink.mapIO((maybeSample) =>
56
+ maybeSample.match(
57
+ () => IO.succeedNow(Nothing()),
58
+ (sample) => sample.foreach(f).map((value) => Just(value)),
59
+ ),
57
60
  ),
58
61
  ),
59
- ),
60
- );
62
+ );
63
+ };
61
64
  }
62
65
 
63
66
  /**
64
- * @tsplus fluent fncts.test.Sample map
67
+ * @tsplus pipeable fncts.test.Sample map
65
68
  */
66
- export function map_<R, A, B>(ma: Sample<R, A>, f: (a: A) => B): Sample<R, B> {
67
- return new Sample(
68
- f(ma.value),
69
- ma.shrink.map((v) => v.map((sample) => sample.map(f))),
70
- );
69
+ export function map<A, B>(f: (a: A) => B) {
70
+ return <R>(ma: Sample<R, A>): Sample<R, B> => {
71
+ return new Sample(
72
+ f(ma.value),
73
+ ma.shrink.map((v) => v.map((sample) => sample.map(f))),
74
+ );
75
+ };
71
76
  }
72
77
 
73
78
  /**
74
- * @tsplus fluent fncts.test.Sample shrinkSearch
79
+ * @tsplus pipeable fncts.test.Sample shrinkSearch
75
80
  */
76
- export function shrinkSearch_<R, A>(ma: Sample<R, A>, p: Predicate<A>): Stream<R, never, A> {
77
- if (!p(ma.value)) {
78
- return Stream.succeedNow(ma.value);
79
- } else {
80
- return Stream.succeedNow(ma.value).concat(
81
- ma.shrink
82
- .takeUntil((maybeSample) =>
83
- maybeSample.match(
84
- () => false,
85
- (v) => p(v.value),
86
- ),
87
- )
88
- .flatMap((maybeSample) => maybeSample.map((sample) => sample.shrinkSearch(p)).getOrElse(() => Stream.empty)),
89
- );
90
- }
81
+ export function shrinkSearch<A>(p: Predicate<A>) {
82
+ return <R>(ma: Sample<R, A>): Stream<R, never, A> => {
83
+ if (!p(ma.value)) {
84
+ return Stream.succeedNow(ma.value);
85
+ } else {
86
+ return Stream.succeedNow(ma.value).concat(
87
+ ma.shrink
88
+ .takeUntil((maybeSample) =>
89
+ maybeSample.match(
90
+ () => false,
91
+ (v) => p(v.value),
92
+ ),
93
+ )
94
+ .flatMap((maybeSample) => maybeSample.map((sample) => sample.shrinkSearch(p)).getOrElse(() => Stream.empty)),
95
+ );
96
+ }
97
+ };
91
98
  }
92
99
 
93
100
  /**
@@ -102,17 +109,21 @@ export function unfold<R, A, S>(s: S, f: (s: S) => readonly [A, Stream<R, never,
102
109
  }
103
110
 
104
111
  /**
105
- * @tsplus fluent fncts.test.Sample zip
112
+ * @tsplus pipeable fncts.test.Sample zip
106
113
  */
107
- export function zip<R, A, R1, B>(ma: Sample<R, A>, mb: Sample<R1, B>): Sample<R | R1, readonly [A, B]> {
108
- return ma.zipWith(mb, tuple);
114
+ export function zip<R1, B>(mb: Sample<R1, B>) {
115
+ return <R, A>(ma: Sample<R, A>): Sample<R | R1, readonly [A, B]> => {
116
+ return ma.zipWith(mb, tuple);
117
+ };
109
118
  }
110
119
 
111
120
  /**
112
- * @tsplus fluent fncts.test.Sample zipWith
121
+ * @tsplus pipeable fncts.test.Sample zipWith
113
122
  */
114
- export function zipWith_<R, A, R1, B, C>(ma: Sample<R, A>, mb: Sample<R1, B>, f: (a: A, b: B) => C): Sample<R | R1, C> {
115
- return ma.flatMap((a) => map_(mb, (b) => f(a, b)));
123
+ export function zipWith<A, R1, B, C>(mb: Sample<R1, B>, f: (a: A, b: B) => C) {
124
+ return <R>(ma: Sample<R, A>): Sample<R | R1, C> => {
125
+ return ma.flatMap((a) => mb.map((b) => f(a, b)));
126
+ };
116
127
  }
117
128
 
118
129
  /**