@fncts/test 0.0.20 → 0.0.22

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.
Files changed (459) hide show
  1. package/_cjs/api.cjs +39 -76
  2. package/_cjs/api.cjs.map +1 -1
  3. package/_cjs/control/AbstractRunnableSpec.cjs +1 -12
  4. package/_cjs/control/AbstractRunnableSpec.cjs.map +1 -1
  5. package/_cjs/control/Annotations/api.cjs +0 -12
  6. package/_cjs/control/Annotations/api.cjs.map +1 -1
  7. package/_cjs/control/Annotations/definition.cjs +0 -6
  8. package/_cjs/control/Annotations/definition.cjs.map +1 -1
  9. package/_cjs/control/Annotations/live.cjs +6 -29
  10. package/_cjs/control/Annotations/live.cjs.map +1 -1
  11. package/_cjs/control/Annotations.cjs +0 -6
  12. package/_cjs/control/Annotations.cjs.map +1 -1
  13. package/_cjs/control/Assertion/api.cjs +50 -100
  14. package/_cjs/control/Assertion/api.cjs.map +1 -1
  15. package/_cjs/control/Assertion/definition.cjs +0 -8
  16. package/_cjs/control/Assertion/definition.cjs.map +1 -1
  17. package/_cjs/control/Assertion.cjs +0 -4
  18. package/_cjs/control/Assertion.cjs.map +1 -1
  19. package/_cjs/control/AssertionIO/api.cjs +20 -26
  20. package/_cjs/control/AssertionIO/api.cjs.map +1 -1
  21. package/_cjs/control/AssertionIO/definition.cjs +0 -8
  22. package/_cjs/control/AssertionIO/definition.cjs.map +1 -1
  23. package/_cjs/control/AssertionIO.cjs +0 -4
  24. package/_cjs/control/AssertionIO.cjs.map +1 -1
  25. package/_cjs/control/DefaultRunnableSpec.cjs +0 -12
  26. package/_cjs/control/DefaultRunnableSpec.cjs.map +1 -1
  27. package/_cjs/control/DefaultTestReporter/definition.cjs.map +1 -1
  28. package/_cjs/control/DefaultTestReporter/render.cjs +54 -123
  29. package/_cjs/control/DefaultTestReporter/render.cjs.map +1 -1
  30. package/_cjs/control/DefaultTestReporter.cjs +0 -4
  31. package/_cjs/control/DefaultTestReporter.cjs.map +1 -1
  32. package/_cjs/control/FreeBooleanAlgebraIO/api.cjs +20 -36
  33. package/_cjs/control/FreeBooleanAlgebraIO/api.cjs.map +1 -1
  34. package/_cjs/control/FreeBooleanAlgebraIO/definition.cjs.map +1 -1
  35. package/_cjs/control/FreeBooleanAlgebraIO.cjs +0 -4
  36. package/_cjs/control/FreeBooleanAlgebraIO.cjs.map +1 -1
  37. package/_cjs/control/Gen/api.cjs +533 -200
  38. package/_cjs/control/Gen/api.cjs.map +1 -1
  39. package/_cjs/control/Gen/definition.cjs +0 -3
  40. package/_cjs/control/Gen/definition.cjs.map +1 -1
  41. package/_cjs/control/Gen.cjs +0 -97
  42. package/_cjs/control/Gen.cjs.map +1 -1
  43. package/_cjs/control/Live/definition.cjs +5 -23
  44. package/_cjs/control/Live/definition.cjs.map +1 -1
  45. package/_cjs/control/Live.cjs +0 -2
  46. package/_cjs/control/Live.cjs.map +1 -1
  47. package/_cjs/control/RunnableSpec.cjs +8 -28
  48. package/_cjs/control/RunnableSpec.cjs.map +1 -1
  49. package/_cjs/control/Sample/api.cjs +66 -107
  50. package/_cjs/control/Sample/api.cjs.map +1 -1
  51. package/_cjs/control/Sample/definition.cjs +0 -3
  52. package/_cjs/control/Sample/definition.cjs.map +1 -1
  53. package/_cjs/control/Sample.cjs +0 -4
  54. package/_cjs/control/Sample.cjs.map +1 -1
  55. package/_cjs/control/Sized/api.cjs +0 -8
  56. package/_cjs/control/Sized/api.cjs.map +1 -1
  57. package/_cjs/control/Sized/definition.cjs +0 -6
  58. package/_cjs/control/Sized/definition.cjs.map +1 -1
  59. package/_cjs/control/Sized/live.cjs +3 -15
  60. package/_cjs/control/Sized/live.cjs.map +1 -1
  61. package/_cjs/control/Sized.cjs +0 -6
  62. package/_cjs/control/Sized.cjs.map +1 -1
  63. package/_cjs/control/Spec/api.cjs +322 -367
  64. package/_cjs/control/Spec/api.cjs.map +1 -1
  65. package/_cjs/control/Spec/definition.cjs +6 -45
  66. package/_cjs/control/Spec/definition.cjs.map +1 -1
  67. package/_cjs/control/Spec.cjs +0 -4
  68. package/_cjs/control/Spec.cjs.map +1 -1
  69. package/_cjs/control/SummaryBuilder.cjs +10 -31
  70. package/_cjs/control/SummaryBuilder.cjs.map +1 -1
  71. package/_cjs/control/Test.cjs +1 -11
  72. package/_cjs/control/Test.cjs.map +1 -1
  73. package/_cjs/control/TestAnnotationRenderer/api.cjs +20 -45
  74. package/_cjs/control/TestAnnotationRenderer/api.cjs.map +1 -1
  75. package/_cjs/control/TestAnnotationRenderer/definition.cjs +4 -20
  76. package/_cjs/control/TestAnnotationRenderer/definition.cjs.map +1 -1
  77. package/_cjs/control/TestAnnotationRenderer.cjs +0 -4
  78. package/_cjs/control/TestAnnotationRenderer.cjs.map +1 -1
  79. package/_cjs/control/TestAspect/api.cjs +14 -55
  80. package/_cjs/control/TestAspect/api.cjs.map +1 -1
  81. package/_cjs/control/TestAspect.cjs +0 -4
  82. package/_cjs/control/TestAspect.cjs.map +1 -1
  83. package/_cjs/control/TestClock/api.cjs +1 -22
  84. package/_cjs/control/TestClock/api.cjs.map +1 -1
  85. package/_cjs/control/TestClock/definition.cjs +50 -110
  86. package/_cjs/control/TestClock/definition.cjs.map +1 -1
  87. package/_cjs/control/TestClock.cjs +0 -4
  88. package/_cjs/control/TestClock.cjs.map +1 -1
  89. package/_cjs/control/TestConsole/api.cjs +3 -21
  90. package/_cjs/control/TestConsole/api.cjs.map +1 -1
  91. package/_cjs/control/TestConsole/definition.cjs +23 -48
  92. package/_cjs/control/TestConsole/definition.cjs.map +1 -1
  93. package/_cjs/control/TestConsole.cjs +0 -4
  94. package/_cjs/control/TestConsole.cjs.map +1 -1
  95. package/_cjs/control/TestEnvironment.cjs +3 -15
  96. package/_cjs/control/TestEnvironment.cjs.map +1 -1
  97. package/_cjs/control/TestExecutor.cjs +3 -17
  98. package/_cjs/control/TestExecutor.cjs.map +1 -1
  99. package/_cjs/control/TestLogger.cjs +2 -17
  100. package/_cjs/control/TestLogger.cjs.map +1 -1
  101. package/_cjs/control/TestRandom/api.cjs +9 -39
  102. package/_cjs/control/TestRandom/api.cjs.map +1 -1
  103. package/_cjs/control/TestRandom/definition.cjs +61 -145
  104. package/_cjs/control/TestRandom/definition.cjs.map +1 -1
  105. package/_cjs/control/TestRandom.cjs +0 -4
  106. package/_cjs/control/TestRandom.cjs.map +1 -1
  107. package/_cjs/control/TestRenderer/ConsoleRenderer.cjs +11 -36
  108. package/_cjs/control/TestRenderer/ConsoleRenderer.cjs.map +1 -1
  109. package/_cjs/control/TestRunner.cjs +2 -19
  110. package/_cjs/control/TestRunner.cjs.map +1 -1
  111. package/_cjs/data/AssertionData.cjs +0 -14
  112. package/_cjs/data/AssertionData.cjs.map +1 -1
  113. package/_cjs/data/AssertionResult.cjs +0 -8
  114. package/_cjs/data/AssertionResult.cjs.map +1 -1
  115. package/_cjs/data/AssertionValue/api.cjs +23 -30
  116. package/_cjs/data/AssertionValue/api.cjs.map +1 -1
  117. package/_cjs/data/AssertionValue/definition.cjs +0 -8
  118. package/_cjs/data/AssertionValue/definition.cjs.map +1 -1
  119. package/_cjs/data/AssertionValue.cjs +0 -4
  120. package/_cjs/data/AssertionValue.cjs.map +1 -1
  121. package/_cjs/data/ExecutedSpec/api.cjs +61 -75
  122. package/_cjs/data/ExecutedSpec/api.cjs.map +1 -1
  123. package/_cjs/data/ExecutedSpec/definition.cjs +3 -21
  124. package/_cjs/data/ExecutedSpec/definition.cjs.map +1 -1
  125. package/_cjs/data/ExecutedSpec.cjs +0 -4
  126. package/_cjs/data/ExecutedSpec.cjs.map +1 -1
  127. package/_cjs/data/ExecutionResult.cjs +42 -67
  128. package/_cjs/data/ExecutionResult.cjs.map +1 -1
  129. package/_cjs/data/FailureDetails.cjs +0 -3
  130. package/_cjs/data/FailureDetails.cjs.map +1 -1
  131. package/_cjs/data/FreeBooleanAlgebra/api.cjs +82 -115
  132. package/_cjs/data/FreeBooleanAlgebra/api.cjs.map +1 -1
  133. package/_cjs/data/FreeBooleanAlgebra/definition.cjs +4 -24
  134. package/_cjs/data/FreeBooleanAlgebra/definition.cjs.map +1 -1
  135. package/_cjs/data/FreeBooleanAlgebra.cjs +0 -4
  136. package/_cjs/data/FreeBooleanAlgebra.cjs.map +1 -1
  137. package/_cjs/data/GenFailureDetails.cjs +0 -3
  138. package/_cjs/data/GenFailureDetails.cjs.map +1 -1
  139. package/_cjs/data/LogLine/Fragment.cjs +2 -24
  140. package/_cjs/data/LogLine/Fragment.cjs.map +1 -1
  141. package/_cjs/data/LogLine/Line.cjs +11 -41
  142. package/_cjs/data/LogLine/Line.cjs.map +1 -1
  143. package/_cjs/data/LogLine/Message.cjs +32 -58
  144. package/_cjs/data/LogLine/Message.cjs.map +1 -1
  145. package/_cjs/data/LogLine/Style.cjs +10 -44
  146. package/_cjs/data/LogLine/Style.cjs.map +1 -1
  147. package/_cjs/data/LogLine/api.cjs +0 -15
  148. package/_cjs/data/LogLine/api.cjs.map +1 -1
  149. package/_cjs/data/LogLine.cjs +0 -4
  150. package/_cjs/data/LogLine.cjs.map +1 -1
  151. package/_cjs/data/Render/api.cjs +0 -4
  152. package/_cjs/data/Render/api.cjs.map +1 -1
  153. package/_cjs/data/Render/definition.cjs +3 -17
  154. package/_cjs/data/Render/definition.cjs.map +1 -1
  155. package/_cjs/data/Render.cjs +0 -4
  156. package/_cjs/data/Render.cjs.map +1 -1
  157. package/_cjs/data/RenderParam/api.cjs +3 -15
  158. package/_cjs/data/RenderParam/api.cjs.map +1 -1
  159. package/_cjs/data/RenderParam/definition.cjs +2 -12
  160. package/_cjs/data/RenderParam/definition.cjs.map +1 -1
  161. package/_cjs/data/RenderParam.cjs +0 -4
  162. package/_cjs/data/RenderParam.cjs.map +1 -1
  163. package/_cjs/data/Summary.cjs +0 -3
  164. package/_cjs/data/Summary.cjs.map +1 -1
  165. package/_cjs/data/TestAnnotation/api.cjs +2 -17
  166. package/_cjs/data/TestAnnotation/api.cjs.map +1 -1
  167. package/_cjs/data/TestAnnotation/definition.cjs +4 -19
  168. package/_cjs/data/TestAnnotation/definition.cjs.map +1 -1
  169. package/_cjs/data/TestAnnotation.cjs +0 -4
  170. package/_cjs/data/TestAnnotation.cjs.map +1 -1
  171. package/_cjs/data/TestAnnotationMap.cjs +4 -19
  172. package/_cjs/data/TestAnnotationMap.cjs.map +1 -1
  173. package/_cjs/data/TestArgs/definition.cjs +0 -3
  174. package/_cjs/data/TestArgs/definition.cjs.map +1 -1
  175. package/_cjs/data/TestArgs.cjs +0 -2
  176. package/_cjs/data/TestArgs.cjs.map +1 -1
  177. package/_cjs/data/TestConfig.cjs +0 -17
  178. package/_cjs/data/TestConfig.cjs.map +1 -1
  179. package/_cjs/data/TestFailure.cjs +2 -23
  180. package/_cjs/data/TestFailure.cjs.map +1 -1
  181. package/_cjs/data/TestSuccess.cjs +2 -16
  182. package/_cjs/data/TestSuccess.cjs.map +1 -1
  183. package/_cjs/data/TestTimeoutException.cjs +0 -3
  184. package/_cjs/data/TestTimeoutException.cjs.map +1 -1
  185. package/_cjs/demo.cjs +5 -15
  186. package/_cjs/demo.cjs.map +1 -1
  187. package/_cjs/util/math.cjs +20 -148
  188. package/_cjs/util/math.cjs.map +1 -1
  189. package/_mjs/api.mjs +37 -40
  190. package/_mjs/api.mjs.map +1 -1
  191. package/_mjs/control/AbstractRunnableSpec.mjs +1 -7
  192. package/_mjs/control/AbstractRunnableSpec.mjs.map +1 -1
  193. package/_mjs/control/Annotations/api.mjs +0 -4
  194. package/_mjs/control/Annotations/api.mjs.map +1 -1
  195. package/_mjs/control/Annotations/definition.mjs +0 -2
  196. package/_mjs/control/Annotations/definition.mjs.map +1 -1
  197. package/_mjs/control/Annotations/live.mjs +6 -11
  198. package/_mjs/control/Annotations/live.mjs.map +1 -1
  199. package/_mjs/control/Annotations.mjs.map +1 -1
  200. package/_mjs/control/Assertion/api.mjs +43 -46
  201. package/_mjs/control/Assertion/api.mjs.map +1 -1
  202. package/_mjs/control/Assertion/definition.mjs +0 -2
  203. package/_mjs/control/Assertion/definition.mjs.map +1 -1
  204. package/_mjs/control/Assertion.mjs.map +1 -1
  205. package/_mjs/control/AssertionIO/api.mjs +17 -14
  206. package/_mjs/control/AssertionIO/api.mjs.map +1 -1
  207. package/_mjs/control/AssertionIO/definition.mjs +0 -3
  208. package/_mjs/control/AssertionIO/definition.mjs.map +1 -1
  209. package/_mjs/control/AssertionIO.mjs.map +1 -1
  210. package/_mjs/control/DefaultRunnableSpec.mjs +0 -1
  211. package/_mjs/control/DefaultRunnableSpec.mjs.map +1 -1
  212. package/_mjs/control/DefaultTestReporter/definition.mjs.map +1 -1
  213. package/_mjs/control/DefaultTestReporter/render.mjs +54 -87
  214. package/_mjs/control/DefaultTestReporter/render.mjs.map +1 -1
  215. package/_mjs/control/DefaultTestReporter.mjs.map +1 -1
  216. package/_mjs/control/FreeBooleanAlgebraIO/api.mjs +18 -22
  217. package/_mjs/control/FreeBooleanAlgebraIO/api.mjs.map +1 -1
  218. package/_mjs/control/FreeBooleanAlgebraIO/definition.mjs.map +1 -1
  219. package/_mjs/control/FreeBooleanAlgebraIO.mjs.map +1 -1
  220. package/_mjs/control/Gen/api.mjs +462 -138
  221. package/_mjs/control/Gen/api.mjs.map +1 -1
  222. package/_mjs/control/Gen/definition.mjs +0 -1
  223. package/_mjs/control/Gen/definition.mjs.map +1 -1
  224. package/_mjs/control/Gen.mjs +1 -10
  225. package/_mjs/control/Gen.mjs.map +1 -1
  226. package/_mjs/control/Live/definition.mjs +5 -10
  227. package/_mjs/control/Live/definition.mjs.map +1 -1
  228. package/_mjs/control/Live.mjs.map +1 -1
  229. package/_mjs/control/RunnableSpec.mjs +8 -11
  230. package/_mjs/control/RunnableSpec.mjs.map +1 -1
  231. package/_mjs/control/Sample/api.mjs +57 -73
  232. package/_mjs/control/Sample/api.mjs.map +1 -1
  233. package/_mjs/control/Sample/definition.mjs +0 -1
  234. package/_mjs/control/Sample/definition.mjs.map +1 -1
  235. package/_mjs/control/Sample.mjs.map +1 -1
  236. package/_mjs/control/Sized/api.mjs +0 -2
  237. package/_mjs/control/Sized/api.mjs.map +1 -1
  238. package/_mjs/control/Sized/definition.mjs +0 -2
  239. package/_mjs/control/Sized/definition.mjs.map +1 -1
  240. package/_mjs/control/Sized/live.mjs +3 -6
  241. package/_mjs/control/Sized/live.mjs.map +1 -1
  242. package/_mjs/control/Sized.mjs.map +1 -1
  243. package/_mjs/control/Spec/api.mjs +300 -309
  244. package/_mjs/control/Spec/api.mjs.map +1 -1
  245. package/_mjs/control/Spec/definition.mjs +6 -31
  246. package/_mjs/control/Spec/definition.mjs.map +1 -1
  247. package/_mjs/control/Spec.mjs.map +1 -1
  248. package/_mjs/control/SummaryBuilder.mjs +10 -15
  249. package/_mjs/control/SummaryBuilder.mjs.map +1 -1
  250. package/_mjs/control/Test.mjs +1 -2
  251. package/_mjs/control/Test.mjs.map +1 -1
  252. package/_mjs/control/TestAnnotationRenderer/api.mjs +20 -34
  253. package/_mjs/control/TestAnnotationRenderer/api.mjs.map +1 -1
  254. package/_mjs/control/TestAnnotationRenderer/definition.mjs +4 -10
  255. package/_mjs/control/TestAnnotationRenderer/definition.mjs.map +1 -1
  256. package/_mjs/control/TestAnnotationRenderer.mjs.map +1 -1
  257. package/_mjs/control/TestAspect/api.mjs +14 -18
  258. package/_mjs/control/TestAspect/api.mjs.map +1 -1
  259. package/_mjs/control/TestAspect.mjs.map +1 -1
  260. package/_mjs/control/TestClock/api.mjs +1 -5
  261. package/_mjs/control/TestClock/api.mjs.map +1 -1
  262. package/_mjs/control/TestClock/definition.mjs +50 -72
  263. package/_mjs/control/TestClock/definition.mjs.map +1 -1
  264. package/_mjs/control/TestClock.mjs.map +1 -1
  265. package/_mjs/control/TestConsole/api.mjs +3 -6
  266. package/_mjs/control/TestConsole/api.mjs.map +1 -1
  267. package/_mjs/control/TestConsole/definition.mjs +23 -32
  268. package/_mjs/control/TestConsole/definition.mjs.map +1 -1
  269. package/_mjs/control/TestConsole.mjs.map +1 -1
  270. package/_mjs/control/TestEnvironment.mjs +3 -3
  271. package/_mjs/control/TestEnvironment.mjs.map +1 -1
  272. package/_mjs/control/TestExecutor.mjs +3 -3
  273. package/_mjs/control/TestExecutor.mjs.map +1 -1
  274. package/_mjs/control/TestLogger.mjs +2 -7
  275. package/_mjs/control/TestLogger.mjs.map +1 -1
  276. package/_mjs/control/TestRandom/api.mjs +9 -19
  277. package/_mjs/control/TestRandom/api.mjs.map +1 -1
  278. package/_mjs/control/TestRandom/definition.mjs +61 -121
  279. package/_mjs/control/TestRandom/definition.mjs.map +1 -1
  280. package/_mjs/control/TestRandom.mjs.map +1 -1
  281. package/_mjs/control/TestRenderer/ConsoleRenderer.mjs +11 -21
  282. package/_mjs/control/TestRenderer/ConsoleRenderer.mjs.map +1 -1
  283. package/_mjs/control/TestRunner.mjs +2 -6
  284. package/_mjs/control/TestRunner.mjs.map +1 -1
  285. package/_mjs/data/AssertionData.mjs +0 -5
  286. package/_mjs/data/AssertionData.mjs.map +1 -1
  287. package/_mjs/data/AssertionResult.mjs +0 -2
  288. package/_mjs/data/AssertionResult.mjs.map +1 -1
  289. package/_mjs/data/AssertionValue/api.mjs +23 -20
  290. package/_mjs/data/AssertionValue/api.mjs.map +1 -1
  291. package/_mjs/data/AssertionValue/definition.mjs +0 -2
  292. package/_mjs/data/AssertionValue/definition.mjs.map +1 -1
  293. package/_mjs/data/AssertionValue.mjs.map +1 -1
  294. package/_mjs/data/ExecutedSpec/api.mjs +55 -57
  295. package/_mjs/data/ExecutedSpec/api.mjs.map +1 -1
  296. package/_mjs/data/ExecutedSpec/definition.mjs +5 -13
  297. package/_mjs/data/ExecutedSpec/definition.mjs.map +1 -1
  298. package/_mjs/data/ExecutedSpec.mjs.map +1 -1
  299. package/_mjs/data/ExecutionResult.mjs +40 -52
  300. package/_mjs/data/ExecutionResult.mjs.map +1 -1
  301. package/_mjs/data/FailureDetails.mjs +0 -1
  302. package/_mjs/data/FailureDetails.mjs.map +1 -1
  303. package/_mjs/data/FreeBooleanAlgebra/api.mjs +70 -87
  304. package/_mjs/data/FreeBooleanAlgebra/api.mjs.map +1 -1
  305. package/_mjs/data/FreeBooleanAlgebra/definition.mjs +8 -16
  306. package/_mjs/data/FreeBooleanAlgebra/definition.mjs.map +1 -1
  307. package/_mjs/data/FreeBooleanAlgebra.mjs.map +1 -1
  308. package/_mjs/data/GenFailureDetails.mjs +0 -1
  309. package/_mjs/data/GenFailureDetails.mjs.map +1 -1
  310. package/_mjs/data/LogLine/Fragment.mjs +2 -11
  311. package/_mjs/data/LogLine/Fragment.mjs.map +1 -1
  312. package/_mjs/data/LogLine/Line.mjs +11 -24
  313. package/_mjs/data/LogLine/Line.mjs.map +1 -1
  314. package/_mjs/data/LogLine/Message.mjs +26 -36
  315. package/_mjs/data/LogLine/Message.mjs.map +1 -1
  316. package/_mjs/data/LogLine/Style.mjs +10 -39
  317. package/_mjs/data/LogLine/Style.mjs.map +1 -1
  318. package/_mjs/data/LogLine/api.mjs.map +1 -1
  319. package/_mjs/data/LogLine.mjs.map +1 -1
  320. package/_mjs/data/Render/api.mjs +0 -2
  321. package/_mjs/data/Render/api.mjs.map +1 -1
  322. package/_mjs/data/Render/definition.mjs +3 -9
  323. package/_mjs/data/Render/definition.mjs.map +1 -1
  324. package/_mjs/data/Render.mjs.map +1 -1
  325. package/_mjs/data/RenderParam/api.mjs +3 -10
  326. package/_mjs/data/RenderParam/api.mjs.map +1 -1
  327. package/_mjs/data/RenderParam/definition.mjs +4 -8
  328. package/_mjs/data/RenderParam/definition.mjs.map +1 -1
  329. package/_mjs/data/RenderParam.mjs.map +1 -1
  330. package/_mjs/data/Summary.mjs +0 -1
  331. package/_mjs/data/Summary.mjs.map +1 -1
  332. package/_mjs/data/TestAnnotation/api.mjs +2 -8
  333. package/_mjs/data/TestAnnotation/api.mjs.map +1 -1
  334. package/_mjs/data/TestAnnotation/definition.mjs +4 -8
  335. package/_mjs/data/TestAnnotation/definition.mjs.map +1 -1
  336. package/_mjs/data/TestAnnotation.mjs.map +1 -1
  337. package/_mjs/data/TestAnnotationMap.mjs +4 -10
  338. package/_mjs/data/TestAnnotationMap.mjs.map +1 -1
  339. package/_mjs/data/TestArgs/definition.mjs +0 -1
  340. package/_mjs/data/TestArgs/definition.mjs.map +1 -1
  341. package/_mjs/data/TestArgs.mjs.map +1 -1
  342. package/_mjs/data/TestConfig.mjs +0 -8
  343. package/_mjs/data/TestConfig.mjs.map +1 -1
  344. package/_mjs/data/TestFailure.mjs +4 -12
  345. package/_mjs/data/TestFailure.mjs.map +1 -1
  346. package/_mjs/data/TestSuccess.mjs +4 -10
  347. package/_mjs/data/TestSuccess.mjs.map +1 -1
  348. package/_mjs/data/TestTimeoutException.mjs +0 -1
  349. package/_mjs/data/TestTimeoutException.mjs.map +1 -1
  350. package/_mjs/demo.mjs +5 -8
  351. package/_mjs/demo.mjs.map +1 -1
  352. package/_mjs/util/math.mjs +20 -117
  353. package/_mjs/util/math.mjs.map +1 -1
  354. package/_src/api.ts +36 -35
  355. package/_src/control/AbstractRunnableSpec.ts +0 -6
  356. package/_src/control/Annotations/live.ts +4 -10
  357. package/_src/control/Assertion/api.ts +36 -25
  358. package/_src/control/AssertionIO/api.ts +23 -17
  359. package/_src/control/DefaultTestReporter/render.ts +2 -12
  360. package/_src/control/FreeBooleanAlgebraIO/api.ts +12 -14
  361. package/_src/control/Gen/api.ts +476 -71
  362. package/_src/control/Gen.ts +0 -10
  363. package/_src/control/Live/definition.ts +0 -4
  364. package/_src/control/RunnableSpec.ts +1 -1
  365. package/_src/control/Sample/api.ts +78 -67
  366. package/_src/control/Spec/api.ts +235 -222
  367. package/_src/control/Spec/definition.ts +0 -2
  368. package/_src/control/SummaryBuilder.ts +0 -1
  369. package/_src/control/TestAnnotationRenderer/api.ts +17 -15
  370. package/_src/control/TestAnnotationRenderer/definition.ts +0 -2
  371. package/_src/control/TestAspect/api.ts +2 -3
  372. package/_src/control/TestClock/definition.ts +13 -25
  373. package/_src/control/TestConsole/definition.ts +1 -2
  374. package/_src/control/TestLogger.ts +0 -2
  375. package/_src/control/TestRandom/api.ts +5 -0
  376. package/_src/control/TestRandom/definition.ts +3 -37
  377. package/_src/control/TestRenderer/ConsoleRenderer.ts +0 -1
  378. package/_src/control/TestRunner.ts +0 -3
  379. package/_src/data/AssertionValue/api.ts +27 -23
  380. package/_src/data/AssertionValue/definition.ts +0 -1
  381. package/_src/data/ExecutedSpec/api.ts +41 -36
  382. package/_src/data/ExecutionResult.ts +54 -51
  383. package/_src/data/FreeBooleanAlgebra/api.ts +68 -58
  384. package/_src/data/LogLine/Line.ts +5 -3
  385. package/_src/data/LogLine/Message.ts +26 -18
  386. package/_src/data/LogLine/Style.ts +0 -1
  387. package/_src/data/Render/definition.ts +0 -2
  388. package/_src/data/RenderParam/api.ts +1 -1
  389. package/_src/data/TestAnnotation/api.ts +4 -2
  390. package/_src/data/TestAnnotation/definition.ts +0 -3
  391. package/_src/data/TestAnnotationMap.ts +2 -8
  392. package/_src/demo.ts +3 -4
  393. package/_src/util/math.ts +31 -17
  394. package/api.d.ts +12 -12
  395. package/control/AbstractRunnableSpec.d.ts +0 -1
  396. package/control/Annotations/live.d.ts +1 -1
  397. package/control/Assertion/api.d.ts +16 -12
  398. package/control/AssertionIO/api.d.ts +8 -8
  399. package/control/FreeBooleanAlgebraIO/api.d.ts +6 -6
  400. package/control/Gen/api.d.ts +216 -33
  401. package/control/Gen.d.ts +0 -7
  402. package/control/Sample/api.d.ts +14 -14
  403. package/control/Spec/api.d.ts +38 -41
  404. package/control/TestAnnotationRenderer/api.d.ts +3 -3
  405. package/control/TestClock/definition.d.ts +2 -2
  406. package/control/TestConsole/definition.d.ts +1 -1
  407. package/control/TestRandom/definition.d.ts +1 -1
  408. package/control/TestRunner.d.ts +1 -3
  409. package/data/AssertionValue/api.d.ts +8 -8
  410. package/data/ExecutedSpec/api.d.ts +8 -8
  411. package/data/ExecutionResult.d.ts +4 -4
  412. package/data/FreeBooleanAlgebra/api.d.ts +20 -20
  413. package/data/LogLine/Line.d.ts +2 -2
  414. package/data/LogLine/Message.d.ts +10 -10
  415. package/data/TestAnnotation/api.d.ts +1 -1
  416. package/data/TestAnnotation/definition.d.ts +2 -2
  417. package/package.json +4 -4
  418. package/_cjs/control/Gen/api/array.cjs +0 -50
  419. package/_cjs/control/Gen/api/array.cjs.map +0 -1
  420. package/_cjs/control/Gen/api/char.cjs +0 -129
  421. package/_cjs/control/Gen/api/char.cjs.map +0 -1
  422. package/_cjs/control/Gen/api/conc.cjs +0 -73
  423. package/_cjs/control/Gen/api/conc.cjs.map +0 -1
  424. package/_cjs/control/Gen/api/double.cjs +0 -82
  425. package/_cjs/control/Gen/api/double.cjs.map +0 -1
  426. package/_cjs/control/Gen/api/float.cjs +0 -55
  427. package/_cjs/control/Gen/api/float.cjs.map +0 -1
  428. package/_cjs/control/Gen/api/string.cjs +0 -102
  429. package/_cjs/control/Gen/api/string.cjs.map +0 -1
  430. package/_cjs/control/Gen/api/struct.cjs +0 -36
  431. package/_cjs/control/Gen/api/struct.cjs.map +0 -1
  432. package/_mjs/control/Gen/api/array.mjs +0 -31
  433. package/_mjs/control/Gen/api/array.mjs.map +0 -1
  434. package/_mjs/control/Gen/api/char.mjs +0 -95
  435. package/_mjs/control/Gen/api/char.mjs.map +0 -1
  436. package/_mjs/control/Gen/api/conc.mjs +0 -49
  437. package/_mjs/control/Gen/api/conc.mjs.map +0 -1
  438. package/_mjs/control/Gen/api/double.mjs +0 -60
  439. package/_mjs/control/Gen/api/double.mjs.map +0 -1
  440. package/_mjs/control/Gen/api/float.mjs +0 -41
  441. package/_mjs/control/Gen/api/float.mjs.map +0 -1
  442. package/_mjs/control/Gen/api/string.mjs +0 -72
  443. package/_mjs/control/Gen/api/string.mjs.map +0 -1
  444. package/_mjs/control/Gen/api/struct.mjs +0 -18
  445. package/_mjs/control/Gen/api/struct.mjs.map +0 -1
  446. package/_src/control/Gen/api/array.ts +0 -31
  447. package/_src/control/Gen/api/char.ts +0 -83
  448. package/_src/control/Gen/api/conc.ts +0 -48
  449. package/_src/control/Gen/api/double.ts +0 -64
  450. package/_src/control/Gen/api/float.ts +0 -36
  451. package/_src/control/Gen/api/string.ts +0 -71
  452. package/_src/control/Gen/api/struct.ts +0 -21
  453. package/control/Gen/api/array.d.ts +0 -18
  454. package/control/Gen/api/char.d.ts +0 -47
  455. package/control/Gen/api/conc.d.ts +0 -25
  456. package/control/Gen/api/double.d.ts +0 -13
  457. package/control/Gen/api/float.d.ts +0 -7
  458. package/control/Gen/api/string.d.ts +0 -48
  459. package/control/Gen/api/struct.d.ts +0 -8
