@fncts/test 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (632) hide show
  1. package/TestSpec.d.ts +4 -0
  2. package/_cjs/api.cjs +91 -0
  3. package/_cjs/api.cjs.map +1 -0
  4. package/_cjs/control/AbstractRunnableSpec.cjs +30 -0
  5. package/_cjs/control/AbstractRunnableSpec.cjs.map +1 -0
  6. package/_cjs/control/Annotations/api.cjs +50 -0
  7. package/_cjs/control/Annotations/api.cjs.map +1 -0
  8. package/_cjs/control/Annotations/definition.cjs +27 -0
  9. package/_cjs/control/Annotations/definition.cjs.map +1 -0
  10. package/_cjs/control/Annotations/live.cjs +68 -0
  11. package/_cjs/control/Annotations/live.cjs.map +1 -0
  12. package/_cjs/control/Annotations.cjs +45 -0
  13. package/_cjs/control/Annotations.cjs.map +1 -0
  14. package/_cjs/control/Assertion/api.cjs +256 -0
  15. package/_cjs/control/Assertion/api.cjs.map +1 -0
  16. package/_cjs/control/Assertion/definition.cjs +32 -0
  17. package/_cjs/control/Assertion/definition.cjs.map +1 -0
  18. package/_cjs/control/Assertion.cjs +32 -0
  19. package/_cjs/control/Assertion.cjs.map +1 -0
  20. package/_cjs/control/AssertionIO/api.cjs +46 -0
  21. package/_cjs/control/AssertionIO/api.cjs.map +1 -0
  22. package/_cjs/control/AssertionIO/definition.cjs +37 -0
  23. package/_cjs/control/AssertionIO/definition.cjs.map +1 -0
  24. package/_cjs/control/AssertionIO.cjs +32 -0
  25. package/_cjs/control/AssertionIO.cjs.map +1 -0
  26. package/_cjs/control/DefaultRunnableSpec.cjs +30 -0
  27. package/_cjs/control/DefaultRunnableSpec.cjs.map +1 -0
  28. package/_cjs/control/DefaultTestReporter/definition.cjs +9 -0
  29. package/_cjs/control/DefaultTestReporter/definition.cjs.map +1 -0
  30. package/_cjs/control/DefaultTestReporter/render.cjs +288 -0
  31. package/_cjs/control/DefaultTestReporter/render.cjs.map +1 -0
  32. package/_cjs/control/DefaultTestReporter.cjs +32 -0
  33. package/_cjs/control/DefaultTestReporter.cjs.map +1 -0
  34. package/_cjs/control/FreeBooleanAlgebraIO/api.cjs +89 -0
  35. package/_cjs/control/FreeBooleanAlgebraIO/api.cjs.map +1 -0
  36. package/_cjs/control/FreeBooleanAlgebraIO/definition.cjs +9 -0
  37. package/_cjs/control/FreeBooleanAlgebraIO/definition.cjs.map +1 -0
  38. package/_cjs/control/FreeBooleanAlgebraIO.cjs +32 -0
  39. package/_cjs/control/FreeBooleanAlgebraIO.cjs.map +1 -0
  40. package/_cjs/control/Gen/api/array.cjs +50 -0
  41. package/_cjs/control/Gen/api/array.cjs.map +1 -0
  42. package/_cjs/control/Gen/api/char.cjs +129 -0
  43. package/_cjs/control/Gen/api/char.cjs.map +1 -0
  44. package/_cjs/control/Gen/api/conc.cjs +70 -0
  45. package/_cjs/control/Gen/api/conc.cjs.map +1 -0
  46. package/_cjs/control/Gen/api/double.cjs +82 -0
  47. package/_cjs/control/Gen/api/double.cjs.map +1 -0
  48. package/_cjs/control/Gen/api/float.cjs +55 -0
  49. package/_cjs/control/Gen/api/float.cjs.map +1 -0
  50. package/_cjs/control/Gen/api/string.cjs +102 -0
  51. package/_cjs/control/Gen/api/string.cjs.map +1 -0
  52. package/_cjs/control/Gen/api/struct.cjs +36 -0
  53. package/_cjs/control/Gen/api/struct.cjs.map +1 -0
  54. package/_cjs/control/Gen/api.cjs +369 -0
  55. package/_cjs/control/Gen/api.cjs.map +1 -0
  56. package/_cjs/control/Gen/constraints.cjs +6 -0
  57. package/_cjs/control/Gen/constraints.cjs.map +1 -0
  58. package/_cjs/control/Gen/definition.cjs +20 -0
  59. package/_cjs/control/Gen/definition.cjs.map +1 -0
  60. package/_cjs/control/Gen.cjs +136 -0
  61. package/_cjs/control/Gen.cjs.map +1 -0
  62. package/_cjs/control/Live/definition.cjs +67 -0
  63. package/_cjs/control/Live/definition.cjs.map +1 -0
  64. package/_cjs/control/Live.cjs +19 -0
  65. package/_cjs/control/Live.cjs.map +1 -0
  66. package/_cjs/control/RunnableSpec.cjs +70 -0
  67. package/_cjs/control/RunnableSpec.cjs.map +1 -0
  68. package/_cjs/control/Sample/api.cjs +244 -0
  69. package/_cjs/control/Sample/api.cjs.map +1 -0
  70. package/_cjs/control/Sample/definition.cjs +21 -0
  71. package/_cjs/control/Sample/definition.cjs.map +1 -0
  72. package/_cjs/control/Sample.cjs +32 -0
  73. package/_cjs/control/Sample.cjs.map +1 -0
  74. package/_cjs/control/Sized/api.cjs +32 -0
  75. package/_cjs/control/Sized/api.cjs.map +1 -0
  76. package/_cjs/control/Sized/definition.cjs +27 -0
  77. package/_cjs/control/Sized/definition.cjs.map +1 -0
  78. package/_cjs/control/Sized/live.cjs +42 -0
  79. package/_cjs/control/Sized/live.cjs.map +1 -0
  80. package/_cjs/control/Sized.cjs +45 -0
  81. package/_cjs/control/Sized.cjs.map +1 -0
  82. package/_cjs/control/Spec/api.cjs +525 -0
  83. package/_cjs/control/Spec/api.cjs.map +1 -0
  84. package/_cjs/control/Spec/definition.cjs +125 -0
  85. package/_cjs/control/Spec/definition.cjs.map +1 -0
  86. package/_cjs/control/Spec.cjs +32 -0
  87. package/_cjs/control/Spec.cjs.map +1 -0
  88. package/_cjs/control/SummaryBuilder.cjs +87 -0
  89. package/_cjs/control/SummaryBuilder.cjs.map +1 -0
  90. package/_cjs/control/Test.cjs +34 -0
  91. package/_cjs/control/Test.cjs.map +1 -0
  92. package/_cjs/control/TestAnnotationRenderer/api.cjs +101 -0
  93. package/_cjs/control/TestAnnotationRenderer/api.cjs.map +1 -0
  94. package/_cjs/control/TestAnnotationRenderer/definition.cjs +53 -0
  95. package/_cjs/control/TestAnnotationRenderer/definition.cjs.map +1 -0
  96. package/_cjs/control/TestAnnotationRenderer.cjs +32 -0
  97. package/_cjs/control/TestAnnotationRenderer.cjs.map +1 -0
  98. package/_cjs/control/TestAspect/api.cjs +148 -0
  99. package/_cjs/control/TestAspect/api.cjs.map +1 -0
  100. package/_cjs/control/TestAspect/definition.cjs +6 -0
  101. package/_cjs/control/TestAspect/definition.cjs.map +1 -0
  102. package/_cjs/control/TestAspect.cjs +32 -0
  103. package/_cjs/control/TestAspect.cjs.map +1 -0
  104. package/_cjs/control/TestClock/api.cjs +72 -0
  105. package/_cjs/control/TestClock/api.cjs.map +1 -0
  106. package/_cjs/control/TestClock/definition.cjs +225 -0
  107. package/_cjs/control/TestClock/definition.cjs.map +1 -0
  108. package/_cjs/control/TestClock.cjs +32 -0
  109. package/_cjs/control/TestClock.cjs.map +1 -0
  110. package/_cjs/control/TestConsole/api.cjs +64 -0
  111. package/_cjs/control/TestConsole/api.cjs.map +1 -0
  112. package/_cjs/control/TestConsole/definition.cjs +100 -0
  113. package/_cjs/control/TestConsole/definition.cjs.map +1 -0
  114. package/_cjs/control/TestConsole.cjs +32 -0
  115. package/_cjs/control/TestConsole.cjs.map +1 -0
  116. package/_cjs/control/TestEnvironment.cjs +39 -0
  117. package/_cjs/control/TestEnvironment.cjs.map +1 -0
  118. package/_cjs/control/TestExecutor.cjs +58 -0
  119. package/_cjs/control/TestExecutor.cjs.map +1 -0
  120. package/_cjs/control/TestLogger.cjs +58 -0
  121. package/_cjs/control/TestLogger.cjs.map +1 -0
  122. package/_cjs/control/TestRandom/api.cjs +125 -0
  123. package/_cjs/control/TestRandom/api.cjs.map +1 -0
  124. package/_cjs/control/TestRandom/definition.cjs +458 -0
  125. package/_cjs/control/TestRandom/definition.cjs.map +1 -0
  126. package/_cjs/control/TestRandom.cjs +32 -0
  127. package/_cjs/control/TestRandom.cjs.map +1 -0
  128. package/_cjs/control/TestRenderer/ConsoleRenderer.cjs +113 -0
  129. package/_cjs/control/TestRenderer/ConsoleRenderer.cjs.map +1 -0
  130. package/_cjs/control/TestRenderer/definition.cjs +6 -0
  131. package/_cjs/control/TestRenderer/definition.cjs.map +1 -0
  132. package/_cjs/control/TestRunner.cjs +45 -0
  133. package/_cjs/control/TestRunner.cjs.map +1 -0
  134. package/_cjs/data/AssertionData.cjs +55 -0
  135. package/_cjs/data/AssertionData.cjs.map +1 -0
  136. package/_cjs/data/AssertionResult.cjs +34 -0
  137. package/_cjs/data/AssertionResult.cjs.map +1 -0
  138. package/_cjs/data/AssertionValue/api.cjs +64 -0
  139. package/_cjs/data/AssertionValue/api.cjs.map +1 -0
  140. package/_cjs/data/AssertionValue/definition.cjs +35 -0
  141. package/_cjs/data/AssertionValue/definition.cjs.map +1 -0
  142. package/_cjs/data/AssertionValue.cjs +32 -0
  143. package/_cjs/data/AssertionValue.cjs.map +1 -0
  144. package/_cjs/data/ExecutedSpec/api.cjs +132 -0
  145. package/_cjs/data/ExecutedSpec/api.cjs.map +1 -0
  146. package/_cjs/data/ExecutedSpec/definition.cjs +58 -0
  147. package/_cjs/data/ExecutedSpec/definition.cjs.map +1 -0
  148. package/_cjs/data/ExecutedSpec.cjs +32 -0
  149. package/_cjs/data/ExecutedSpec.cjs.map +1 -0
  150. package/_cjs/data/ExecutionResult.cjs +142 -0
  151. package/_cjs/data/ExecutionResult.cjs.map +1 -0
  152. package/_cjs/data/FailureDetails.cjs +17 -0
  153. package/_cjs/data/FailureDetails.cjs.map +1 -0
  154. package/_cjs/data/FreeBooleanAlgebra/api.cjs +194 -0
  155. package/_cjs/data/FreeBooleanAlgebra/api.cjs.map +1 -0
  156. package/_cjs/data/FreeBooleanAlgebra/definition.cjs +59 -0
  157. package/_cjs/data/FreeBooleanAlgebra/definition.cjs.map +1 -0
  158. package/_cjs/data/FreeBooleanAlgebra.cjs +32 -0
  159. package/_cjs/data/FreeBooleanAlgebra.cjs.map +1 -0
  160. package/_cjs/data/GenFailureDetails.cjs +18 -0
  161. package/_cjs/data/GenFailureDetails.cjs.map +1 -0
  162. package/_cjs/data/LogLine/Fragment.cjs +94 -0
  163. package/_cjs/data/LogLine/Fragment.cjs.map +1 -0
  164. package/_cjs/data/LogLine/Line.cjs +142 -0
  165. package/_cjs/data/LogLine/Line.cjs.map +1 -0
  166. package/_cjs/data/LogLine/Message.cjs +145 -0
  167. package/_cjs/data/LogLine/Message.cjs.map +1 -0
  168. package/_cjs/data/LogLine/Style.cjs +124 -0
  169. package/_cjs/data/LogLine/Style.cjs.map +1 -0
  170. package/_cjs/data/LogLine/api.cjs +65 -0
  171. package/_cjs/data/LogLine/api.cjs.map +1 -0
  172. package/_cjs/data/LogLine.cjs +32 -0
  173. package/_cjs/data/LogLine.cjs.map +1 -0
  174. package/_cjs/data/Render/api.cjs +25 -0
  175. package/_cjs/data/Render/api.cjs.map +1 -0
  176. package/_cjs/data/Render/definition.cjs +52 -0
  177. package/_cjs/data/Render/definition.cjs.map +1 -0
  178. package/_cjs/data/Render.cjs +32 -0
  179. package/_cjs/data/Render.cjs.map +1 -0
  180. package/_cjs/data/RenderParam/api.cjs +40 -0
  181. package/_cjs/data/RenderParam/api.cjs.map +1 -0
  182. package/_cjs/data/RenderParam/definition.cjs +33 -0
  183. package/_cjs/data/RenderParam/definition.cjs.map +1 -0
  184. package/_cjs/data/RenderParam.cjs +32 -0
  185. package/_cjs/data/RenderParam.cjs.map +1 -0
  186. package/_cjs/data/Summary.cjs +20 -0
  187. package/_cjs/data/Summary.cjs.map +1 -0
  188. package/_cjs/data/TestAnnotation/api.cjs +76 -0
  189. package/_cjs/data/TestAnnotation/api.cjs.map +1 -0
  190. package/_cjs/data/TestAnnotation/definition.cjs +55 -0
  191. package/_cjs/data/TestAnnotation/definition.cjs.map +1 -0
  192. package/_cjs/data/TestAnnotation.cjs +32 -0
  193. package/_cjs/data/TestAnnotation.cjs.map +1 -0
  194. package/_cjs/data/TestAnnotationMap.cjs +51 -0
  195. package/_cjs/data/TestAnnotationMap.cjs.map +1 -0
  196. package/_cjs/data/TestArgs/definition.cjs +18 -0
  197. package/_cjs/data/TestArgs/definition.cjs.map +1 -0
  198. package/_cjs/data/TestArgs.cjs +19 -0
  199. package/_cjs/data/TestArgs.cjs.map +1 -0
  200. package/_cjs/data/TestConfig.cjs +76 -0
  201. package/_cjs/data/TestConfig.cjs.map +1 -0
  202. package/_cjs/data/TestFailure.cjs +75 -0
  203. package/_cjs/data/TestFailure.cjs.map +1 -0
  204. package/_cjs/data/TestSuccess.cjs +48 -0
  205. package/_cjs/data/TestSuccess.cjs.map +1 -0
  206. package/_cjs/data/TestTimeoutException.cjs +16 -0
  207. package/_cjs/data/TestTimeoutException.cjs.map +1 -0
  208. package/_cjs/demo.cjs +44 -0
  209. package/_cjs/demo.cjs.map +1 -0
  210. package/_cjs/util/math.cjs +673 -0
  211. package/_cjs/util/math.cjs.map +1 -0
  212. package/_mjs/api.mjs +57 -0
  213. package/_mjs/api.mjs.map +1 -0
  214. package/_mjs/control/AbstractRunnableSpec.mjs +16 -0
  215. package/_mjs/control/AbstractRunnableSpec.mjs.map +1 -0
  216. package/_mjs/control/Annotations/api.mjs +30 -0
  217. package/_mjs/control/Annotations/api.mjs.map +1 -0
  218. package/_mjs/control/Annotations/definition.mjs +13 -0
  219. package/_mjs/control/Annotations/definition.mjs.map +1 -0
  220. package/_mjs/control/Annotations/live.mjs +40 -0
  221. package/_mjs/control/Annotations/live.mjs.map +1 -0
  222. package/_mjs/control/Annotations.mjs +5 -0
  223. package/_mjs/control/Annotations.mjs.map +1 -0
  224. package/_mjs/control/Assertion/api.mjs +170 -0
  225. package/_mjs/control/Assertion/api.mjs.map +1 -0
  226. package/_mjs/control/Assertion/definition.mjs +17 -0
  227. package/_mjs/control/Assertion/definition.mjs.map +1 -0
  228. package/_mjs/control/Assertion.mjs +4 -0
  229. package/_mjs/control/Assertion.mjs.map +1 -0
  230. package/_mjs/control/AssertionIO/api.mjs +28 -0
  231. package/_mjs/control/AssertionIO/api.mjs.map +1 -0
  232. package/_mjs/control/AssertionIO/definition.mjs +23 -0
  233. package/_mjs/control/AssertionIO/definition.mjs.map +1 -0
  234. package/_mjs/control/AssertionIO.mjs +4 -0
  235. package/_mjs/control/AssertionIO.mjs.map +1 -0
  236. package/_mjs/control/DefaultRunnableSpec.mjs +15 -0
  237. package/_mjs/control/DefaultRunnableSpec.mjs.map +1 -0
  238. package/_mjs/control/DefaultTestReporter/definition.mjs +2 -0
  239. package/_mjs/control/DefaultTestReporter/definition.mjs.map +1 -0
  240. package/_mjs/control/DefaultTestReporter/render.mjs +245 -0
  241. package/_mjs/control/DefaultTestReporter/render.mjs.map +1 -0
  242. package/_mjs/control/DefaultTestReporter.mjs +4 -0
  243. package/_mjs/control/DefaultTestReporter.mjs.map +1 -0
  244. package/_mjs/control/FreeBooleanAlgebraIO/api.mjs +62 -0
  245. package/_mjs/control/FreeBooleanAlgebraIO/api.mjs.map +1 -0
  246. package/_mjs/control/FreeBooleanAlgebraIO/definition.mjs +2 -0
  247. package/_mjs/control/FreeBooleanAlgebraIO/definition.mjs.map +1 -0
  248. package/_mjs/control/FreeBooleanAlgebraIO.mjs +4 -0
  249. package/_mjs/control/FreeBooleanAlgebraIO.mjs.map +1 -0
  250. package/_mjs/control/Gen/api/array.mjs +31 -0
  251. package/_mjs/control/Gen/api/array.mjs.map +1 -0
  252. package/_mjs/control/Gen/api/char.mjs +95 -0
  253. package/_mjs/control/Gen/api/char.mjs.map +1 -0
  254. package/_mjs/control/Gen/api/conc.mjs +46 -0
  255. package/_mjs/control/Gen/api/conc.mjs.map +1 -0
  256. package/_mjs/control/Gen/api/double.mjs +60 -0
  257. package/_mjs/control/Gen/api/double.mjs.map +1 -0
  258. package/_mjs/control/Gen/api/float.mjs +41 -0
  259. package/_mjs/control/Gen/api/float.mjs.map +1 -0
  260. package/_mjs/control/Gen/api/string.mjs +72 -0
  261. package/_mjs/control/Gen/api/string.mjs.map +1 -0
  262. package/_mjs/control/Gen/api/struct.mjs +18 -0
  263. package/_mjs/control/Gen/api/struct.mjs.map +1 -0
  264. package/_mjs/control/Gen/api.mjs +288 -0
  265. package/_mjs/control/Gen/api.mjs.map +1 -0
  266. package/_mjs/control/Gen/constraints.mjs +2 -0
  267. package/_mjs/control/Gen/constraints.mjs.map +1 -0
  268. package/_mjs/control/Gen/definition.mjs +11 -0
  269. package/_mjs/control/Gen/definition.mjs.map +1 -0
  270. package/_mjs/control/Gen.mjs +14 -0
  271. package/_mjs/control/Gen.mjs.map +1 -0
  272. package/_mjs/control/Live/definition.mjs +42 -0
  273. package/_mjs/control/Live/definition.mjs.map +1 -0
  274. package/_mjs/control/Live.mjs +3 -0
  275. package/_mjs/control/Live.mjs.map +1 -0
  276. package/_mjs/control/RunnableSpec.mjs +44 -0
  277. package/_mjs/control/RunnableSpec.mjs.map +1 -0
  278. package/_mjs/control/Sample/api.mjs +195 -0
  279. package/_mjs/control/Sample/api.mjs.map +1 -0
  280. package/_mjs/control/Sample/definition.mjs +12 -0
  281. package/_mjs/control/Sample/definition.mjs.map +1 -0
  282. package/_mjs/control/Sample.mjs +4 -0
  283. package/_mjs/control/Sample.mjs.map +1 -0
  284. package/_mjs/control/Sized/api.mjs +16 -0
  285. package/_mjs/control/Sized/api.mjs.map +1 -0
  286. package/_mjs/control/Sized/definition.mjs +13 -0
  287. package/_mjs/control/Sized/definition.mjs.map +1 -0
  288. package/_mjs/control/Sized/live.mjs +25 -0
  289. package/_mjs/control/Sized/live.mjs.map +1 -0
  290. package/_mjs/control/Sized.mjs +5 -0
  291. package/_mjs/control/Sized.mjs.map +1 -0
  292. package/_mjs/control/Spec/api.mjs +449 -0
  293. package/_mjs/control/Spec/api.mjs.map +1 -0
  294. package/_mjs/control/Spec/definition.mjs +96 -0
  295. package/_mjs/control/Spec/definition.mjs.map +1 -0
  296. package/_mjs/control/Spec.mjs +4 -0
  297. package/_mjs/control/Spec.mjs.map +1 -0
  298. package/_mjs/control/SummaryBuilder.mjs +61 -0
  299. package/_mjs/control/SummaryBuilder.mjs.map +1 -0
  300. package/_mjs/control/Test.mjs +15 -0
  301. package/_mjs/control/Test.mjs.map +1 -0
  302. package/_mjs/control/TestAnnotationRenderer/api.mjs +74 -0
  303. package/_mjs/control/TestAnnotationRenderer/api.mjs.map +1 -0
  304. package/_mjs/control/TestAnnotationRenderer/definition.mjs +32 -0
  305. package/_mjs/control/TestAnnotationRenderer/definition.mjs.map +1 -0
  306. package/_mjs/control/TestAnnotationRenderer.mjs +4 -0
  307. package/_mjs/control/TestAnnotationRenderer.mjs.map +1 -0
  308. package/_mjs/control/TestAspect/api.mjs +93 -0
  309. package/_mjs/control/TestAspect/api.mjs.map +1 -0
  310. package/_mjs/control/TestAspect/definition.mjs +2 -0
  311. package/_mjs/control/TestAspect/definition.mjs.map +1 -0
  312. package/_mjs/control/TestAspect.mjs +4 -0
  313. package/_mjs/control/TestAspect.mjs.map +1 -0
  314. package/_mjs/control/TestClock/api.mjs +45 -0
  315. package/_mjs/control/TestClock/api.mjs.map +1 -0
  316. package/_mjs/control/TestClock/definition.mjs +173 -0
  317. package/_mjs/control/TestClock/definition.mjs.map +1 -0
  318. package/_mjs/control/TestClock.mjs +4 -0
  319. package/_mjs/control/TestClock.mjs.map +1 -0
  320. package/_mjs/control/TestConsole/api.mjs +41 -0
  321. package/_mjs/control/TestConsole/api.mjs.map +1 -0
  322. package/_mjs/control/TestConsole/definition.mjs +73 -0
  323. package/_mjs/control/TestConsole/definition.mjs.map +1 -0
  324. package/_mjs/control/TestConsole.mjs +4 -0
  325. package/_mjs/control/TestConsole.mjs.map +1 -0
  326. package/_mjs/control/TestEnvironment.mjs +17 -0
  327. package/_mjs/control/TestEnvironment.mjs.map +1 -0
  328. package/_mjs/control/TestExecutor.mjs +36 -0
  329. package/_mjs/control/TestExecutor.mjs.map +1 -0
  330. package/_mjs/control/TestLogger.mjs +36 -0
  331. package/_mjs/control/TestLogger.mjs.map +1 -0
  332. package/_mjs/control/TestRandom/api.mjs +87 -0
  333. package/_mjs/control/TestRandom/api.mjs.map +1 -0
  334. package/_mjs/control/TestRandom/definition.mjs +418 -0
  335. package/_mjs/control/TestRandom/definition.mjs.map +1 -0
  336. package/_mjs/control/TestRandom.mjs +4 -0
  337. package/_mjs/control/TestRandom.mjs.map +1 -0
  338. package/_mjs/control/TestRenderer/ConsoleRenderer.mjs +88 -0
  339. package/_mjs/control/TestRenderer/ConsoleRenderer.mjs.map +1 -0
  340. package/_mjs/control/TestRenderer/definition.mjs +2 -0
  341. package/_mjs/control/TestRenderer/definition.mjs.map +1 -0
  342. package/_mjs/control/TestRunner.mjs +23 -0
  343. package/_mjs/control/TestRunner.mjs.map +1 -0
  344. package/_mjs/data/AssertionData.mjs +34 -0
  345. package/_mjs/data/AssertionData.mjs.map +1 -0
  346. package/_mjs/data/AssertionResult.mjs +17 -0
  347. package/_mjs/data/AssertionResult.mjs.map +1 -0
  348. package/_mjs/data/AssertionValue/api.mjs +42 -0
  349. package/_mjs/data/AssertionValue/api.mjs.map +1 -0
  350. package/_mjs/data/AssertionValue/definition.mjs +19 -0
  351. package/_mjs/data/AssertionValue/definition.mjs.map +1 -0
  352. package/_mjs/data/AssertionValue.mjs +4 -0
  353. package/_mjs/data/AssertionValue.mjs.map +1 -0
  354. package/_mjs/data/ExecutedSpec/api.mjs +104 -0
  355. package/_mjs/data/ExecutedSpec/api.mjs.map +1 -0
  356. package/_mjs/data/ExecutedSpec/definition.mjs +40 -0
  357. package/_mjs/data/ExecutedSpec/definition.mjs.map +1 -0
  358. package/_mjs/data/ExecutedSpec.mjs +4 -0
  359. package/_mjs/data/ExecutedSpec.mjs.map +1 -0
  360. package/_mjs/data/ExecutionResult.mjs +110 -0
  361. package/_mjs/data/ExecutionResult.mjs.map +1 -0
  362. package/_mjs/data/FailureDetails.mjs +8 -0
  363. package/_mjs/data/FailureDetails.mjs.map +1 -0
  364. package/_mjs/data/FreeBooleanAlgebra/api.mjs +154 -0
  365. package/_mjs/data/FreeBooleanAlgebra/api.mjs.map +1 -0
  366. package/_mjs/data/FreeBooleanAlgebra/definition.mjs +40 -0
  367. package/_mjs/data/FreeBooleanAlgebra/definition.mjs.map +1 -0
  368. package/_mjs/data/FreeBooleanAlgebra.mjs +4 -0
  369. package/_mjs/data/FreeBooleanAlgebra.mjs.map +1 -0
  370. package/_mjs/data/GenFailureDetails.mjs +9 -0
  371. package/_mjs/data/GenFailureDetails.mjs.map +1 -0
  372. package/_mjs/data/LogLine/Fragment.mjs +65 -0
  373. package/_mjs/data/LogLine/Fragment.mjs.map +1 -0
  374. package/_mjs/data/LogLine/Line.mjs +104 -0
  375. package/_mjs/data/LogLine/Line.mjs.map +1 -0
  376. package/_mjs/data/LogLine/Message.mjs +107 -0
  377. package/_mjs/data/LogLine/Message.mjs.map +1 -0
  378. package/_mjs/data/LogLine/Style.mjs +101 -0
  379. package/_mjs/data/LogLine/Style.mjs.map +1 -0
  380. package/_mjs/data/LogLine/api.mjs +32 -0
  381. package/_mjs/data/LogLine/api.mjs.map +1 -0
  382. package/_mjs/data/LogLine.mjs +3 -0
  383. package/_mjs/data/LogLine.mjs.map +1 -0
  384. package/_mjs/data/Render/api.mjs +16 -0
  385. package/_mjs/data/Render/api.mjs.map +1 -0
  386. package/_mjs/data/Render/definition.mjs +33 -0
  387. package/_mjs/data/Render/definition.mjs.map +1 -0
  388. package/_mjs/data/Render.mjs +4 -0
  389. package/_mjs/data/Render.mjs.map +1 -0
  390. package/_mjs/data/RenderParam/api.mjs +28 -0
  391. package/_mjs/data/RenderParam/api.mjs.map +1 -0
  392. package/_mjs/data/RenderParam/definition.mjs +20 -0
  393. package/_mjs/data/RenderParam/definition.mjs.map +1 -0
  394. package/_mjs/data/RenderParam.mjs +4 -0
  395. package/_mjs/data/RenderParam.mjs.map +1 -0
  396. package/_mjs/data/Summary.mjs +11 -0
  397. package/_mjs/data/Summary.mjs.map +1 -0
  398. package/_mjs/data/TestAnnotation/api.mjs +47 -0
  399. package/_mjs/data/TestAnnotation/api.mjs.map +1 -0
  400. package/_mjs/data/TestAnnotation/definition.mjs +33 -0
  401. package/_mjs/data/TestAnnotation/definition.mjs.map +1 -0
  402. package/_mjs/data/TestAnnotation.mjs +4 -0
  403. package/_mjs/data/TestAnnotation.mjs.map +1 -0
  404. package/_mjs/data/TestAnnotationMap.mjs +33 -0
  405. package/_mjs/data/TestAnnotationMap.mjs.map +1 -0
  406. package/_mjs/data/TestArgs/definition.mjs +9 -0
  407. package/_mjs/data/TestArgs/definition.mjs.map +1 -0
  408. package/_mjs/data/TestArgs.mjs +3 -0
  409. package/_mjs/data/TestArgs.mjs.map +1 -0
  410. package/_mjs/data/TestConfig.mjs +52 -0
  411. package/_mjs/data/TestConfig.mjs.map +1 -0
  412. package/_mjs/data/TestFailure.mjs +49 -0
  413. package/_mjs/data/TestFailure.mjs.map +1 -0
  414. package/_mjs/data/TestSuccess.mjs +31 -0
  415. package/_mjs/data/TestSuccess.mjs.map +1 -0
  416. package/_mjs/data/TestTimeoutException.mjs +7 -0
  417. package/_mjs/data/TestTimeoutException.mjs.map +1 -0
  418. package/_mjs/demo.mjs +33 -0
  419. package/_mjs/demo.mjs.map +1 -0
  420. package/_mjs/util/math.mjs +604 -0
  421. package/_mjs/util/math.mjs.map +1 -0
  422. package/_src/api.ts +76 -0
  423. package/_src/control/AbstractRunnableSpec.ts +23 -0
  424. package/_src/control/Annotations/api.ts +33 -0
  425. package/_src/control/Annotations/definition.ts +20 -0
  426. package/_src/control/Annotations/live.ts +50 -0
  427. package/_src/control/Annotations.ts +5 -0
  428. package/_src/control/Assertion/api.ts +236 -0
  429. package/_src/control/Assertion/definition.ts +20 -0
  430. package/_src/control/Assertion.ts +4 -0
  431. package/_src/control/AssertionIO/api.ts +32 -0
  432. package/_src/control/AssertionIO/definition.ts +26 -0
  433. package/_src/control/AssertionIO.ts +4 -0
  434. package/_src/control/DefaultRunnableSpec.ts +12 -0
  435. package/_src/control/DefaultTestReporter/definition.ts +6 -0
  436. package/_src/control/DefaultTestReporter/render.ts +295 -0
  437. package/_src/control/DefaultTestReporter.ts +4 -0
  438. package/_src/control/FreeBooleanAlgebraIO/api.ts +67 -0
  439. package/_src/control/FreeBooleanAlgebraIO/definition.ts +13 -0
  440. package/_src/control/FreeBooleanAlgebraIO.ts +4 -0
  441. package/_src/control/Gen/api/array.ts +31 -0
  442. package/_src/control/Gen/api/char.ts +83 -0
  443. package/_src/control/Gen/api/conc.ts +50 -0
  444. package/_src/control/Gen/api/double.ts +64 -0
  445. package/_src/control/Gen/api/float.ts +36 -0
  446. package/_src/control/Gen/api/string.ts +71 -0
  447. package/_src/control/Gen/api/struct.ts +21 -0
  448. package/_src/control/Gen/api.ts +276 -0
  449. package/_src/control/Gen/constraints.ts +38 -0
  450. package/_src/control/Gen/definition.ts +9 -0
  451. package/_src/control/Gen.ts +15 -0
  452. package/_src/control/Live/definition.ts +47 -0
  453. package/_src/control/Live.ts +3 -0
  454. package/_src/control/RunnableSpec.ts +42 -0
  455. package/_src/control/Sample/api.ts +287 -0
  456. package/_src/control/Sample/definition.ts +7 -0
  457. package/_src/control/Sample.ts +4 -0
  458. package/_src/control/Sized/api.ts +14 -0
  459. package/_src/control/Sized/definition.ts +13 -0
  460. package/_src/control/Sized/live.ts +19 -0
  461. package/_src/control/Sized.ts +5 -0
  462. package/_src/control/Spec/api.ts +384 -0
  463. package/_src/control/Spec/definition.ts +103 -0
  464. package/_src/control/Spec.ts +4 -0
  465. package/_src/control/SummaryBuilder.ts +68 -0
  466. package/_src/control/Test.ts +31 -0
  467. package/_src/control/TestAnnotationRenderer/api.ts +75 -0
  468. package/_src/control/TestAnnotationRenderer/definition.ts +49 -0
  469. package/_src/control/TestAnnotationRenderer.ts +4 -0
  470. package/_src/control/TestAspect/api.ts +122 -0
  471. package/_src/control/TestAspect/definition.ts +3 -0
  472. package/_src/control/TestAspect.ts +4 -0
  473. package/_src/control/TestClock/api.ts +36 -0
  474. package/_src/control/TestClock/definition.ts +196 -0
  475. package/_src/control/TestClock.ts +4 -0
  476. package/_src/control/TestConsole/api.ts +36 -0
  477. package/_src/control/TestConsole/definition.ts +61 -0
  478. package/_src/control/TestConsole.ts +4 -0
  479. package/_src/control/TestEnvironment.ts +30 -0
  480. package/_src/control/TestExecutor.ts +54 -0
  481. package/_src/control/TestLogger.ts +37 -0
  482. package/_src/control/TestRandom/api.ts +76 -0
  483. package/_src/control/TestRandom/definition.ts +362 -0
  484. package/_src/control/TestRandom.ts +4 -0
  485. package/_src/control/TestRenderer/ConsoleRenderer.ts +94 -0
  486. package/_src/control/TestRenderer/definition.ts +7 -0
  487. package/_src/control/TestRunner.ts +34 -0
  488. package/_src/data/AssertionData.ts +33 -0
  489. package/_src/data/AssertionResult.ts +31 -0
  490. package/_src/data/AssertionValue/api.ts +48 -0
  491. package/_src/data/AssertionValue/definition.ts +20 -0
  492. package/_src/data/AssertionValue.ts +4 -0
  493. package/_src/data/ExecutedSpec/api.ts +96 -0
  494. package/_src/data/ExecutedSpec/definition.ts +37 -0
  495. package/_src/data/ExecutedSpec.ts +4 -0
  496. package/_src/data/ExecutionResult.ts +153 -0
  497. package/_src/data/FailureDetails.ts +13 -0
  498. package/_src/data/FreeBooleanAlgebra/api.ts +152 -0
  499. package/_src/data/FreeBooleanAlgebra/definition.ts +38 -0
  500. package/_src/data/FreeBooleanAlgebra.ts +4 -0
  501. package/_src/data/GenFailureDetails.ts +3 -0
  502. package/_src/data/LogLine/Fragment.ts +59 -0
  503. package/_src/data/LogLine/Line.ts +91 -0
  504. package/_src/data/LogLine/Message.ts +94 -0
  505. package/_src/data/LogLine/Style.ts +150 -0
  506. package/_src/data/LogLine/api.ts +40 -0
  507. package/_src/data/LogLine.ts +2 -0
  508. package/_src/data/Render/api.ts +18 -0
  509. package/_src/data/Render/definition.ts +36 -0
  510. package/_src/data/Render.ts +4 -0
  511. package/_src/data/RenderParam/api.ts +31 -0
  512. package/_src/data/RenderParam/definition.ts +28 -0
  513. package/_src/data/RenderParam.ts +4 -0
  514. package/_src/data/Summary.ts +4 -0
  515. package/_src/data/TestAnnotation/api.ts +49 -0
  516. package/_src/data/TestAnnotation/definition.ts +37 -0
  517. package/_src/data/TestAnnotation.ts +4 -0
  518. package/_src/data/TestAnnotationMap.ts +41 -0
  519. package/_src/data/TestArgs/definition.ts +7 -0
  520. package/_src/data/TestArgs.ts +3 -0
  521. package/_src/data/TestConfig.ts +47 -0
  522. package/_src/data/TestFailure.ts +56 -0
  523. package/_src/data/TestSuccess.ts +39 -0
  524. package/_src/data/TestTimeoutException.ts +5 -0
  525. package/_src/demo.ts +16 -0
  526. package/_src/util/math.ts +497 -0
  527. package/api.d.ts +21 -0
  528. package/control/AbstractRunnableSpec.d.ts +15 -0
  529. package/control/Annotations/api.d.ts +26 -0
  530. package/control/Annotations/definition.d.ts +20 -0
  531. package/control/Annotations/live.d.ts +18 -0
  532. package/control/Annotations.d.ts +3 -0
  533. package/control/Assertion/api.d.ts +81 -0
  534. package/control/Assertion/definition.d.ts +17 -0
  535. package/control/Assertion.d.ts +2 -0
  536. package/control/AssertionIO/api.d.ts +18 -0
  537. package/control/AssertionIO/definition.d.ts +18 -0
  538. package/control/AssertionIO.d.ts +2 -0
  539. package/control/DefaultRunnableSpec.d.ts +7 -0
  540. package/control/DefaultTestReporter/definition.d.ts +6 -0
  541. package/control/DefaultTestReporter/render.d.ts +23 -0
  542. package/control/DefaultTestReporter.d.ts +2 -0
  543. package/control/FreeBooleanAlgebraIO/api.d.ts +44 -0
  544. package/control/FreeBooleanAlgebraIO/definition.d.ts +12 -0
  545. package/control/FreeBooleanAlgebraIO.d.ts +2 -0
  546. package/control/Gen/api/array.d.ts +19 -0
  547. package/control/Gen/api/char.d.ts +47 -0
  548. package/control/Gen/api/conc.d.ts +26 -0
  549. package/control/Gen/api/double.d.ts +13 -0
  550. package/control/Gen/api/float.d.ts +7 -0
  551. package/control/Gen/api/string.d.ts +49 -0
  552. package/control/Gen/api/struct.d.ts +8 -0
  553. package/control/Gen/api.d.ts +169 -0
  554. package/control/Gen/constraints.d.ts +32 -0
  555. package/control/Gen/definition.d.ts +11 -0
  556. package/control/Gen.d.ts +10 -0
  557. package/control/Live/definition.d.ts +24 -0
  558. package/control/Live.d.ts +1 -0
  559. package/control/RunnableSpec.d.ts +12 -0
  560. package/control/Sample/api.d.ts +79 -0
  561. package/control/Sample/definition.d.ts +11 -0
  562. package/control/Sample.d.ts +2 -0
  563. package/control/Sized/api.d.ts +13 -0
  564. package/control/Sized/definition.d.ts +14 -0
  565. package/control/Sized/live.d.ts +9 -0
  566. package/control/Sized.d.ts +3 -0
  567. package/control/Spec/api.d.ts +159 -0
  568. package/control/Spec/definition.d.ts +96 -0
  569. package/control/Spec.d.ts +2 -0
  570. package/control/SummaryBuilder.d.ts +15 -0
  571. package/control/Test.d.ts +20 -0
  572. package/control/TestAnnotationRenderer/api.d.ts +42 -0
  573. package/control/TestAnnotationRenderer/definition.d.ts +31 -0
  574. package/control/TestAnnotationRenderer.d.ts +2 -0
  575. package/control/TestAspect/api.d.ts +23 -0
  576. package/control/TestAspect/definition.d.ts +2 -0
  577. package/control/TestAspect.d.ts +2 -0
  578. package/control/TestClock/api.d.ts +21 -0
  579. package/control/TestClock/definition.d.ts +66 -0
  580. package/control/TestClock.d.ts +2 -0
  581. package/control/TestConsole/api.d.ts +15 -0
  582. package/control/TestConsole/definition.d.ts +39 -0
  583. package/control/TestConsole.d.ts +2 -0
  584. package/control/TestEnvironment.d.ts +16 -0
  585. package/control/TestExecutor.d.ts +13 -0
  586. package/control/TestLogger.d.ts +25 -0
  587. package/control/TestRandom/api.d.ts +49 -0
  588. package/control/TestRandom/definition.d.ts +91 -0
  589. package/control/TestRandom.d.ts +2 -0
  590. package/control/TestRenderer/ConsoleRenderer.d.ts +15 -0
  591. package/control/TestRenderer/definition.d.ts +4 -0
  592. package/control/TestRunner.d.ts +18 -0
  593. package/data/AssertionData.d.ts +24 -0
  594. package/data/AssertionResult.d.ts +23 -0
  595. package/data/AssertionValue/api.d.ts +27 -0
  596. package/data/AssertionValue/definition.d.ts +19 -0
  597. package/data/AssertionValue.d.ts +2 -0
  598. package/data/ExecutedSpec/api.d.ts +47 -0
  599. package/data/ExecutedSpec/definition.d.ts +39 -0
  600. package/data/ExecutedSpec.d.ts +2 -0
  601. package/data/ExecutionResult.d.ts +59 -0
  602. package/data/FailureDetails.d.ts +15 -0
  603. package/data/FreeBooleanAlgebra/api.d.ts +81 -0
  604. package/data/FreeBooleanAlgebra/definition.d.ts +38 -0
  605. package/data/FreeBooleanAlgebra.d.ts +2 -0
  606. package/data/GenFailureDetails.d.ts +6 -0
  607. package/data/LogLine/Fragment.d.ts +46 -0
  608. package/data/LogLine/Line.d.ts +62 -0
  609. package/data/LogLine/Message.d.ts +61 -0
  610. package/data/LogLine/Style.d.ts +107 -0
  611. package/data/LogLine/api.d.ts +11 -0
  612. package/data/LogLine.d.ts +2 -0
  613. package/data/Render/api.d.ts +13 -0
  614. package/data/Render/definition.d.ts +31 -0
  615. package/data/Render.d.ts +2 -0
  616. package/data/RenderParam/api.d.ts +13 -0
  617. package/data/RenderParam/definition.d.ts +25 -0
  618. package/data/RenderParam.d.ts +2 -0
  619. package/data/Summary.d.ts +8 -0
  620. package/data/TestAnnotation/api.d.ts +41 -0
  621. package/data/TestAnnotation/definition.d.ts +20 -0
  622. package/data/TestAnnotation.d.ts +2 -0
  623. package/data/TestAnnotationMap.d.ts +12 -0
  624. package/data/TestArgs/definition.d.ts +7 -0
  625. package/data/TestArgs.d.ts +1 -0
  626. package/data/TestConfig.d.ts +42 -0
  627. package/data/TestFailure.d.ts +46 -0
  628. package/data/TestSuccess.d.ts +33 -0
  629. package/data/TestTimeoutException.d.ts +3 -0
  630. package/demo.d.ts +1 -0
  631. package/package.json +18 -0
  632. package/util/math.d.ts +130 -0