@@ -30,60 +30,60 @@ export function annotated<R, E, T>(spec: PSpec<R, E, T>): PSpec<R | Annotations,
30
30
  }
31
31
 
32
32
  /**
33
- * @tsplus fluent fncts.test.PSpec combine
33
+ * @tsplus pipeable fncts.test.PSpec combine
34
34
  */
35
- export function combine_<R, E, T, R1, E1, T1>(
36
- self: PSpec<R, E, T>,
37
- that: PSpec<R1, E1, T1>,
38
- ): PSpec<R | R1, E | E1, T | T1> {
39
- if (self.caseValue.isMultiple() && that.caseValue.isMultiple()) {
40
- return MultipleCase<R | R1, E | E1, T | T1>(self.caseValue.specs.concat(that.caseValue.specs));
41
- }
42
- if (self.caseValue.isMultiple()) {
43
- return MultipleCase<R | R1, E | E1, T | T1>(self.caseValue.specs.append(that));
44
- }
45
- if (that.caseValue.isMultiple()) {
46
- return MultipleCase<R | R1, E | E1, T | T1>(that.caseValue.specs.prepend(self));
47
- }
48
- return MultipleCase(Conc<PSpec<R | R1, E | E1, T | T1>>(self, that));
35
+ export function combine<R1, E1, T1>(that: PSpec<R1, E1, T1>) {
36
+ return <R, E, T>(self: PSpec<R, E, T>): PSpec<R | R1, E | E1, T | T1> => {
37
+ if (self.caseValue.isMultiple() && that.caseValue.isMultiple()) {
38
+ return MultipleCase<R | R1, E | E1, T | T1>(self.caseValue.specs.concat(that.caseValue.specs));
39
+ }
40
+ if (self.caseValue.isMultiple()) {
41
+ return MultipleCase<R | R1, E | E1, T | T1>(self.caseValue.specs.append(that));
42
+ }
43
+ if (that.caseValue.isMultiple()) {
44
+ return MultipleCase<R | R1, E | E1, T | T1>(that.caseValue.specs.prepend(self));
45
+ }
46
+ return MultipleCase(Conc<PSpec<R | R1, E | E1, T | T1>>(self, that));
47
+ };
49
48
  }
50
49
 
51
50
  /**
52
- * @tsplus fluent fncts.test.PSpec contramapEnvironment
51
+ * @tsplus pipeable fncts.test.PSpec contramapEnvironment
53
52
  */
54
- export function contramapEnvironment_<R, E, T, R0>(
55
- self: PSpec<R, E, T>,
56
- f: (r0: Environment<R0>) => Environment<R>,
57
- ): PSpec<R0, E, T> {
58
- return self.transform(
59
- matchTag(
60
- {
61
- Scoped: ({ scoped }) =>
62
- new ScopedCase(
63
- scoped.contramapEnvironment((r: Environment<R0 | Scope>) =>
64
- Environment.empty.add(r.get(Scope.Tag), Scope.Tag).union(f(r as Environment<R0>)),
53
+ export function contramapEnvironment<R, R0>(f: (r0: Environment<R0>) => Environment<R>) {
54
+ return <E, T>(self: PSpec<R, E, T>): PSpec<R0, E, T> => {
55
+ return self.transform(
56
+ matchTag(
57
+ {
58
+ Scoped: ({ scoped }) =>
59
+ new ScopedCase(
60
+ scoped.contramapEnvironment((r: Environment<R0 | Scope>) =>
61
+ Environment.empty.add(r.get(Scope.Tag), Scope.Tag).union(f(r as Environment<R0>)),
62
+ ),
65
63
  ),
66
- ),
67
- Test: ({ test, annotations }) => new TestCase(test.contramapEnvironment(f), annotations),
68
- },
69
- identity,
70
- ),
71
- );
64
+ Test: ({ test, annotations }) => new TestCase(test.contramapEnvironment(f), annotations),
65
+ },
66
+ identity,
67
+ ),
68
+ );
69
+ };
72
70
  }
73
71
 
74
72
  /**
75
- * @tsplus fluent fncts.test.PSpec countTests
73
+ * @tsplus pipeable fncts.test.PSpec countTests
76
74
  */
77
- export function countTests_<R, E, T>(spec: PSpec<R, E, T>, f: (t: T) => boolean): IO<R | Scope, E, number> {
78
- return spec.fold(
79
- matchTag({
80
- Exec: ({ spec }) => spec,
81
- Labeled: ({ spec }) => spec,
82
- Scoped: ({ scoped }) => scoped.flatten,
83
- Multiple: ({ specs }) => IO.sequenceIterable(specs).map((specs) => specs.foldLeft(0, (b, a) => b + a)),
84
- Test: ({ test }) => test.map((t) => (f(t) ? 1 : 0)),
85
- }),
86
- );
75
+ export function countTests<T>(f: (t: T) => boolean) {
76
+ return <R, E>(spec: PSpec<R, E, T>): IO<R | Scope, E, number> => {
77
+ return spec.fold(
78
+ matchTag({
79
+ Exec: ({ spec }) => spec,
80
+ Labeled: ({ spec }) => spec,
81
+ Scoped: ({ scoped }) => scoped.flatten,
82
+ Multiple: ({ specs }) => IO.sequenceIterable(specs).map((specs) => specs.foldLeft(0, (b, a) => b + a)),
83
+ Test: ({ test }) => test.map((t) => (f(t) ? 1 : 0)),
84
+ }),
85
+ );
86
+ };
87
87
  }
88
88
 
89
89
  /**
@@ -100,138 +100,145 @@ export function exec<R, E, T>(spec: PSpec<R, E, T>, exec: ExecutionStrategy): PS
100
100
  }
101
101
 
102
102
  /**
103
- * @tsplus fluent fncts.test.PSpec execute
103
+ * @tsplus pipeable fncts.test.PSpec execute
104
104
  */
105
- export function execute<R, E, T>(
106
- self: PSpec<R, E, T>,
107
- defExec: ExecutionStrategy,
108
- ): IO<R | Scope, never, PSpec<never, E, T>> {
109
- return IO.environmentWithIO((r: Environment<R | Scope>) =>
110
- self.provideEnvironment(r).foreachExec(IO.failCauseNow, IO.succeedNow, defExec),
111
- );
105
+ export function execute(defExec: ExecutionStrategy) {
106
+ return <R, E, T>(self: PSpec<R, E, T>): IO<R | Scope, never, PSpec<never, E, T>> => {
107
+ return IO.environmentWithIO((r: Environment<R | Scope>) =>
108
+ self.provideEnvironment(r).foreachExec(IO.failCauseNow, IO.succeedNow, defExec),
109
+ );
110
+ };
112
111
  }
113
112
 
114
113
  /**
115
- * @tsplus fluent fncts.test.PSpec filterAnnotations
114
+ * @tsplus pipeable fncts.test.PSpec filterAnnotations
116
115
  */
117
- export function filterAnnotations_<R, E, T, V>(
118
- spec: PSpec<R, E, T>,
119
- key: TestAnnotation<V>,
120
- f: (v: V) => boolean,
121
- ): Maybe<PSpec<R, E, T>> {
122
- return matchTag_(spec.caseValue, {
123
- Exec: ({ spec, exec }) => spec.filterAnnotations(key, f).map((spec) => ExecCase(spec, exec)),
124
- Labeled: ({ label, spec }) => spec.filterAnnotations(key, f).map((spec) => LabeledCase(spec, label)),
125
- Scoped: ({ scoped }) =>
126
- Just(ScopedCase(scoped.map((spec) => spec.filterAnnotations(key, f).getOrElse(Spec.empty)))),
127
- Multiple: ({ specs }) => {
128
- const filtered = specs.filterMap((spec) => spec.filterAnnotations(key, f));
129
- return filtered.isEmpty ? Nothing() : Just(MultipleCase(filtered));
130
- },
131
- Test: ({ test, annotations }) => (f(annotations.get(key)) ? Just(TestCase(test, annotations)) : Nothing()),
132
- });
116
+ export function filterAnnotations<V>(key: TestAnnotation<V>, f: (v: V) => boolean) {
117
+ return <R, E, T>(spec: PSpec<R, E, T>): Maybe<PSpec<R, E, T>> => {
118
+ return matchTag_(spec.caseValue, {
119
+ Exec: ({ spec, exec }) => spec.filterAnnotations(key, f).map((spec) => ExecCase(spec, exec)),
120
+ Labeled: ({ label, spec }) => spec.filterAnnotations(key, f).map((spec) => LabeledCase(spec, label)),
121
+ Scoped: ({ scoped }) =>
122
+ Just(ScopedCase(scoped.map((spec) => spec.filterAnnotations(key, f).getOrElse(Spec.empty)))),
123
+ Multiple: ({ specs }) => {
124
+ const filtered = specs.filterMap((spec) => spec.filterAnnotations(key, f));
125
+ return filtered.isEmpty ? Nothing() : Just(MultipleCase(filtered));
126
+ },
127
+ Test: ({ test, annotations }) => (f(annotations.get(key)) ? Just(TestCase(test, annotations)) : Nothing()),
128
+ });
129
+ };
133
130
  }
134
131
 
135
132
  /**
136
- * @tsplus fluent fncts.test.PSpec filterLabels
133
+ * @tsplus pipeable fncts.test.PSpec filterLabels
137
134
  */
138
- export function filterLabels_<R, E, T>(spec: PSpec<R, E, T>, f: (label: string) => boolean): Maybe<PSpec<R, E, T>> {
139
- return matchTag_(spec.caseValue, {
140
- Exec: ({ spec, exec }) => spec.filterLabels(f).map((spec) => ExecCase(spec, exec)),
141
- Labeled: ({ label, spec }) =>
142
- f(label) ? Just(LabeledCase(spec, label)) : spec.filterLabels(f).map((spec) => LabeledCase(spec, label)),
143
- Scoped: ({ scoped }) => Just(ScopedCase(scoped.map((spec) => spec.filterLabels(f).getOrElse(Spec.empty)))),
144
- Multiple: ({ specs }) => {
145
- const filtered = specs.filterMap((spec) => spec.filterLabels(f));
146
- return filtered.isEmpty ? Nothing() : Just(MultipleCase(filtered));
147
- },
148
- Test: () => Nothing(),
149
- });
135
+ export function filterLabels(f: (label: string) => boolean) {
136
+ return <R, E, T>(spec: PSpec<R, E, T>): Maybe<PSpec<R, E, T>> => {
137
+ return matchTag_(spec.caseValue, {
138
+ Exec: ({ spec, exec }) => spec.filterLabels(f).map((spec) => ExecCase(spec, exec)),
139
+ Labeled: ({ label, spec }) =>
140
+ f(label) ? Just(LabeledCase(spec, label)) : spec.filterLabels(f).map((spec) => LabeledCase(spec, label)),
141
+ Scoped: ({ scoped }) => Just(ScopedCase(scoped.map((spec) => spec.filterLabels(f).getOrElse(Spec.empty)))),
142
+ Multiple: ({ specs }) => {
143
+ const filtered = specs.filterMap((spec) => spec.filterLabels(f));
144
+ return filtered.isEmpty ? Nothing() : Just(MultipleCase(filtered));
145
+ },
146
+ Test: () => Nothing(),
147
+ });
148
+ };
150
149
  }
151
150
 
152
151
  /**
153
- * @tsplus fluent fncts.test.PSpec filterTags
152
+ * @tsplus pipeable fncts.test.PSpec filterTags
154
153
  */
155
- export function filterTags_<R, E, T>(spec: PSpec<R, E, T>, f: (tag: string) => boolean): Maybe<PSpec<R, E, T>> {
156
- return spec.filterAnnotations(TestAnnotation.Tagged, (v) => v.exists(f));
154
+ export function filterTags(f: (tag: string) => boolean) {
155
+ return <R, E, T>(spec: PSpec<R, E, T>): Maybe<PSpec<R, E, T>> => {
156
+ return spec.filterAnnotations(TestAnnotation.Tagged, (v) => v.some(f));
157
+ };
157
158
  }
158
159
 
159
160
  /**
160
- * @tsplus fluent fncts.test.PSpec filterByArgs
161
+ * @tsplus pipeable fncts.test.PSpec filterByArgs
161
162
  */
162
- export function filterByArgs<R, E>(spec: Spec<R, E>, args: TestArgs): Spec<R, E> {
163
- return spec
164
- .filterTags(args.tagSearchTerms.elem(String.Eq))
165
- .flatMap((spec) =>
166
- spec.filterLabels((label) => args.testSearchTerms.findIndex((term) => term.includes(label)) === -1),
167
- )
168
- .getOrElse(() => spec);
163
+ export function filterByArgs(args: TestArgs) {
164
+ return <R, E>(spec: Spec<R, E>): Spec<R, E> => {
165
+ return spec
166
+ .filterTags(args.tagSearchTerms.elem(String.Eq))
167
+ .flatMap((spec) =>
168
+ spec.filterLabels((label) => args.testSearchTerms.findIndex((term) => term.includes(label)) === -1),
169
+ )
170
+ .getOrElse(() => spec);
171
+ };
169
172
  }
170
173
 
171
174
  /**
172
- * @tsplus fluent fncts.test.PSpec fold
175
+ * @tsplus pipeable fncts.test.PSpec fold
173
176
  */
174
- export function fold_<R, E, T, Z>(spec: PSpec<R, E, T>, f: (_: SpecCase<R, E, T, Z>) => Z): Z {
175
- return matchTag_(spec.caseValue, {
176
- Exec: ({ exec, spec }) => f(new ExecCase(exec, spec.fold(f))),
177
- Labeled: ({ label, spec }) => f(new LabeledCase(label, spec.fold(f))),
178
- Scoped: ({ scoped }) => f(new ScopedCase(scoped.map((spec) => spec.fold(f)))),
179
- Multiple: ({ specs }) => f(new MultipleCase(specs.map((spec) => spec.fold(f)))),
180
- Test: (t) => f(t),
181
- });
177
+ export function fold<R, E, T, Z>(f: (_: SpecCase<R, E, T, Z>) => Z) {
178
+ return (spec: PSpec<R, E, T>): Z => {
179
+ return matchTag_(spec.caseValue, {
180
+ Exec: ({ exec, spec }) => f(new ExecCase(exec, spec.fold(f))),
181
+ Labeled: ({ label, spec }) => f(new LabeledCase(label, spec.fold(f))),
182
+ Scoped: ({ scoped }) => f(new ScopedCase(scoped.map((spec) => spec.fold(f)))),
183
+ Multiple: ({ specs }) => f(new MultipleCase(specs.map((spec) => spec.fold(f)))),
184
+ Test: (t) => f(t),
185
+ });
186
+ };
182
187
  }
183
188
 
184
189
  /**
185
- * @tsplus fluent fncts.test.PSpec foldScoped
190
+ * @tsplus pipeable fncts.test.PSpec foldScoped
186
191
  */
187
- export function foldScoped_<R, E, T, R1, E1, Z>(
188
- spec: PSpec<R, E, T>,
192
+ export function foldScoped<R, E, T, R1, E1, Z>(
189
193
  f: (_: SpecCase<R, E, T, Z>) => IO<R1 | Scope, E1, Z>,
190
194
  defExec: ExecutionStrategy,
191
- ): IO<R | R1 | Scope, E1, Z> {
192
- return matchTag_(spec.caseValue, {
193
- Exec: ({ exec, spec }) => spec.foldScoped(f, exec).flatMap((z) => f(new ExecCase(exec, z))),
194
- Labeled: ({ label, spec }) => spec.foldScoped(f, defExec).flatMap((z) => f(new LabeledCase(label, z))),
195
- Scoped: ({ scoped }) =>
196
- scoped.matchCauseIO(
197
- (cause) => f(new ScopedCase(IO.haltNow(cause))),
198
- (spec) => spec.foldScoped(f, defExec).flatMap((z) => f(new ScopedCase(IO.succeedNow(z)))),
199
- ),
200
- Multiple: ({ specs }) =>
201
- IO.foreachExec(specs, defExec, (spec) => spec.foldScoped(f, defExec).scoped).flatMap((zs) =>
202
- f(new MultipleCase(zs)),
203
- ),
204
- Test: f,
205
- });
195
+ ) {
196
+ return (spec: PSpec<R, E, T>): IO<R | R1 | Scope, E1, Z> => {
197
+ return matchTag_(spec.caseValue, {
198
+ Exec: ({ exec, spec }) => spec.foldScoped(f, exec).flatMap((z) => f(new ExecCase(exec, z))),
199
+ Labeled: ({ label, spec }) => spec.foldScoped(f, defExec).flatMap((z) => f(new LabeledCase(label, z))),
200
+ Scoped: ({ scoped }) =>
201
+ scoped.matchCauseIO(
202
+ (cause) => f(new ScopedCase(IO.haltNow(cause))),
203
+ (spec) => spec.foldScoped(f, defExec).flatMap((z) => f(new ScopedCase(IO.succeedNow(z)))),
204
+ ),
205
+ Multiple: ({ specs }) =>
206
+ IO.foreachExec(specs, defExec, (spec) => spec.foldScoped(f, defExec).scoped).flatMap((zs) =>
207
+ f(new MultipleCase(zs)),
208
+ ),
209
+ Test: f,
210
+ });
211
+ };
206
212
  }
207
213
 
208
214
  /**
209
- * @tsplus fluent fncts.test.PSpec foreachExec
215
+ * @tsplus pipeable fncts.test.PSpec foreachExec
210
216
  */
211
- export function foreachExec_<R, E, T, R1, E1, A, R2, E2, B>(
212
- spec: PSpec<R, E, T>,
217
+ export function foreachExec<E, T, R1, E1, A, R2, E2, B>(
213
218
  failure: (c: Cause<E>) => IO<R1, E1, A>,
214
219
  success: (t: T) => IO<R2, E2, B>,
215
220
  defExec: ExecutionStrategy,
216
- ): IO<R | R1 | R2 | Scope, never, PSpec<R | R1 | R2, E1 | E2, A | B>> {
217
- return spec.foldScoped(
218
- matchTag({
219
- Exec: ({ exec, spec }) => IO.succeedNow(ExecCase(spec, exec)),
220
- Labeled: ({ label, spec }) => IO.succeedNow(LabeledCase(spec, label)),
221
- Scoped: ({ scoped }) =>
222
- scoped.matchCause(
223
- (cause) => TestCase(failure(cause), TestAnnotationMap.empty),
224
- (t) => ScopedCase(IO.succeedNow(t)),
225
- ),
226
- Multiple: ({ specs }) => IO.succeedNow(MultipleCase(specs)),
227
- Test: ({ test, annotations }) =>
228
- test.matchCause(
229
- (cause) => TestCase(failure(cause), annotations),
230
- (t) => TestCase(success(t), annotations),
231
- ),
232
- }),
233
- defExec,
234
- );
221
+ ) {
222
+ return <R>(spec: PSpec<R, E, T>): IO<R | R1 | R2 | Scope, never, PSpec<R | R1 | R2, E1 | E2, A | B>> => {
223
+ return spec.foldScoped(
224
+ matchTag({
225
+ Exec: ({ exec, spec }) => IO.succeedNow(ExecCase(spec, exec)),
226
+ Labeled: ({ label, spec }) => IO.succeedNow(LabeledCase(spec, label)),
227
+ Scoped: ({ scoped }) =>
228
+ scoped.matchCause(
229
+ (cause) => TestCase(failure(cause), TestAnnotationMap.empty),
230
+ (t) => ScopedCase(IO.succeedNow(t)),
231
+ ),
232
+ Multiple: ({ specs }) => IO.succeedNow(MultipleCase(specs)),
233
+ Test: ({ test, annotations }) =>
234
+ test.matchCause(
235
+ (cause) => TestCase(failure(cause), annotations),
236
+ (t) => TestCase(success(t), annotations),
237
+ ),
238
+ }),
239
+ defExec,
240
+ );
241
+ };
235
242
  }
236
243
 
237
244
  /**
@@ -244,7 +251,6 @@ export function labeledCase<R, E, T>(spec: PSpec<R, E, T>, label: string): PSpec
244
251
  }
245
252
 
246
253
  /**
247
- * @tsplus fluent fncts.test.PSpec scoped
248
254
  * @tsplus static fncts.test.PSpecOps scoped
249
255
  * @tsplus static fncts.test.PSpec.ScopedCaseOps __call
250
256
  */
@@ -253,35 +259,38 @@ export function scoped<R, E, T>(managed: IO<R | Scope, E, PSpec<R, E, T>>): PSpe
253
259
  }
254
260
 
255
261
  /**
256
- * @tsplus fluent fncts.test.SpecCase mapError
262
+ * @tsplus pipeable fncts.test.SpecCase mapError
257
263
  */
258
- export function mapError<R, E, T, E1>(self: PSpec<R, E, T>, f: (e: E) => E1): PSpec<R, E1, T> {
259
- return self.transform(
260
- matchTag(
261
- {
262
- Scoped: ({ scoped }) => new ScopedCase(scoped.mapError(f)),
263
- Test: ({ test, annotations }) => new TestCase(test.mapError(f), annotations),
264
- },
265
- identity,
266
- ),
267
- );
264
+ export function mapError<E, E1>(f: (e: E) => E1) {
265
+ return <R, T>(self: PSpec<R, E, T>): PSpec<R, E1, T> => {
266
+ return self.transform(
267
+ matchTag(
268
+ {
269
+ Scoped: ({ scoped }) => new ScopedCase(scoped.mapError(f)),
270
+ Test: ({ test, annotations }) => new TestCase(test.mapError(f), annotations),
271
+ },
272
+ identity,
273
+ ),
274
+ );
275
+ };
268
276
  }
269
277
 
270
278
  /**
271
- * @tsplus fluent fncts.test.SpecCase map
279
+ * @tsplus pipeable fncts.test.SpecCase map
272
280
  */
273
- export function mapSpecCase_<R, E, T, A, B>(fa: SpecCase<R, E, T, A>, f: (a: A) => B): SpecCase<R, E, T, B> {
274
- return matchTag_(fa, {
275
- Exec: ({ exec, spec }) => new ExecCase(exec, f(spec)),
276
- Labeled: ({ label, spec }) => new LabeledCase(label, f(spec)),
277
- Scoped: ({ scoped }) => new ScopedCase(scoped.map(f)),
278
- Multiple: ({ specs }) => new MultipleCase(specs.map(f)),
279
- Test: ({ test, annotations }) => new TestCase(test, annotations),
280
- });
281
+ export function mapSpecCase<A, B>(f: (a: A) => B) {
282
+ return <R, E, T>(fa: SpecCase<R, E, T, A>): SpecCase<R, E, T, B> => {
283
+ return matchTag_(fa, {
284
+ Exec: ({ exec, spec }) => new ExecCase(exec, f(spec)),
285
+ Labeled: ({ label, spec }) => new LabeledCase(label, f(spec)),
286
+ Scoped: ({ scoped }) => new ScopedCase(scoped.map(f)),
287
+ Multiple: ({ specs }) => new MultipleCase(specs.map(f)),
288
+ Test: ({ test, annotations }) => new TestCase(test, annotations),
289
+ });
290
+ };
281
291
  }
282
292
 
283
293
  /**
284
- * @tsplus fluent fncts.test.PSpec multiple
285
294
  * @tsplus static fncts.test.PSpecOps multiple
286
295
  * @tsplus static fncts.test.PSpec.MultipleCaseOps __call
287
296
  */
@@ -290,32 +299,32 @@ export function multipleCase<R, E, T>(specs: Conc<PSpec<R, E, T>>): PSpec<R, E,
290
299
  }
291
300
 
292
301
  /**
293
- * @tsplus fluent fncts.test.PSpec provideEnvironment
302
+ * @tsplus pipeable fncts.test.PSpec provideEnvironment
294
303
  */
295
- export function provideEnvironment_<R, E, T>(self: PSpec<R, E, T>, r: Environment<R>): PSpec<never, E, T> {
296
- return self.contramapEnvironment(() => r);
304
+ export function provideEnvironment<R>(r: Environment<R>) {
305
+ return <E, T>(self: PSpec<R, E, T>): PSpec<never, E, T> => {
306
+ return self.contramapEnvironment(() => r);
307
+ };
297
308
  }
298
309
 
299
310
  /**
300
- * @tsplus fluent fncts.test.PSpec provideLayer
311
+ * @tsplus pipeable fncts.test.PSpec provideLayer
301
312
  */
302
- export function provideLayer_<RIn, E, ROut, E1, T>(
303
- self: PSpec<ROut, E1, T>,
304
- layer: Layer<RIn, E, ROut>,
305
- ): PSpec<RIn, E | E1, T> {
306
- return self.transform(
307
- matchTag(
308
- {
309
- Scoped: ({ scoped }) => new ScopedCase(scoped.provideLayer(Layer.environment<Scope>().and(layer))),
310
- Test: ({ test, annotations }) => new TestCase(test.provideLayer(layer), annotations),
311
- },
312
- identity,
313
- ),
314
- );
313
+ export function provideLayer<RIn, E, ROut>(layer: Layer<RIn, E, ROut>) {
314
+ return <E1, T>(self: PSpec<ROut, E1, T>): PSpec<RIn, E | E1, T> => {
315
+ return self.transform(
316
+ matchTag(
317
+ {
318
+ Scoped: ({ scoped }) => new ScopedCase(scoped.provideLayer(Layer.environment<Scope>().and(layer))),
319
+ Test: ({ test, annotations }) => new TestCase(test.provideLayer(layer), annotations),
320
+ },
321
+ identity,
322
+ ),
323
+ );
324
+ };
315
325
  }
316
326
 
317
327
  /**
318
- * @tsplus fluent fncts.test.PSpec test
319
328
  * @tsplus static fncts.test.PSpecOps test
320
329
  * @tsplus static fncts.test.PSpec.TestCaseOps __call
321
330
  */
@@ -324,58 +333,62 @@ export function testCase<R, E, T>(test: IO<R, E, T>, annotations: TestAnnotation
324
333
  }
325
334
 
326
335
  /**
327
- * @tsplus fluent fncts.test.PSpec transform
336
+ * @tsplus pipeable fncts.test.PSpec transform
328
337
  */
329
- export function transform_<R, E, T, R1, E1, T1>(
330
- spec: PSpec<R, E, T>,
338
+ export function transform<R, E, T, R1, E1, T1>(
331
339
  f: (_: SpecCase<R, E, T, PSpec<R1, E1, T1>>) => SpecCase<R1, E1, T1, PSpec<R1, E1, T1>>,
332
- ): PSpec<R1, E1, T1> {
333
- return matchTag_(spec.caseValue, {
334
- Exec: ({ exec, spec }) => new PSpec(f(new ExecCase(exec, spec.transform(f)))),
335
- Labeled: ({ label, spec }) => new PSpec(f(new LabeledCase(label, spec.transform(f)))),
336
- Scoped: ({ scoped }) => new PSpec(f(new ScopedCase(scoped.map((spec) => spec.transform(f))))),
337
- Multiple: ({ specs }) => new PSpec(f(new MultipleCase(specs.map((spec) => spec.transform(f))))),
338
- Test: (t) => new PSpec(f(t)),
339
- });
340
+ ) {
341
+ return (spec: PSpec<R, E, T>): PSpec<R1, E1, T1> => {
342
+ return matchTag_(spec.caseValue, {
343
+ Exec: ({ exec, spec }) => new PSpec(f(new ExecCase(exec, spec.transform(f)))),
344
+ Labeled: ({ label, spec }) => new PSpec(f(new LabeledCase(label, spec.transform(f)))),
345
+ Scoped: ({ scoped }) => new PSpec(f(new ScopedCase(scoped.map((spec) => spec.transform(f))))),
346
+ Multiple: ({ specs }) => new PSpec(f(new MultipleCase(specs.map((spec) => spec.transform(f))))),
347
+ Test: (t) => new PSpec(f(t)),
348
+ });
349
+ };
340
350
  }
341
351
 
342
352
  /**
343
- * @tsplus fluent fncts.test.PSpec annotate
353
+ * @tsplus pipeable fncts.test.PSpec annotate
344
354
  */
345
- export function annotate_<R, E, T, V>(self: PSpec<R, E, T>, key: TestAnnotation<V>, value: V): PSpec<R, E, T> {
346
- return self.transform(
347
- matchTag(
348
- {
349
- Test: ({ test, annotations }) => new TestCase(test, annotations.annotate(key, value)),
350
- },
351
- identity,
352
- ),
353
- );
355
+ export function annotate<V>(key: TestAnnotation<V>, value: V) {
356
+ return <R, E, T>(self: PSpec<R, E, T>): PSpec<R, E, T> => {
357
+ return self.transform(
358
+ matchTag(
359
+ {
360
+ Test: ({ test, annotations }) => new TestCase(test, annotations.annotate(key, value)),
361
+ },
362
+ identity,
363
+ ),
364
+ );
365
+ };
354
366
  }
355
367
 
356
368
  /**
357
- * @tsplus fluent fncts.test.PSpec whenIO
369
+ * @tsplus pipeable fncts.test.PSpec whenIO
358
370
  */
359
- export function whenIO_<R, E, R1, E1>(
360
- self: PSpec<R, E, TestSuccess>,
361
- b: IO<R1, E1, boolean>,
362
- ): PSpec<R | R1 | Annotations, E | E1, TestSuccess> {
363
- return matchTag_(self.caseValue, {
364
- Exec: (c) => exec(c.spec.whenIO(b), c.exec),
365
- Labeled: ({ label, spec }) => Spec.labeled(spec.whenIO(b), label),
366
- Scoped: (c) => Spec.scoped(b.flatMap((b) => (b ? c.scoped : IO.succeedNow(Spec.empty)))),
367
- Multiple: ({ specs }) => Spec.multiple(specs.map((_) => _.whenIO(b))),
368
- Test: (c) =>
369
- Spec.test(
370
- b.flatMap((b) => IO.if(b, c.test, Annotations.annotate(TestAnnotation.Ignored, 1)).as(TestSuccess.Ignored)),
371
- c.annotations,
372
- ),
373
- });
371
+ export function whenIO<R1, E1>(b: IO<R1, E1, boolean>) {
372
+ return <R, E>(self: PSpec<R, E, TestSuccess>): PSpec<R | R1 | Annotations, E | E1, TestSuccess> => {
373
+ return matchTag_(self.caseValue, {
374
+ Exec: (c) => exec(c.spec.whenIO(b), c.exec),
375
+ Labeled: ({ label, spec }) => Spec.labeled(spec.whenIO(b), label),
376
+ Scoped: (c) => Spec.scoped(b.flatMap((b) => (b ? c.scoped : IO.succeedNow(Spec.empty)))),
377
+ Multiple: ({ specs }) => Spec.multiple(specs.map((_) => _.whenIO(b))),
378
+ Test: (c) =>
379
+ Spec.test(
380
+ b.flatMap((b) => IO.if(b, c.test, Annotations.annotate(TestAnnotation.Ignored, 1)).as(TestSuccess.Ignored)),
381
+ c.annotations,
382
+ ),
383
+ });
384
+ };
374
385
  }
375
386
 
376
387
  /**
377
- * @tsplus fluent fncts.test.PSpec when
388
+ * @tsplus pipeable fncts.test.PSpec when
378
389
  */
379
- export function when_<R, E>(self: PSpec<R, E, TestSuccess>, b: Lazy<boolean>): PSpec<R | Annotations, E, TestSuccess> {
380
- return self.whenIO(IO.succeed(b));
390
+ export function when(b: Lazy<boolean>) {
391
+ return <R, E>(self: PSpec<R, E, TestSuccess>): PSpec<R | Annotations, E, TestSuccess> => {
392
+ return self.whenIO(IO.succeed(b));
393
+ };
381
394
  }
@@ -11,7 +11,6 @@ export class PSpec<R, E, T> {
11
11
  readonly _R!: () => R;
12
12
  readonly _E!: () => E;
13
13
  readonly _A!: () => T;
14
-
15
14
  constructor(readonly caseValue: SpecCase<R, E, T, PSpec<R, E, T>>) {}
16
15
  }
17
16
 
@@ -26,7 +25,6 @@ export const Spec: SpecOps = {};
26
25
  * @tsplus type fncts.test.PSpec
27
26
  */
28
27
  export type Spec<R, E> = PSpec<R, TestFailure<E>, TestSuccess>;
29
-
30
28
  export const enum SpecCaseTag {
31
29
  Exec = "Exec",
32
30
  Labeled = "Labeled",
@@ -34,7 +34,6 @@ export function buildSummary<E>(executedSpec: ExecutedSpec<E>): Summary {
34
34
  );
35
35
  const failures = extractFailures(executedSpec);
36
36
  const rendered = ConsoleRenderer.render(failures.flatMap(render), silent).join("\n");
37
-
38
37
  return new Summary(success, fail, ignore, rendered);
39
38
  }
40
39
 
@@ -5,22 +5,24 @@ import { LeafRenderer } from "./definition.js";
5
5
  import { CompositeRenderer, TestAnnotationRendererTag } from "./definition.js";
6
6
 
7
7
  /**
8
- * @tsplus fluent fncts.test.TestAnnotationRenderer combine
9
- * @tsplus operator fncts.test.TestAnnotationRenderer +
8
+ * @tsplus pipeable fncts.test.TestAnnotationRenderer combine
9
+ * @tsplus pipeable-operator fncts.test.TestAnnotationRenderer +
10
10
  */
11
- export function combine_(self: TestAnnotationRenderer, that: TestAnnotationRenderer): TestAnnotationRenderer {
12
- if (
13
- self._tag === TestAnnotationRendererTag.CompositeRenderer &&
14
- that._tag === TestAnnotationRendererTag.CompositeRenderer
15
- ) {
16
- return new CompositeRenderer(self.renderers.concat(that.renderers));
17
- } else if (self._tag === TestAnnotationRendererTag.CompositeRenderer) {
18
- return new CompositeRenderer(self.renderers.append(that));
19
- } else if (that._tag === TestAnnotationRendererTag.CompositeRenderer) {
20
- return new CompositeRenderer(that.renderers.prepend(self));
21
- } else {
22
- return new CompositeRenderer(Vector(self, that));
23
- }
11
+ export function combine(that: TestAnnotationRenderer) {
12
+ return (self: TestAnnotationRenderer): TestAnnotationRenderer => {
13
+ if (
14
+ self._tag === TestAnnotationRendererTag.CompositeRenderer &&
15
+ that._tag === TestAnnotationRendererTag.CompositeRenderer
16
+ ) {
17
+ return new CompositeRenderer(self.renderers.concat(that.renderers));
18
+ } else if (self._tag === TestAnnotationRendererTag.CompositeRenderer) {
19
+ return new CompositeRenderer(self.renderers.append(that));
20
+ } else if (that._tag === TestAnnotationRendererTag.CompositeRenderer) {
21
+ return new CompositeRenderer(that.renderers.prepend(self));
22
+ } else {
23
+ return new CompositeRenderer(Vector(self, that));
24
+ }
25
+ };
24
26
  }
25
27
 
26
28
  /**