@@ -0,0 +1,48 @@
1
+ import { showWithOptions } from "@fncts/base/typeclass/Showable";
2
+
3
+ import { AssertionValue } from "./definition.js";
4
+
5
+ /**
6
+ * @tsplus fluent fncts.test.data.AssertionValue label
7
+ */
8
+ export function label<A>(self: AssertionValue<A>, string: string): AssertionValue<A> {
9
+ return new AssertionValue(
10
+ LazyValue(() => self.assertion.value.label(string)),
11
+ self.value,
12
+ self.result,
13
+ self.expression,
14
+ self.sourceLocation,
15
+ );
16
+ }
17
+
18
+ /**
19
+ * @tsplus fluent fncts.test.data.AssertionValue isSameAssertionAs
20
+ */
21
+ export function isSameAssertionAs<A>(self: AssertionValue<A>, that: AssertionValue<A>): boolean {
22
+ return self.assertion.value.rendered === that.assertion.value.rendered;
23
+ }
24
+
25
+ /**
26
+ * @tsplus fluent fncts.test.data.AssertionValue showValue
27
+ */
28
+ export function showValue<A>(self: AssertionValue<A>, offset = 0): string {
29
+ return showWithOptions(self.value, { indentationLevel: offset });
30
+ }
31
+
32
+ /**
33
+ * @tsplus getter fncts.test.data.AssertionValue printAssertion
34
+ */
35
+ export function printAssertion<A>(self: AssertionValue<A>): string {
36
+ return self.assertion.value.rendered;
37
+ }
38
+
39
+ /**
40
+ * @tsplus fluent fncts.test.data.AssertionValue withContext
41
+ */
42
+ export function withContext<A>(
43
+ self: AssertionValue<A>,
44
+ expr: Maybe<string>,
45
+ sourceLocation: Maybe<string>,
46
+ ): AssertionValue<A> {
47
+ return new AssertionValue(self.assertion, self.value, self.result, expr, sourceLocation);
48
+ }
@@ -0,0 +1,20 @@
1
+ import type { AssertionIO } from "../../control/AssertionIO/definition.js";
2
+ import type { FreeBooleanAlgebra } from "../FreeBooleanAlgebra.js";
3
+
4
+ export const AssertionValueTypeId = Symbol.for("fncts.test.data.AssertionValue");
5
+ export type AssertionValueTypeId = typeof AssertionValueTypeId;
6
+
7
+ /**
8
+ * @tsplus type fncts.test.data.AssertionValue
9
+ * @tsplus companion fncts.test.data.AssertionValueOps
10
+ */
11
+ export class AssertionValue<A> {
12
+ readonly _typeId: AssertionValueTypeId = AssertionValueTypeId;
13
+ constructor(
14
+ readonly assertion: LazyValue<AssertionIO<A>>,
15
+ readonly value: A,
16
+ readonly result: LazyValue<FreeBooleanAlgebra<AssertionValue<A>>>,
17
+ readonly expression: Maybe<string> = Nothing(),
18
+ readonly sourceLocation: Maybe<string> = Nothing(),
19
+ ) {}
20
+ }
@@ -0,0 +1,4 @@
1
+ // codegen:start { preset: barrel, include: ./AssertionValue/*.ts }
2
+ export * from "./AssertionValue/api.js";
3
+ export * from "./AssertionValue/definition.js";
4
+ // codegen:end
@@ -0,0 +1,96 @@
1
+ import type { TestAnnotationMap } from "../TestAnnotationMap.js";
2
+ import type { TestFailure } from "../TestFailure.js";
3
+ import type { TestSuccess } from "../TestSuccess.js";
4
+ import type { SpecCase } from "./definition.js";
5
+
6
+ import { identity } from "@fncts/base/data/function";
7
+ import { matchTag, matchTag_ } from "@fncts/base/util/pattern";
8
+
9
+ import { ExecutedSpec, TestCase } from "./definition.js";
10
+ import { LabeledCase, MultipleCase } from "./definition.js";
11
+
12
+ /**
13
+ * @tsplus fluent fncts.test.data.ExecutedSpec fold
14
+ */
15
+ export function fold_<E, Z>(self: ExecutedSpec<E>, f: (_: SpecCase<E, Z>) => Z): Z {
16
+ return matchTag_(self.caseValue, {
17
+ Labeled: ({ label, spec }) => f(new LabeledCase(label, spec.fold(f))),
18
+ Multiple: ({ specs }) => f(new MultipleCase(specs.map((spec) => spec.fold(f)))),
19
+ Test: f,
20
+ });
21
+ }
22
+
23
+ /**
24
+ * @tsplus static fncts.test.data.ExecutedSpecOps labeled
25
+ */
26
+ export function labeled<E>(spec: ExecutedSpec<E>, label: string): ExecutedSpec<E> {
27
+ return new ExecutedSpec(new LabeledCase(label, spec));
28
+ }
29
+
30
+ /**
31
+ * @tsplus fluent fncts.test.data.ExecutedSpecCase map
32
+ */
33
+ export function mapSpecCase_<E, A, B>(self: SpecCase<E, A>, f: (a: A) => B): SpecCase<E, B> {
34
+ return matchTag_(
35
+ self,
36
+ {
37
+ Labeled: ({ label, spec }) => new LabeledCase(label, f(spec)),
38
+ Multiple: ({ specs }) => new MultipleCase(specs.map(f)),
39
+ },
40
+ identity,
41
+ );
42
+ }
43
+
44
+ /**
45
+ * @tsplus static fncts.test.data.ExecutedSpecOps multiple
46
+ */
47
+ export function multiple<E>(specs: Conc<ExecutedSpec<E>>): ExecutedSpec<E> {
48
+ return new ExecutedSpec(new MultipleCase(specs));
49
+ }
50
+
51
+ /**
52
+ * @tsplus static fncts.test.data.ExecutedSpecOps test
53
+ */
54
+ export function test<E>(test: Either<TestFailure<E>, TestSuccess>, annotations: TestAnnotationMap): ExecutedSpec<E> {
55
+ return new ExecutedSpec(new TestCase(test, annotations));
56
+ }
57
+
58
+ /**
59
+ * @tsplus fluent fncts.test.data.ExecutedSpec transform
60
+ */
61
+ export function transform_<E, E1>(
62
+ self: ExecutedSpec<E>,
63
+ f: (_: SpecCase<E, ExecutedSpec<E1>>) => SpecCase<E1, ExecutedSpec<E1>>,
64
+ ): ExecutedSpec<E1> {
65
+ return matchTag_(self.caseValue, {
66
+ Labeled: ({ label, spec }) => new ExecutedSpec(f(new LabeledCase(label, spec.transform(f)))),
67
+ Multiple: ({ specs }) => new ExecutedSpec(f(new MultipleCase(specs.map((spec) => spec.transform(f))))),
68
+ Test: (t) => new ExecutedSpec(f(t)),
69
+ });
70
+ }
71
+
72
+ /**
73
+ * @tsplus fluent fncts.test.data.ExecutedSpec exists
74
+ */
75
+ export function exists_<E>(self: ExecutedSpec<E>, f: (_: SpecCase<E, boolean>) => boolean): boolean {
76
+ return self.fold(
77
+ matchTag({
78
+ Labeled: (c) => c.spec || f(c),
79
+ Multiple: (c) => c.specs.exists(identity) || f(c),
80
+ Test: f,
81
+ }),
82
+ );
83
+ }
84
+
85
+ /**
86
+ * @tsplus getter fncts.test.data.ExecutedSpec size
87
+ */
88
+ export function size<E>(self: ExecutedSpec<E>): number {
89
+ return self.fold(
90
+ matchTag({
91
+ Labeled: ({ spec }) => spec,
92
+ Multiple: ({ specs }) => specs.foldLeft(0, (b, a) => b + a),
93
+ Test: () => 1,
94
+ }),
95
+ );
96
+ }
@@ -0,0 +1,37 @@
1
+ import type { TestAnnotationMap } from "../TestAnnotationMap.js";
2
+ import type { TestFailure } from "../TestFailure.js";
3
+ import type { TestSuccess } from "../TestSuccess.js";
4
+
5
+ export const enum ExecutedSpecCaseTag {
6
+ Test = "Test",
7
+ Labeled = "Labeled",
8
+ Multiple = "Multiple",
9
+ }
10
+
11
+ /**
12
+ * @tsplus type fncts.test.data.ExecutedSpec
13
+ * @tsplus companion fncts.test.data.ExecutedSpecOps
14
+ */
15
+ export class ExecutedSpec<E> {
16
+ constructor(readonly caseValue: SpecCase<E, ExecutedSpec<E>>) {}
17
+ }
18
+
19
+ export class TestCase<E> {
20
+ readonly _tag = ExecutedSpecCaseTag.Test;
21
+ constructor(readonly test: Either<TestFailure<E>, TestSuccess>, readonly annotations: TestAnnotationMap) {}
22
+ }
23
+
24
+ export class LabeledCase<A> {
25
+ readonly _tag = ExecutedSpecCaseTag.Labeled;
26
+ constructor(readonly label: string, readonly spec: A) {}
27
+ }
28
+
29
+ export class MultipleCase<A> {
30
+ readonly _tag = ExecutedSpecCaseTag.Multiple;
31
+ constructor(readonly specs: Conc<A>) {}
32
+ }
33
+
34
+ /**
35
+ * @tsplus type fncts.test.data.ExecutedSpecCase
36
+ */
37
+ export type SpecCase<E, A> = TestCase<E> | LabeledCase<A> | MultipleCase<A>;
@@ -0,0 +1,4 @@
1
+ // codegen:start { preset: barrel, include: ./ExecutedSpec/*.ts }
2
+ export * from "./ExecutedSpec/api.js";
3
+ export * from "./ExecutedSpec/definition.js";
4
+ // codegen:end
@@ -0,0 +1,153 @@
1
+ import type { Line } from "./LogLine/Line.js";
2
+ import type { TestAnnotationMap } from "./TestAnnotationMap.js";
3
+
4
+ import { matchTag_ } from "@fncts/base/util/pattern";
5
+
6
+ export interface Failed {
7
+ readonly _tag: "Failed";
8
+ }
9
+
10
+ export const Failed: Failed = {
11
+ _tag: "Failed",
12
+ };
13
+
14
+ export interface Passed {
15
+ readonly _tag: "Passed";
16
+ }
17
+
18
+ export const Passed: Passed = {
19
+ _tag: "Passed",
20
+ };
21
+
22
+ export interface Ignored {
23
+ readonly _tag: "Ignored";
24
+ }
25
+
26
+ export const Ignored: Ignored = {
27
+ _tag: "Ignored",
28
+ };
29
+
30
+ export type Status = Failed | Passed | Ignored;
31
+
32
+ interface Test {
33
+ readonly _tag: "Test";
34
+ }
35
+
36
+ export const Test: ResultType = {
37
+ _tag: "Test",
38
+ };
39
+
40
+ export interface Suite {
41
+ readonly _tag: "Suite";
42
+ }
43
+
44
+ export const Suite: ResultType = {
45
+ _tag: "Suite",
46
+ };
47
+
48
+ export interface Other {
49
+ readonly _tag: "Other";
50
+ }
51
+
52
+ export const Other: ResultType = {
53
+ _tag: "Other",
54
+ };
55
+
56
+ export type ResultType = Test | Suite | Other;
57
+
58
+ /**
59
+ * @tsplus type fncts.test.ExecutionResult
60
+ */
61
+ export class ExecutionResult {
62
+ constructor(
63
+ readonly resultType: ResultType,
64
+ readonly label: string,
65
+ readonly status: Status,
66
+ readonly offset: number,
67
+ readonly annotations: List<TestAnnotationMap>,
68
+ readonly lines: List<Line>,
69
+ ) {}
70
+
71
+ withAnnotations(annotations: List<TestAnnotationMap>): ExecutionResult {
72
+ return new ExecutionResult(this.resultType, this.label, this.status, this.offset, annotations, this.lines);
73
+ }
74
+ }
75
+
76
+ export function rendered(
77
+ caseType: ResultType,
78
+ label: string,
79
+ status: Status,
80
+ offset: number,
81
+ lines: List<Line>,
82
+ ): ExecutionResult {
83
+ return new ExecutionResult(caseType, label, status, offset, Nil(), lines);
84
+ }
85
+
86
+ /**
87
+ * @tsplus operator fncts.test.ExecutionResult &&
88
+ */
89
+ export function and_(self: ExecutionResult, that: ExecutionResult): ExecutionResult {
90
+ if (self.status._tag === "Ignored") {
91
+ return that;
92
+ }
93
+ if (that.status._tag === "Ignored") {
94
+ return self;
95
+ }
96
+ if (self.status._tag === "Failed" && that.status._tag === "Failed") {
97
+ return new ExecutionResult(
98
+ self.resultType,
99
+ self.label,
100
+ self.status,
101
+ self.offset,
102
+ self.annotations,
103
+ self.lines.concat(that.lines.tail.getOrElse(Nil())),
104
+ );
105
+ }
106
+ if (self.status._tag === "Passed") {
107
+ return that;
108
+ }
109
+ if (that.status._tag === "Passed") {
110
+ return self;
111
+ }
112
+ throw new Error("BUG");
113
+ }
114
+
115
+ /**
116
+ * @tsplus operator fncts.test.ExecutionResult ||
117
+ */
118
+ export function or_(self: ExecutionResult, that: ExecutionResult): ExecutionResult {
119
+ if (self.status._tag === "Ignored") {
120
+ return that;
121
+ }
122
+ if (that.status._tag === "Ignored") {
123
+ return self;
124
+ }
125
+ if (self.status._tag === "Failed" && that.status._tag === "Failed") {
126
+ return new ExecutionResult(
127
+ self.resultType,
128
+ self.label,
129
+ self.status,
130
+ self.offset,
131
+ self.annotations,
132
+ self.lines.concat(that.lines.tail.getOrElse(Nil())),
133
+ );
134
+ }
135
+ if (self.status._tag === "Passed") {
136
+ return self;
137
+ }
138
+ if (that.status._tag === "Passed") {
139
+ return that;
140
+ }
141
+ throw new Error("BUG");
142
+ }
143
+
144
+ /**
145
+ * @tsplus getter fncts.test.ExecutionResult invert
146
+ */
147
+ export function invert(self: ExecutionResult): ExecutionResult {
148
+ return matchTag_(self.status, {
149
+ Ignored: () => self,
150
+ Failed: () => new ExecutionResult(self.resultType, self.label, Passed, self.offset, self.annotations, self.lines),
151
+ Passed: () => new ExecutionResult(self.resultType, self.label, Failed, self.offset, self.annotations, self.lines),
152
+ });
153
+ }
@@ -0,0 +1,13 @@
1
+ import type { FailureDetailsResult } from "./AssertionResult.js";
2
+ import type { AssertionValue } from "./AssertionValue.js";
3
+ import type { FreeBooleanAlgebra } from "./FreeBooleanAlgebra.js";
4
+ import type { GenFailureDetails } from "./GenFailureDetails.js";
5
+
6
+ /**
7
+ * @tsplus type fncts.test.FreeBooleanAlgebra
8
+ */
9
+ export type TestResult = FreeBooleanAlgebra<FailureDetailsResult>;
10
+
11
+ export class FailureDetails {
12
+ constructor(readonly assertion: Cons<AssertionValue<any>>, readonly gen: Maybe<GenFailureDetails<any>>) {}
13
+ }
@@ -0,0 +1,152 @@
1
+ import { And, FreeBooleanAlgebra, FreeBooleanAlgebraTag, Not, Or, Value } from "./definition.js";
2
+
3
+ /**
4
+ * @tsplus fluent fncts.test.FreeBooleanAlgebra and
5
+ * @tsplus operator fncts.test.FreeBooleanAlgebra &&
6
+ */
7
+ export function and_<A>(left: FreeBooleanAlgebra<A>, right: FreeBooleanAlgebra<A>): FreeBooleanAlgebra<A> {
8
+ return new And(left, right);
9
+ }
10
+
11
+ /**
12
+ * @tsplus fluent fncts.test.FreeBooleanAlgebra flatMap
13
+ */
14
+ export function flatMap_<A, B>(self: FreeBooleanAlgebra<A>, f: (a: A) => FreeBooleanAlgebra<B>): FreeBooleanAlgebra<B> {
15
+ return self.fold({
16
+ Value: f,
17
+ And: (l, r) => l && r,
18
+ Or: (l, r) => l || r,
19
+ Not: (v) => v.invert,
20
+ });
21
+ }
22
+
23
+ /**
24
+ * @tsplus static fncts.test.FreeBooleanAlgebraOps failure
25
+ */
26
+ export function failure<A>(a: A): FreeBooleanAlgebra<A> {
27
+ return FreeBooleanAlgebra.success(a).invert;
28
+ }
29
+
30
+ /**
31
+ * @tsplus getter fncts.test.FreeBooleanAlgebra failures
32
+ */
33
+ export function failures<A>(self: FreeBooleanAlgebra<A>): Maybe<FreeBooleanAlgebra<A>> {
34
+ return self
35
+ .fold<A, Either<FreeBooleanAlgebra<A>, FreeBooleanAlgebra<A>>>({
36
+ Value: (a) => Either.right(FreeBooleanAlgebra.success(a)),
37
+ And: (l, r) =>
38
+ l.isRight()
39
+ ? r.isRight()
40
+ ? Either.right(l.right && r.right)
41
+ : r
42
+ : r.isRight()
43
+ ? l
44
+ : Either.left(l.left && r.left),
45
+ Or: (l, r) =>
46
+ l.isRight()
47
+ ? r.isRight()
48
+ ? Either.right(l.right || r.right)
49
+ : l
50
+ : r.isRight()
51
+ ? r
52
+ : Either.left(l.left || r.left),
53
+ Not: (v) => v.swap,
54
+ })
55
+ .match(Maybe.just, () => Nothing());
56
+ }
57
+
58
+ /**
59
+ * @tsplus fluent fncts.test.FreeBooleanAlgebra foldEval
60
+ */
61
+ export function foldEval_<A, B>(
62
+ self: FreeBooleanAlgebra<A>,
63
+ cases: {
64
+ Value: (value: A) => B;
65
+ And: (left: B, right: B) => B;
66
+ Or: (left: B, right: B) => B;
67
+ Not: (value: B) => B;
68
+ },
69
+ ): Eval<B> {
70
+ return Eval.defer(() => {
71
+ switch (self._tag) {
72
+ case FreeBooleanAlgebraTag.Value:
73
+ return Eval.now(cases.Value(self.value));
74
+ case FreeBooleanAlgebraTag.And:
75
+ return self.left.foldEval(cases).zipWith(self.right.foldEval(cases), cases.And);
76
+ case FreeBooleanAlgebraTag.Or:
77
+ return self.left.foldEval(cases).zipWith(self.right.foldEval(cases), cases.Or);
78
+ case FreeBooleanAlgebraTag.Not:
79
+ return self.result.foldEval(cases).map(cases.Not);
80
+ }
81
+ });
82
+ }
83
+
84
+ /**
85
+ * @tsplus fluent fncts.test.FreeBooleanAlgebra fold
86
+ */
87
+ export function fold_<A, B>(
88
+ self: FreeBooleanAlgebra<A>,
89
+ cases: {
90
+ Value: (value: A) => B;
91
+ And: (left: B, right: B) => B;
92
+ Or: (left: B, right: B) => B;
93
+ Not: (value: B) => B;
94
+ },
95
+ ): B {
96
+ return self.foldEval(cases).run;
97
+ }
98
+
99
+ /**
100
+ * @tsplus fluent fncts.test.FreeBooleanAlgebra iff
101
+ */
102
+ export function iff_<A>(left: FreeBooleanAlgebra<A>, right: FreeBooleanAlgebra<A>): FreeBooleanAlgebra<A> {
103
+ return left.implies(right) && right.implies(left);
104
+ }
105
+
106
+ /**
107
+ * @tsplus fluent fncts.test.FreeBooleanAlgebra implies
108
+ */
109
+ export function implies_<A>(left: FreeBooleanAlgebra<A>, right: FreeBooleanAlgebra<A>): FreeBooleanAlgebra<A> {
110
+ return left.invert || right;
111
+ }
112
+
113
+ /**
114
+ * @tsplus getter fncts.test.FreeBooleanAlgebra isFailure
115
+ */
116
+ export function isFailure<A>(self: FreeBooleanAlgebra<A>): boolean {
117
+ return !self.isSuccess;
118
+ }
119
+
120
+ /**
121
+ * @tsplus getter fncts.test.FreeBooleanAlgebra isSuccess
122
+ */
123
+ export function isSuccess<A>(self: FreeBooleanAlgebra<A>): boolean {
124
+ return self.fold({
125
+ Value: (): boolean => true,
126
+ And: (l, r) => l && r,
127
+ Or: (l, r) => l || r,
128
+ Not: (v) => !v,
129
+ });
130
+ }
131
+
132
+ /**
133
+ * @tsplus getter fncts.test.FreeBooleanAlgebra invert
134
+ */
135
+ export function not<A>(self: FreeBooleanAlgebra<A>): FreeBooleanAlgebra<A> {
136
+ return new Not(self);
137
+ }
138
+
139
+ /**
140
+ * @tsplus fluent fncts.test.FreeBooleanAlgebra or
141
+ * @tsplus operator fncts.test.FreeBooleanAlgebra ||
142
+ */
143
+ export function or_<A>(left: FreeBooleanAlgebra<A>, right: FreeBooleanAlgebra<A>): FreeBooleanAlgebra<A> {
144
+ return new Or(left, right);
145
+ }
146
+
147
+ /**
148
+ * @tsplus static fncts.test.FreeBooleanAlgebraOps success
149
+ */
150
+ export function success<A>(a: A): FreeBooleanAlgebra<A> {
151
+ return new Value(a);
152
+ }
@@ -0,0 +1,38 @@
1
+ export const enum FreeBooleanAlgebraTag {
2
+ Value = "Value",
3
+ And = "And",
4
+ Or = "Or",
5
+ Not = "Not",
6
+ }
7
+
8
+ export class Value<A> {
9
+ readonly _tag = FreeBooleanAlgebraTag.Value;
10
+ constructor(readonly value: A) {}
11
+ }
12
+
13
+ export class And<A> {
14
+ readonly _tag = FreeBooleanAlgebraTag.And;
15
+ constructor(readonly left: FreeBooleanAlgebra<A>, readonly right: FreeBooleanAlgebra<A>) {}
16
+ }
17
+
18
+ export class Or<A> {
19
+ readonly _tag = FreeBooleanAlgebraTag.Or;
20
+ constructor(readonly left: FreeBooleanAlgebra<A>, readonly right: FreeBooleanAlgebra<A>) {}
21
+ }
22
+
23
+ export class Not<A> {
24
+ readonly _tag = FreeBooleanAlgebraTag.Not;
25
+ constructor(readonly result: FreeBooleanAlgebra<A>) {}
26
+ }
27
+
28
+ /**
29
+ * @tsplus type fncts.test.FreeBooleanAlgebra
30
+ */
31
+ export type FreeBooleanAlgebra<A> = Value<A> | And<A> | Or<A> | Not<A>;
32
+
33
+ /**
34
+ * @tsplus type fncts.test.FreeBooleanAlgebraOps
35
+ */
36
+ export interface FreeBooleanAlgebraOps {}
37
+
38
+ export const FreeBooleanAlgebra: FreeBooleanAlgebraOps = {};
@@ -0,0 +1,4 @@
1
+ // codegen:start { preset: barrel, include: ./FreeBooleanAlgebra/*.ts }
2
+ export * from "./FreeBooleanAlgebra/api.js";
3
+ export * from "./FreeBooleanAlgebra/definition.js";
4
+ // codegen:end
@@ -0,0 +1,3 @@
1
+ export class GenFailureDetails<A = any> {
2
+ constructor(readonly initialInput: A, readonly shrunkenInput: A, readonly iterations: number) {}
3
+ }
@@ -0,0 +1,59 @@
1
+ import { Line } from "./Line.js";
2
+ import { Style } from "./Style.js";
3
+
4
+ /**
5
+ * @tsplus type fncts.test.data.Fragment
6
+ * @tsplus companion fncts.test.data.FragmentOps
7
+ */
8
+ export class Fragment {
9
+ constructor(readonly text: string, readonly style: Style = Style.Default) {}
10
+ }
11
+
12
+ /**
13
+ * @tsplus static fncts.test.data.FragmentOps __call
14
+ */
15
+ export function makeFragment(text: string, style = Style.Default): Fragment {
16
+ return new Fragment(text, style);
17
+ }
18
+
19
+ /**
20
+ * @tsplus operator fncts.test.data.Fragment +
21
+ */
22
+ export function appendTo(line: Line, self: Fragment): Line {
23
+ return new Line(line.fragments.append(self), line.offset);
24
+ }
25
+
26
+ /**
27
+ * @tsplus operator fncts.test.data.Fragment +
28
+ */
29
+ export function prependTo(self: Fragment, line: Line): Line {
30
+ return new Line(line.fragments.prepend(self), line.offset);
31
+ }
32
+
33
+ /**
34
+ * @tsplus operator fncts.test.data.Fragment +
35
+ */
36
+ export function append(self: Fragment, that: Fragment): Line {
37
+ return new Line(Vector(self, that));
38
+ }
39
+
40
+ /**
41
+ * @tsplus getter fncts.test.data.Fragment toLine
42
+ */
43
+ export function toLine(self: Fragment): Line {
44
+ return new Line(Vector(self));
45
+ }
46
+
47
+ /**
48
+ * @tsplus getter fncts.test.data.Fragment bold
49
+ */
50
+ export function bold(self: Fragment): Fragment {
51
+ return new Fragment(self.text, Style.Bold(self));
52
+ }
53
+
54
+ /**
55
+ * @tsplus getter fncts.test.data.Fragment underlined
56
+ */
57
+ export function underlined(self: Fragment): Fragment {
58
+ return new Fragment(self.text, Style.Underlined(self));
59
+ }