@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.
- package/_cjs/api.cjs +39 -76
- package/_cjs/api.cjs.map +1 -1
- package/_cjs/control/AbstractRunnableSpec.cjs +1 -12
- package/_cjs/control/AbstractRunnableSpec.cjs.map +1 -1
- package/_cjs/control/Annotations/api.cjs +0 -12
- package/_cjs/control/Annotations/api.cjs.map +1 -1
- package/_cjs/control/Annotations/definition.cjs +0 -6
- package/_cjs/control/Annotations/definition.cjs.map +1 -1
- package/_cjs/control/Annotations/live.cjs +6 -29
- package/_cjs/control/Annotations/live.cjs.map +1 -1
- package/_cjs/control/Annotations.cjs +0 -6
- package/_cjs/control/Annotations.cjs.map +1 -1
- package/_cjs/control/Assertion/api.cjs +50 -100
- package/_cjs/control/Assertion/api.cjs.map +1 -1
- package/_cjs/control/Assertion/definition.cjs +0 -8
- package/_cjs/control/Assertion/definition.cjs.map +1 -1
- package/_cjs/control/Assertion.cjs +0 -4
- package/_cjs/control/Assertion.cjs.map +1 -1
- package/_cjs/control/AssertionIO/api.cjs +20 -26
- package/_cjs/control/AssertionIO/api.cjs.map +1 -1
- package/_cjs/control/AssertionIO/definition.cjs +0 -8
- package/_cjs/control/AssertionIO/definition.cjs.map +1 -1
- package/_cjs/control/AssertionIO.cjs +0 -4
- package/_cjs/control/AssertionIO.cjs.map +1 -1
- package/_cjs/control/DefaultRunnableSpec.cjs +0 -12
- package/_cjs/control/DefaultRunnableSpec.cjs.map +1 -1
- package/_cjs/control/DefaultTestReporter/definition.cjs.map +1 -1
- package/_cjs/control/DefaultTestReporter/render.cjs +54 -123
- package/_cjs/control/DefaultTestReporter/render.cjs.map +1 -1
- package/_cjs/control/DefaultTestReporter.cjs +0 -4
- package/_cjs/control/DefaultTestReporter.cjs.map +1 -1
- package/_cjs/control/FreeBooleanAlgebraIO/api.cjs +20 -36
- package/_cjs/control/FreeBooleanAlgebraIO/api.cjs.map +1 -1
- package/_cjs/control/FreeBooleanAlgebraIO/definition.cjs.map +1 -1
- package/_cjs/control/FreeBooleanAlgebraIO.cjs +0 -4
- package/_cjs/control/FreeBooleanAlgebraIO.cjs.map +1 -1
- package/_cjs/control/Gen/api.cjs +533 -200
- package/_cjs/control/Gen/api.cjs.map +1 -1
- package/_cjs/control/Gen/definition.cjs +0 -3
- package/_cjs/control/Gen/definition.cjs.map +1 -1
- package/_cjs/control/Gen.cjs +0 -97
- package/_cjs/control/Gen.cjs.map +1 -1
- package/_cjs/control/Live/definition.cjs +5 -23
- package/_cjs/control/Live/definition.cjs.map +1 -1
- package/_cjs/control/Live.cjs +0 -2
- package/_cjs/control/Live.cjs.map +1 -1
- package/_cjs/control/RunnableSpec.cjs +8 -28
- package/_cjs/control/RunnableSpec.cjs.map +1 -1
- package/_cjs/control/Sample/api.cjs +66 -107
- package/_cjs/control/Sample/api.cjs.map +1 -1
- package/_cjs/control/Sample/definition.cjs +0 -3
- package/_cjs/control/Sample/definition.cjs.map +1 -1
- package/_cjs/control/Sample.cjs +0 -4
- package/_cjs/control/Sample.cjs.map +1 -1
- package/_cjs/control/Sized/api.cjs +0 -8
- package/_cjs/control/Sized/api.cjs.map +1 -1
- package/_cjs/control/Sized/definition.cjs +0 -6
- package/_cjs/control/Sized/definition.cjs.map +1 -1
- package/_cjs/control/Sized/live.cjs +3 -15
- package/_cjs/control/Sized/live.cjs.map +1 -1
- package/_cjs/control/Sized.cjs +0 -6
- package/_cjs/control/Sized.cjs.map +1 -1
- package/_cjs/control/Spec/api.cjs +322 -367
- package/_cjs/control/Spec/api.cjs.map +1 -1
- package/_cjs/control/Spec/definition.cjs +6 -45
- package/_cjs/control/Spec/definition.cjs.map +1 -1
- package/_cjs/control/Spec.cjs +0 -4
- package/_cjs/control/Spec.cjs.map +1 -1
- package/_cjs/control/SummaryBuilder.cjs +10 -31
- package/_cjs/control/SummaryBuilder.cjs.map +1 -1
- package/_cjs/control/Test.cjs +1 -11
- package/_cjs/control/Test.cjs.map +1 -1
- package/_cjs/control/TestAnnotationRenderer/api.cjs +20 -45
- package/_cjs/control/TestAnnotationRenderer/api.cjs.map +1 -1
- package/_cjs/control/TestAnnotationRenderer/definition.cjs +4 -20
- package/_cjs/control/TestAnnotationRenderer/definition.cjs.map +1 -1
- package/_cjs/control/TestAnnotationRenderer.cjs +0 -4
- package/_cjs/control/TestAnnotationRenderer.cjs.map +1 -1
- package/_cjs/control/TestAspect/api.cjs +14 -55
- package/_cjs/control/TestAspect/api.cjs.map +1 -1
- package/_cjs/control/TestAspect.cjs +0 -4
- package/_cjs/control/TestAspect.cjs.map +1 -1
- package/_cjs/control/TestClock/api.cjs +1 -22
- package/_cjs/control/TestClock/api.cjs.map +1 -1
- package/_cjs/control/TestClock/definition.cjs +50 -110
- package/_cjs/control/TestClock/definition.cjs.map +1 -1
- package/_cjs/control/TestClock.cjs +0 -4
- package/_cjs/control/TestClock.cjs.map +1 -1
- package/_cjs/control/TestConsole/api.cjs +3 -21
- package/_cjs/control/TestConsole/api.cjs.map +1 -1
- package/_cjs/control/TestConsole/definition.cjs +23 -48
- package/_cjs/control/TestConsole/definition.cjs.map +1 -1
- package/_cjs/control/TestConsole.cjs +0 -4
- package/_cjs/control/TestConsole.cjs.map +1 -1
- package/_cjs/control/TestEnvironment.cjs +3 -15
- package/_cjs/control/TestEnvironment.cjs.map +1 -1
- package/_cjs/control/TestExecutor.cjs +3 -17
- package/_cjs/control/TestExecutor.cjs.map +1 -1
- package/_cjs/control/TestLogger.cjs +2 -17
- package/_cjs/control/TestLogger.cjs.map +1 -1
- package/_cjs/control/TestRandom/api.cjs +9 -39
- package/_cjs/control/TestRandom/api.cjs.map +1 -1
- package/_cjs/control/TestRandom/definition.cjs +61 -145
- package/_cjs/control/TestRandom/definition.cjs.map +1 -1
- package/_cjs/control/TestRandom.cjs +0 -4
- package/_cjs/control/TestRandom.cjs.map +1 -1
- package/_cjs/control/TestRenderer/ConsoleRenderer.cjs +11 -36
- package/_cjs/control/TestRenderer/ConsoleRenderer.cjs.map +1 -1
- package/_cjs/control/TestRunner.cjs +2 -19
- package/_cjs/control/TestRunner.cjs.map +1 -1
- package/_cjs/data/AssertionData.cjs +0 -14
- package/_cjs/data/AssertionData.cjs.map +1 -1
- package/_cjs/data/AssertionResult.cjs +0 -8
- package/_cjs/data/AssertionResult.cjs.map +1 -1
- package/_cjs/data/AssertionValue/api.cjs +23 -30
- package/_cjs/data/AssertionValue/api.cjs.map +1 -1
- package/_cjs/data/AssertionValue/definition.cjs +0 -8
- package/_cjs/data/AssertionValue/definition.cjs.map +1 -1
- package/_cjs/data/AssertionValue.cjs +0 -4
- package/_cjs/data/AssertionValue.cjs.map +1 -1
- package/_cjs/data/ExecutedSpec/api.cjs +61 -75
- package/_cjs/data/ExecutedSpec/api.cjs.map +1 -1
- package/_cjs/data/ExecutedSpec/definition.cjs +3 -21
- package/_cjs/data/ExecutedSpec/definition.cjs.map +1 -1
- package/_cjs/data/ExecutedSpec.cjs +0 -4
- package/_cjs/data/ExecutedSpec.cjs.map +1 -1
- package/_cjs/data/ExecutionResult.cjs +42 -67
- package/_cjs/data/ExecutionResult.cjs.map +1 -1
- package/_cjs/data/FailureDetails.cjs +0 -3
- package/_cjs/data/FailureDetails.cjs.map +1 -1
- package/_cjs/data/FreeBooleanAlgebra/api.cjs +82 -115
- package/_cjs/data/FreeBooleanAlgebra/api.cjs.map +1 -1
- package/_cjs/data/FreeBooleanAlgebra/definition.cjs +4 -24
- package/_cjs/data/FreeBooleanAlgebra/definition.cjs.map +1 -1
- package/_cjs/data/FreeBooleanAlgebra.cjs +0 -4
- package/_cjs/data/FreeBooleanAlgebra.cjs.map +1 -1
- package/_cjs/data/GenFailureDetails.cjs +0 -3
- package/_cjs/data/GenFailureDetails.cjs.map +1 -1
- package/_cjs/data/LogLine/Fragment.cjs +2 -24
- package/_cjs/data/LogLine/Fragment.cjs.map +1 -1
- package/_cjs/data/LogLine/Line.cjs +11 -41
- package/_cjs/data/LogLine/Line.cjs.map +1 -1
- package/_cjs/data/LogLine/Message.cjs +32 -58
- package/_cjs/data/LogLine/Message.cjs.map +1 -1
- package/_cjs/data/LogLine/Style.cjs +10 -44
- package/_cjs/data/LogLine/Style.cjs.map +1 -1
- package/_cjs/data/LogLine/api.cjs +0 -15
- package/_cjs/data/LogLine/api.cjs.map +1 -1
- package/_cjs/data/LogLine.cjs +0 -4
- package/_cjs/data/LogLine.cjs.map +1 -1
- package/_cjs/data/Render/api.cjs +0 -4
- package/_cjs/data/Render/api.cjs.map +1 -1
- package/_cjs/data/Render/definition.cjs +3 -17
- package/_cjs/data/Render/definition.cjs.map +1 -1
- package/_cjs/data/Render.cjs +0 -4
- package/_cjs/data/Render.cjs.map +1 -1
- package/_cjs/data/RenderParam/api.cjs +3 -15
- package/_cjs/data/RenderParam/api.cjs.map +1 -1
- package/_cjs/data/RenderParam/definition.cjs +2 -12
- package/_cjs/data/RenderParam/definition.cjs.map +1 -1
- package/_cjs/data/RenderParam.cjs +0 -4
- package/_cjs/data/RenderParam.cjs.map +1 -1
- package/_cjs/data/Summary.cjs +0 -3
- package/_cjs/data/Summary.cjs.map +1 -1
- package/_cjs/data/TestAnnotation/api.cjs +2 -17
- package/_cjs/data/TestAnnotation/api.cjs.map +1 -1
- package/_cjs/data/TestAnnotation/definition.cjs +4 -19
- package/_cjs/data/TestAnnotation/definition.cjs.map +1 -1
- package/_cjs/data/TestAnnotation.cjs +0 -4
- package/_cjs/data/TestAnnotation.cjs.map +1 -1
- package/_cjs/data/TestAnnotationMap.cjs +4 -19
- package/_cjs/data/TestAnnotationMap.cjs.map +1 -1
- package/_cjs/data/TestArgs/definition.cjs +0 -3
- package/_cjs/data/TestArgs/definition.cjs.map +1 -1
- package/_cjs/data/TestArgs.cjs +0 -2
- package/_cjs/data/TestArgs.cjs.map +1 -1
- package/_cjs/data/TestConfig.cjs +0 -17
- package/_cjs/data/TestConfig.cjs.map +1 -1
- package/_cjs/data/TestFailure.cjs +2 -23
- package/_cjs/data/TestFailure.cjs.map +1 -1
- package/_cjs/data/TestSuccess.cjs +2 -16
- package/_cjs/data/TestSuccess.cjs.map +1 -1
- package/_cjs/data/TestTimeoutException.cjs +0 -3
- package/_cjs/data/TestTimeoutException.cjs.map +1 -1
- package/_cjs/demo.cjs +5 -15
- package/_cjs/demo.cjs.map +1 -1
- package/_cjs/util/math.cjs +20 -148
- package/_cjs/util/math.cjs.map +1 -1
- package/_mjs/api.mjs +37 -40
- package/_mjs/api.mjs.map +1 -1
- package/_mjs/control/AbstractRunnableSpec.mjs +1 -7
- package/_mjs/control/AbstractRunnableSpec.mjs.map +1 -1
- package/_mjs/control/Annotations/api.mjs +0 -4
- package/_mjs/control/Annotations/api.mjs.map +1 -1
- package/_mjs/control/Annotations/definition.mjs +0 -2
- package/_mjs/control/Annotations/definition.mjs.map +1 -1
- package/_mjs/control/Annotations/live.mjs +6 -11
- package/_mjs/control/Annotations/live.mjs.map +1 -1
- package/_mjs/control/Annotations.mjs.map +1 -1
- package/_mjs/control/Assertion/api.mjs +43 -46
- package/_mjs/control/Assertion/api.mjs.map +1 -1
- package/_mjs/control/Assertion/definition.mjs +0 -2
- package/_mjs/control/Assertion/definition.mjs.map +1 -1
- package/_mjs/control/Assertion.mjs.map +1 -1
- package/_mjs/control/AssertionIO/api.mjs +17 -14
- package/_mjs/control/AssertionIO/api.mjs.map +1 -1
- package/_mjs/control/AssertionIO/definition.mjs +0 -3
- package/_mjs/control/AssertionIO/definition.mjs.map +1 -1
- package/_mjs/control/AssertionIO.mjs.map +1 -1
- package/_mjs/control/DefaultRunnableSpec.mjs +0 -1
- package/_mjs/control/DefaultRunnableSpec.mjs.map +1 -1
- package/_mjs/control/DefaultTestReporter/definition.mjs.map +1 -1
- package/_mjs/control/DefaultTestReporter/render.mjs +54 -87
- package/_mjs/control/DefaultTestReporter/render.mjs.map +1 -1
- package/_mjs/control/DefaultTestReporter.mjs.map +1 -1
- package/_mjs/control/FreeBooleanAlgebraIO/api.mjs +18 -22
- package/_mjs/control/FreeBooleanAlgebraIO/api.mjs.map +1 -1
- package/_mjs/control/FreeBooleanAlgebraIO/definition.mjs.map +1 -1
- package/_mjs/control/FreeBooleanAlgebraIO.mjs.map +1 -1
- package/_mjs/control/Gen/api.mjs +462 -138
- package/_mjs/control/Gen/api.mjs.map +1 -1
- package/_mjs/control/Gen/definition.mjs +0 -1
- package/_mjs/control/Gen/definition.mjs.map +1 -1
- package/_mjs/control/Gen.mjs +1 -10
- package/_mjs/control/Gen.mjs.map +1 -1
- package/_mjs/control/Live/definition.mjs +5 -10
- package/_mjs/control/Live/definition.mjs.map +1 -1
- package/_mjs/control/Live.mjs.map +1 -1
- package/_mjs/control/RunnableSpec.mjs +8 -11
- package/_mjs/control/RunnableSpec.mjs.map +1 -1
- package/_mjs/control/Sample/api.mjs +57 -73
- package/_mjs/control/Sample/api.mjs.map +1 -1
- package/_mjs/control/Sample/definition.mjs +0 -1
- package/_mjs/control/Sample/definition.mjs.map +1 -1
- package/_mjs/control/Sample.mjs.map +1 -1
- package/_mjs/control/Sized/api.mjs +0 -2
- package/_mjs/control/Sized/api.mjs.map +1 -1
- package/_mjs/control/Sized/definition.mjs +0 -2
- package/_mjs/control/Sized/definition.mjs.map +1 -1
- package/_mjs/control/Sized/live.mjs +3 -6
- package/_mjs/control/Sized/live.mjs.map +1 -1
- package/_mjs/control/Sized.mjs.map +1 -1
- package/_mjs/control/Spec/api.mjs +300 -309
- package/_mjs/control/Spec/api.mjs.map +1 -1
- package/_mjs/control/Spec/definition.mjs +6 -31
- package/_mjs/control/Spec/definition.mjs.map +1 -1
- package/_mjs/control/Spec.mjs.map +1 -1
- package/_mjs/control/SummaryBuilder.mjs +10 -15
- package/_mjs/control/SummaryBuilder.mjs.map +1 -1
- package/_mjs/control/Test.mjs +1 -2
- package/_mjs/control/Test.mjs.map +1 -1
- package/_mjs/control/TestAnnotationRenderer/api.mjs +20 -34
- package/_mjs/control/TestAnnotationRenderer/api.mjs.map +1 -1
- package/_mjs/control/TestAnnotationRenderer/definition.mjs +4 -10
- package/_mjs/control/TestAnnotationRenderer/definition.mjs.map +1 -1
- package/_mjs/control/TestAnnotationRenderer.mjs.map +1 -1
- package/_mjs/control/TestAspect/api.mjs +14 -18
- package/_mjs/control/TestAspect/api.mjs.map +1 -1
- package/_mjs/control/TestAspect.mjs.map +1 -1
- package/_mjs/control/TestClock/api.mjs +1 -5
- package/_mjs/control/TestClock/api.mjs.map +1 -1
- package/_mjs/control/TestClock/definition.mjs +50 -72
- package/_mjs/control/TestClock/definition.mjs.map +1 -1
- package/_mjs/control/TestClock.mjs.map +1 -1
- package/_mjs/control/TestConsole/api.mjs +3 -6
- package/_mjs/control/TestConsole/api.mjs.map +1 -1
- package/_mjs/control/TestConsole/definition.mjs +23 -32
- package/_mjs/control/TestConsole/definition.mjs.map +1 -1
- package/_mjs/control/TestConsole.mjs.map +1 -1
- package/_mjs/control/TestEnvironment.mjs +3 -3
- package/_mjs/control/TestEnvironment.mjs.map +1 -1
- package/_mjs/control/TestExecutor.mjs +3 -3
- package/_mjs/control/TestExecutor.mjs.map +1 -1
- package/_mjs/control/TestLogger.mjs +2 -7
- package/_mjs/control/TestLogger.mjs.map +1 -1
- package/_mjs/control/TestRandom/api.mjs +9 -19
- package/_mjs/control/TestRandom/api.mjs.map +1 -1
- package/_mjs/control/TestRandom/definition.mjs +61 -121
- package/_mjs/control/TestRandom/definition.mjs.map +1 -1
- package/_mjs/control/TestRandom.mjs.map +1 -1
- package/_mjs/control/TestRenderer/ConsoleRenderer.mjs +11 -21
- package/_mjs/control/TestRenderer/ConsoleRenderer.mjs.map +1 -1
- package/_mjs/control/TestRunner.mjs +2 -6
- package/_mjs/control/TestRunner.mjs.map +1 -1
- package/_mjs/data/AssertionData.mjs +0 -5
- package/_mjs/data/AssertionData.mjs.map +1 -1
- package/_mjs/data/AssertionResult.mjs +0 -2
- package/_mjs/data/AssertionResult.mjs.map +1 -1
- package/_mjs/data/AssertionValue/api.mjs +23 -20
- package/_mjs/data/AssertionValue/api.mjs.map +1 -1
- package/_mjs/data/AssertionValue/definition.mjs +0 -2
- package/_mjs/data/AssertionValue/definition.mjs.map +1 -1
- package/_mjs/data/AssertionValue.mjs.map +1 -1
- package/_mjs/data/ExecutedSpec/api.mjs +55 -57
- package/_mjs/data/ExecutedSpec/api.mjs.map +1 -1
- package/_mjs/data/ExecutedSpec/definition.mjs +5 -13
- package/_mjs/data/ExecutedSpec/definition.mjs.map +1 -1
- package/_mjs/data/ExecutedSpec.mjs.map +1 -1
- package/_mjs/data/ExecutionResult.mjs +40 -52
- package/_mjs/data/ExecutionResult.mjs.map +1 -1
- package/_mjs/data/FailureDetails.mjs +0 -1
- package/_mjs/data/FailureDetails.mjs.map +1 -1
- package/_mjs/data/FreeBooleanAlgebra/api.mjs +70 -87
- package/_mjs/data/FreeBooleanAlgebra/api.mjs.map +1 -1
- package/_mjs/data/FreeBooleanAlgebra/definition.mjs +8 -16
- package/_mjs/data/FreeBooleanAlgebra/definition.mjs.map +1 -1
- package/_mjs/data/FreeBooleanAlgebra.mjs.map +1 -1
- package/_mjs/data/GenFailureDetails.mjs +0 -1
- package/_mjs/data/GenFailureDetails.mjs.map +1 -1
- package/_mjs/data/LogLine/Fragment.mjs +2 -11
- package/_mjs/data/LogLine/Fragment.mjs.map +1 -1
- package/_mjs/data/LogLine/Line.mjs +11 -24
- package/_mjs/data/LogLine/Line.mjs.map +1 -1
- package/_mjs/data/LogLine/Message.mjs +26 -36
- package/_mjs/data/LogLine/Message.mjs.map +1 -1
- package/_mjs/data/LogLine/Style.mjs +10 -39
- package/_mjs/data/LogLine/Style.mjs.map +1 -1
- package/_mjs/data/LogLine/api.mjs.map +1 -1
- package/_mjs/data/LogLine.mjs.map +1 -1
- package/_mjs/data/Render/api.mjs +0 -2
- package/_mjs/data/Render/api.mjs.map +1 -1
- package/_mjs/data/Render/definition.mjs +3 -9
- package/_mjs/data/Render/definition.mjs.map +1 -1
- package/_mjs/data/Render.mjs.map +1 -1
- package/_mjs/data/RenderParam/api.mjs +3 -10
- package/_mjs/data/RenderParam/api.mjs.map +1 -1
- package/_mjs/data/RenderParam/definition.mjs +4 -8
- package/_mjs/data/RenderParam/definition.mjs.map +1 -1
- package/_mjs/data/RenderParam.mjs.map +1 -1
- package/_mjs/data/Summary.mjs +0 -1
- package/_mjs/data/Summary.mjs.map +1 -1
- package/_mjs/data/TestAnnotation/api.mjs +2 -8
- package/_mjs/data/TestAnnotation/api.mjs.map +1 -1
- package/_mjs/data/TestAnnotation/definition.mjs +4 -8
- package/_mjs/data/TestAnnotation/definition.mjs.map +1 -1
- package/_mjs/data/TestAnnotation.mjs.map +1 -1
- package/_mjs/data/TestAnnotationMap.mjs +4 -10
- package/_mjs/data/TestAnnotationMap.mjs.map +1 -1
- package/_mjs/data/TestArgs/definition.mjs +0 -1
- package/_mjs/data/TestArgs/definition.mjs.map +1 -1
- package/_mjs/data/TestArgs.mjs.map +1 -1
- package/_mjs/data/TestConfig.mjs +0 -8
- package/_mjs/data/TestConfig.mjs.map +1 -1
- package/_mjs/data/TestFailure.mjs +4 -12
- package/_mjs/data/TestFailure.mjs.map +1 -1
- package/_mjs/data/TestSuccess.mjs +4 -10
- package/_mjs/data/TestSuccess.mjs.map +1 -1
- package/_mjs/data/TestTimeoutException.mjs +0 -1
- package/_mjs/data/TestTimeoutException.mjs.map +1 -1
- package/_mjs/demo.mjs +5 -8
- package/_mjs/demo.mjs.map +1 -1
- package/_mjs/util/math.mjs +20 -117
- package/_mjs/util/math.mjs.map +1 -1
- package/_src/api.ts +36 -35
- package/_src/control/AbstractRunnableSpec.ts +0 -6
- package/_src/control/Annotations/live.ts +4 -10
- package/_src/control/Assertion/api.ts +36 -25
- package/_src/control/AssertionIO/api.ts +23 -17
- package/_src/control/DefaultTestReporter/render.ts +2 -12
- package/_src/control/FreeBooleanAlgebraIO/api.ts +12 -14
- package/_src/control/Gen/api.ts +476 -71
- package/_src/control/Gen.ts +0 -10
- package/_src/control/Live/definition.ts +0 -4
- package/_src/control/RunnableSpec.ts +1 -1
- package/_src/control/Sample/api.ts +78 -67
- package/_src/control/Spec/api.ts +235 -222
- package/_src/control/Spec/definition.ts +0 -2
- package/_src/control/SummaryBuilder.ts +0 -1
- package/_src/control/TestAnnotationRenderer/api.ts +17 -15
- package/_src/control/TestAnnotationRenderer/definition.ts +0 -2
- package/_src/control/TestAspect/api.ts +2 -3
- package/_src/control/TestClock/definition.ts +13 -25
- package/_src/control/TestConsole/definition.ts +1 -2
- package/_src/control/TestLogger.ts +0 -2
- package/_src/control/TestRandom/api.ts +5 -0
- package/_src/control/TestRandom/definition.ts +3 -37
- package/_src/control/TestRenderer/ConsoleRenderer.ts +0 -1
- package/_src/control/TestRunner.ts +0 -3
- package/_src/data/AssertionValue/api.ts +27 -23
- package/_src/data/AssertionValue/definition.ts +0 -1
- package/_src/data/ExecutedSpec/api.ts +41 -36
- package/_src/data/ExecutionResult.ts +54 -51
- package/_src/data/FreeBooleanAlgebra/api.ts +68 -58
- package/_src/data/LogLine/Line.ts +5 -3
- package/_src/data/LogLine/Message.ts +26 -18
- package/_src/data/LogLine/Style.ts +0 -1
- package/_src/data/Render/definition.ts +0 -2
- package/_src/data/RenderParam/api.ts +1 -1
- package/_src/data/TestAnnotation/api.ts +4 -2
- package/_src/data/TestAnnotation/definition.ts +0 -3
- package/_src/data/TestAnnotationMap.ts +2 -8
- package/_src/demo.ts +3 -4
- package/_src/util/math.ts +31 -17
- package/api.d.ts +12 -12
- package/control/AbstractRunnableSpec.d.ts +0 -1
- package/control/Annotations/live.d.ts +1 -1
- package/control/Assertion/api.d.ts +16 -12
- package/control/AssertionIO/api.d.ts +8 -8
- package/control/FreeBooleanAlgebraIO/api.d.ts +6 -6
- package/control/Gen/api.d.ts +216 -33
- package/control/Gen.d.ts +0 -7
- package/control/Sample/api.d.ts +14 -14
- package/control/Spec/api.d.ts +38 -41
- package/control/TestAnnotationRenderer/api.d.ts +3 -3
- package/control/TestClock/definition.d.ts +2 -2
- package/control/TestConsole/definition.d.ts +1 -1
- package/control/TestRandom/definition.d.ts +1 -1
- package/control/TestRunner.d.ts +1 -3
- package/data/AssertionValue/api.d.ts +8 -8
- package/data/ExecutedSpec/api.d.ts +8 -8
- package/data/ExecutionResult.d.ts +4 -4
- package/data/FreeBooleanAlgebra/api.d.ts +20 -20
- package/data/LogLine/Line.d.ts +2 -2
- package/data/LogLine/Message.d.ts +10 -10
- package/data/TestAnnotation/api.d.ts +1 -1
- package/data/TestAnnotation/definition.d.ts +2 -2
- package/package.json +4 -4
- package/_cjs/control/Gen/api/array.cjs +0 -50
- package/_cjs/control/Gen/api/array.cjs.map +0 -1
- package/_cjs/control/Gen/api/char.cjs +0 -129
- package/_cjs/control/Gen/api/char.cjs.map +0 -1
- package/_cjs/control/Gen/api/conc.cjs +0 -73
- package/_cjs/control/Gen/api/conc.cjs.map +0 -1
- package/_cjs/control/Gen/api/double.cjs +0 -82
- package/_cjs/control/Gen/api/double.cjs.map +0 -1
- package/_cjs/control/Gen/api/float.cjs +0 -55
- package/_cjs/control/Gen/api/float.cjs.map +0 -1
- package/_cjs/control/Gen/api/string.cjs +0 -102
- package/_cjs/control/Gen/api/string.cjs.map +0 -1
- package/_cjs/control/Gen/api/struct.cjs +0 -36
- package/_cjs/control/Gen/api/struct.cjs.map +0 -1
- package/_mjs/control/Gen/api/array.mjs +0 -31
- package/_mjs/control/Gen/api/array.mjs.map +0 -1
- package/_mjs/control/Gen/api/char.mjs +0 -95
- package/_mjs/control/Gen/api/char.mjs.map +0 -1
- package/_mjs/control/Gen/api/conc.mjs +0 -49
- package/_mjs/control/Gen/api/conc.mjs.map +0 -1
- package/_mjs/control/Gen/api/double.mjs +0 -60
- package/_mjs/control/Gen/api/double.mjs.map +0 -1
- package/_mjs/control/Gen/api/float.mjs +0 -41
- package/_mjs/control/Gen/api/float.mjs.map +0 -1
- package/_mjs/control/Gen/api/string.mjs +0 -72
- package/_mjs/control/Gen/api/string.mjs.map +0 -1
- package/_mjs/control/Gen/api/struct.mjs +0 -18
- package/_mjs/control/Gen/api/struct.mjs.map +0 -1
- package/_src/control/Gen/api/array.ts +0 -31
- package/_src/control/Gen/api/char.ts +0 -83
- package/_src/control/Gen/api/conc.ts +0 -48
- package/_src/control/Gen/api/double.ts +0 -64
- package/_src/control/Gen/api/float.ts +0 -36
- package/_src/control/Gen/api/string.ts +0 -71
- package/_src/control/Gen/api/struct.ts +0 -21
- package/control/Gen/api/array.d.ts +0 -18
- package/control/Gen/api/char.d.ts +0 -47
- package/control/Gen/api/conc.d.ts +0 -25
- package/control/Gen/api/double.d.ts +0 -13
- package/control/Gen/api/float.d.ts +0 -7
- package/control/Gen/api/string.d.ts +0 -48
- package/control/Gen/api/struct.d.ts +0 -8
@@ -11,7 +11,6 @@ export class LeafRenderer {
|
|
11
11
|
constructor(
|
12
12
|
readonly use: <X>(f: <V>(annotation: TestAnnotation<V>, render: (_: List<V>) => Maybe<string>) => X) => X,
|
13
13
|
) {}
|
14
|
-
|
15
14
|
run(ancestors: List<TestAnnotationMap>, child: TestAnnotationMap): List<string> {
|
16
15
|
return this.use((annotation, render) =>
|
17
16
|
render(
|
@@ -30,7 +29,6 @@ export class LeafRenderer {
|
|
30
29
|
export class CompositeRenderer {
|
31
30
|
readonly _tag = TestAnnotationRendererTag.CompositeRenderer;
|
32
31
|
constructor(readonly renderers: Vector<TestAnnotationRenderer>) {}
|
33
|
-
|
34
32
|
run(ancestors: List<TestAnnotationMap>, child: TestAnnotationMap): List<string> {
|
35
33
|
return this.renderers.toList.flatMap((renderer) => renderer.run(ancestors, child));
|
36
34
|
}
|
@@ -35,7 +35,7 @@ export function after<R, E, A>(effect: IO<R, E, A>): TestAspect<R, E> {
|
|
35
35
|
return perTest<R, E>((test) =>
|
36
36
|
test.result
|
37
37
|
.zipWith(effect.catchAllCause((cause) => IO.fail(new RuntimeFailure(cause))).result, (ex0, ex1) =>
|
38
|
-
ex0.
|
38
|
+
ex0.zipLeft(ex1),
|
39
39
|
)
|
40
40
|
.flatMap(IO.fromExitNow),
|
41
41
|
);
|
@@ -60,7 +60,7 @@ export function aroundAll<R, E, A, R1>(
|
|
60
60
|
}
|
61
61
|
|
62
62
|
export function before<R0>(effect: IO<R0, never, any>): TestAspect<R0, never> {
|
63
|
-
return perTest<R0, never>((test) => effect.
|
63
|
+
return perTest<R0, never>((test) => effect.zipRight(test));
|
64
64
|
}
|
65
65
|
|
66
66
|
export function beforeAll<R0, E0>(effect: IO<R0, E0, any>): TestAspect<R0, E0> {
|
@@ -96,7 +96,6 @@ export function timeoutWarning(duration: Duration): TestAspect<Live, any> {
|
|
96
96
|
Multiple: ({ specs }) => Spec.multiple(specs.map((spec) => loop(labels, spec))),
|
97
97
|
Test: ({ test, annotations }) => Spec.test(warn(labels, test, duration), annotations),
|
98
98
|
});
|
99
|
-
|
100
99
|
return loop(Vector(), spec);
|
101
100
|
};
|
102
101
|
}
|
@@ -4,6 +4,7 @@ import type { Live } from "@fncts/test/control/Live";
|
|
4
4
|
|
5
5
|
import { matchTag } from "@fncts/base/util/pattern";
|
6
6
|
import { Console } from "@fncts/io/Console";
|
7
|
+
import { FiberStatusTag } from "@fncts/io/FiberStatus";
|
7
8
|
import { TestAnnotation } from "@fncts/test/data/TestAnnotation";
|
8
9
|
|
9
10
|
export class Data {
|
@@ -60,9 +61,9 @@ export class TestClock extends Clock {
|
|
60
61
|
}
|
61
62
|
sleep = (ms: Lazy<Duration>) => {
|
62
63
|
const self = this;
|
63
|
-
return
|
64
|
-
const promise =
|
65
|
-
const wait =
|
64
|
+
return Do((_) => {
|
65
|
+
const promise = _(Future.make<never, void>());
|
66
|
+
const wait = _(
|
66
67
|
self.clockState.modify((data) => {
|
67
68
|
const end = data.duration + ms().milliseconds;
|
68
69
|
if (end > data.duration) {
|
@@ -72,7 +73,7 @@ export class TestClock extends Clock {
|
|
72
73
|
}
|
73
74
|
}),
|
74
75
|
);
|
75
|
-
|
76
|
+
_(
|
76
77
|
IO.defer(() => {
|
77
78
|
if (wait) {
|
78
79
|
return self.warningStart > promise.await;
|
@@ -83,46 +84,39 @@ export class TestClock extends Clock {
|
|
83
84
|
);
|
84
85
|
});
|
85
86
|
};
|
86
|
-
|
87
87
|
currentTime = this.clockState.get.map((data) => data.duration);
|
88
|
-
|
89
88
|
adjust(duration: number): UIO<void> {
|
90
89
|
return this.warningDone > this.run((d) => d + duration);
|
91
90
|
}
|
92
|
-
|
93
91
|
setDate(date: Date): UIO<void> {
|
94
92
|
return this.setTime(date.getTime());
|
95
93
|
}
|
96
|
-
|
97
94
|
setTime(time: number): UIO<void> {
|
98
95
|
return this.warningDone > this.run((_) => time);
|
99
96
|
}
|
100
|
-
|
101
97
|
sleeps = this.clockState.get.map((data) => data.sleeps.map(([_]) => _));
|
102
|
-
|
103
98
|
get supervizedFibers(): UIO<HashSet<Fiber.Runtime<any, any>>> {
|
104
|
-
return IO.
|
99
|
+
return IO.fiberId.flatMap((fiberId) =>
|
105
100
|
this.annotations.get(TestAnnotation.Fibers).flatMap((_) =>
|
106
101
|
_.match(
|
107
|
-
(_) => IO.succeed(HashSet.
|
102
|
+
(_) => IO.succeed(HashSet.empty()),
|
108
103
|
(fibers) =>
|
109
104
|
IO.foreach(fibers, (ref) => ref.get)
|
110
|
-
.map((_) => _.foldLeft(HashSet.
|
111
|
-
.map((set) => set.filter((f) => !Equatable.strictEquals(f.id,
|
105
|
+
.map((_) => _.foldLeft(HashSet.empty<Fiber.Runtime<any, any>>(), (s0, s1) => s0.union(s1)))
|
106
|
+
.map((set) => set.filter((f) => !Equatable.strictEquals(f.id, fiberId))),
|
112
107
|
),
|
113
108
|
),
|
114
109
|
);
|
115
110
|
}
|
116
|
-
|
117
111
|
private get freeze(): IO<never, void, HashMap<FiberId, FiberStatus>> {
|
118
112
|
return this.supervizedFibers.flatMap((fibers) =>
|
119
|
-
IO.foldLeft(fibers, HashMap.
|
113
|
+
IO.foldLeft(fibers, HashMap.empty<FiberId, FiberStatus>(), (map, fiber) =>
|
120
114
|
fiber.status.flatMap((status) => {
|
121
115
|
switch (status._tag) {
|
122
|
-
case
|
116
|
+
case FiberStatusTag.Done: {
|
123
117
|
return IO.succeed(map.set(fiber.id, status));
|
124
118
|
}
|
125
|
-
case
|
119
|
+
case FiberStatusTag.Suspended: {
|
126
120
|
return IO.succeed(map.set(fiber.id, status));
|
127
121
|
}
|
128
122
|
default: {
|
@@ -133,23 +127,20 @@ export class TestClock extends Clock {
|
|
133
127
|
),
|
134
128
|
);
|
135
129
|
}
|
136
|
-
|
137
130
|
private get delay(): UIO<void> {
|
138
131
|
return this.live.provide(Clock.sleep((5).milliseconds));
|
139
132
|
}
|
140
|
-
|
141
133
|
private get awaitSuspended(): UIO<void> {
|
142
134
|
return this.suspended
|
143
135
|
.zipWith(this.live.provide(Clock.sleep((10).milliseconds)) > this.suspended, Equatable.strictEquals)
|
144
136
|
.filterOrFail(Function.identity, (): void => undefined).eventually.asUnit;
|
145
137
|
}
|
146
|
-
|
147
138
|
private run(f: (duration: number) => number): UIO<void> {
|
148
139
|
return (
|
149
140
|
this.awaitSuspended >
|
150
141
|
this.clockState.modify((data) => {
|
151
142
|
const end = f(data.duration);
|
152
|
-
const sorted = data.sleeps.sortWith(([x], [y]) => Number.Ord.compare(
|
143
|
+
const sorted = data.sleeps.sortWith(([x], [y]) => Number.Ord.compare(y)(x));
|
153
144
|
return sorted.head
|
154
145
|
.flatMap(([duration, promise]) =>
|
155
146
|
duration <= end
|
@@ -165,7 +156,6 @@ export class TestClock extends Clock {
|
|
165
156
|
),
|
166
157
|
);
|
167
158
|
}
|
168
|
-
|
169
159
|
private get suspended(): IO<never, void, HashMap<FiberId, FiberStatus>> {
|
170
160
|
return this.freeze.zip(this.delay > this.freeze).flatMap(([first, last]) => {
|
171
161
|
if (Equatable.strictEquals(first, last)) {
|
@@ -175,7 +165,6 @@ export class TestClock extends Clock {
|
|
175
165
|
}
|
176
166
|
});
|
177
167
|
}
|
178
|
-
|
179
168
|
warningDone: UIO<void> = this.warningState.updateJustIO(
|
180
169
|
matchTag({
|
181
170
|
Start: () => Just(IO(Done)),
|
@@ -183,7 +172,6 @@ export class TestClock extends Clock {
|
|
183
172
|
Done: () => Nothing(),
|
184
173
|
}),
|
185
174
|
);
|
186
|
-
|
187
175
|
private warningStart: UIO<void> = this.warningState.updateJustIO(
|
188
176
|
matchTag(
|
189
177
|
{
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import type { Console } from "@fncts/io/Console";
|
2
2
|
import type { Live } from "@fncts/test/control/Live";
|
3
3
|
|
4
|
-
import { showWithOptions } from "@fncts/base/
|
4
|
+
import { showWithOptions } from "@fncts/base/data/Showable";
|
5
5
|
|
6
6
|
export class ConsoleData extends CaseClass<{
|
7
7
|
readonly input: Vector<string>;
|
@@ -54,7 +54,6 @@ export class TestConsole implements Console {
|
|
54
54
|
return this.debugState.locally(true)(io);
|
55
55
|
}
|
56
56
|
}
|
57
|
-
|
58
57
|
/**
|
59
58
|
* @tsplus static fncts.test.TestConsoleOps Tag
|
60
59
|
*/
|
@@ -7,30 +7,35 @@ import { Buffer, Data, TestRandom } from "@fncts/test/control/TestRandom";
|
|
7
7
|
export function feedInts(...ints: ReadonlyArray<number>) {
|
8
8
|
return IO.serviceWithIO((tr) => tr.feedInts(...ints), TestRandom.Tag);
|
9
9
|
}
|
10
|
+
|
10
11
|
/**
|
11
12
|
* @tsplus static fncts.test.TestRandom feedBytes
|
12
13
|
*/
|
13
14
|
export function feedBytes(...bytes: ReadonlyArray<ReadonlyArray<Byte>>) {
|
14
15
|
return IO.serviceWithIO((tr) => tr.feedBytes(...bytes), TestRandom.Tag);
|
15
16
|
}
|
17
|
+
|
16
18
|
/**
|
17
19
|
* @tsplus static fncts.test.TestRandom feedChars
|
18
20
|
*/
|
19
21
|
export function feedChars(...chars: ReadonlyArray<string>) {
|
20
22
|
return IO.serviceWithIO((tr) => tr.feedChars(...chars), TestRandom.Tag);
|
21
23
|
}
|
24
|
+
|
22
25
|
/**
|
23
26
|
* @tsplus static fncts.test.TestRandom feedDoubles
|
24
27
|
*/
|
25
28
|
export function feedDoubles(...doubles: ReadonlyArray<number>) {
|
26
29
|
return IO.serviceWithIO((tr) => tr.feedDoubles(...doubles), TestRandom.Tag);
|
27
30
|
}
|
31
|
+
|
28
32
|
/**
|
29
33
|
* @tsplus static fncts.test.TestRandom feedStrings
|
30
34
|
*/
|
31
35
|
export function feedStrings(...strings: ReadonlyArray<string>) {
|
32
36
|
return IO.serviceWithIO((tr) => tr.feedStrings(...strings), TestRandom.Tag);
|
33
37
|
}
|
38
|
+
|
34
39
|
/**
|
35
40
|
* @tsplus static fncts.test.TestRandom feedBooleans
|
36
41
|
*/
|
@@ -13,7 +13,6 @@ export const TestRandomTag = Tag<TestRandom>("fncts.test.TestRandom");
|
|
13
13
|
*/
|
14
14
|
export class TestRandom implements Random {
|
15
15
|
constructor(readonly randomState: Ref<Data>, readonly bufferState: Ref<Buffer>) {}
|
16
|
-
|
17
16
|
clearBooleans: UIO<void> = this.bufferState.update((buff) => buff.copy({ booleans: Vector.empty() }));
|
18
17
|
clearBytes: UIO<void> = this.bufferState.update((buff) => buff.copy({ bytes: Vector.empty() }));
|
19
18
|
clearChars: UIO<void> = this.bufferState.update((buff) => buff.copy({ chars: Vector.empty() }));
|
@@ -39,7 +38,6 @@ export class TestRandom implements Random {
|
|
39
38
|
return this.bufferState.update((data) => data.copy({ strings: Vector.from(strings).concat(data.strings) }));
|
40
39
|
}
|
41
40
|
getSeed: UIO<number> = this.randomState.get.map((data) => ((data.seed1 << 24) | data.seed2) ^ 0x5deece66d);
|
42
|
-
|
43
41
|
setSeed(seed: number): UIO<void> {
|
44
42
|
const mash = Mash();
|
45
43
|
const newSeed = mash(seed.toString());
|
@@ -47,7 +45,6 @@ export class TestRandom implements Random {
|
|
47
45
|
const seed2 = Math.floor(newSeed) & ((1 << 24) - 1);
|
48
46
|
return this.randomState.set(new Data(seed1, seed2, ImmutableQueue.empty()));
|
49
47
|
}
|
50
|
-
|
51
48
|
private bufferedBoolean = (buffer: Buffer): readonly [Maybe<boolean>, Buffer] => {
|
52
49
|
return [buffer.booleans.head, buffer.copy({ booleans: buffer.booleans.drop(1) })];
|
53
50
|
};
|
@@ -57,19 +54,15 @@ export class TestRandom implements Random {
|
|
57
54
|
private bufferedInt = (buffer: Buffer): readonly [Maybe<number>, Buffer] => {
|
58
55
|
return [buffer.integers.head, buffer.copy({ integers: buffer.integers.drop(1) })];
|
59
56
|
};
|
60
|
-
|
61
57
|
private getOrElse = <A>(buffer: (_: Buffer) => readonly [Maybe<A>, Buffer], random: UIO<A>): UIO<A> => {
|
62
58
|
return this.bufferState.modify(buffer).flatMap((_) => _.match(() => random, IO.succeedNow));
|
63
59
|
};
|
64
|
-
|
65
60
|
private leastSignificantBits = (x: number): number => {
|
66
61
|
return Math.floor(x) & ((1 << 24) - 1);
|
67
62
|
};
|
68
|
-
|
69
63
|
private mostSignificantBits = (x: number): number => {
|
70
64
|
return Math.floor(x / (1 << 24));
|
71
65
|
};
|
72
|
-
|
73
66
|
private randomBits = (bits: number): UIO<number> => {
|
74
67
|
return this.randomState.modify((data) => {
|
75
68
|
const multiplier = 0x5deece66d;
|
@@ -83,10 +76,8 @@ export class TestRandom implements Random {
|
|
83
76
|
return [result >>> (32 - bits), new Data(newSeed1, newSeed2, data.nextNextGaussians)];
|
84
77
|
});
|
85
78
|
};
|
86
|
-
|
87
79
|
private randomBoolean = this.randomBits(1).map((n) => n !== 0);
|
88
|
-
|
89
|
-
private randomBytes = (length: number): UIO<ReadonlyArray<Byte>> => {
|
80
|
+
private randomBytes = (length: number): UIO<ReadonlyArray<Byte>> => {
|
90
81
|
const loop = (i: number, rnd: UIO<number>, n: number, acc: UIO<List<Byte>>): UIO<List<Byte>> => {
|
91
82
|
if (i === length) {
|
92
83
|
return acc.map((l) => l.reverse);
|
@@ -103,10 +94,8 @@ export class TestRandom implements Random {
|
|
103
94
|
return loop(i, this.nextInt, Math.min(length - i, 4), acc);
|
104
95
|
}
|
105
96
|
};
|
106
|
-
|
107
97
|
return loop(0, this.randomInt, Math.min(length, 4), IO.succeedNow(List.empty())).map((list) => Array.from(list));
|
108
98
|
};
|
109
|
-
|
110
99
|
private randomIntBounded = (n: number) => {
|
111
100
|
if (n <= 0) {
|
112
101
|
return IO.haltNow(new IllegalArgumentError("n must be positive", "TestRandom.randomIntBounded"));
|
@@ -121,47 +110,35 @@ export class TestRandom implements Random {
|
|
121
110
|
return loop;
|
122
111
|
}
|
123
112
|
};
|
124
|
-
|
125
113
|
private randomLong: UIO<bigint> = this.randomBits(32).flatMap((i1) =>
|
126
114
|
this.randomBits(32).flatMap((i2) => IO.succeedNow(BigInt(i1 << 32) + BigInt(i2))),
|
127
115
|
);
|
128
|
-
|
129
|
-
private randomInt = this.randomBits(32);
|
130
|
-
|
116
|
+
private randomInt = this.randomBits(32);
|
131
117
|
private randomDouble = this.randomBits(26).flatMap((i1) =>
|
132
118
|
this.randomBits(27).map((i2) => (i1 * (1 << 27) + i2) / (1 << 53)),
|
133
119
|
);
|
134
|
-
|
135
120
|
private random = this.randomBits(26);
|
136
|
-
|
137
121
|
get nextInt(): UIO<number> {
|
138
122
|
return this.getOrElse(this.bufferedInt, this.randomInt);
|
139
123
|
}
|
140
|
-
|
141
124
|
get nextBoolean(): UIO<boolean> {
|
142
125
|
return this.getOrElse(this.bufferedBoolean, this.randomBoolean);
|
143
126
|
}
|
144
|
-
|
145
127
|
get nextDouble(): UIO<number> {
|
146
128
|
return this.getOrElse(this.bufferedDouble, this.randomDouble);
|
147
129
|
}
|
148
|
-
|
149
130
|
get next(): UIO<number> {
|
150
131
|
return this.getOrElse(this.bufferedDouble, this.random);
|
151
132
|
}
|
152
|
-
|
153
133
|
nextBigIntBetween(low: bigint, high: bigint): UIO<bigint> {
|
154
134
|
return this.randomLong.repeatUntil((n) => low <= n && n < high);
|
155
135
|
}
|
156
|
-
|
157
136
|
nextIntBetween(low: number, high: number): UIO<number> {
|
158
137
|
return nextIntBetweenWith(low, high, this.randomInt, this.randomIntBounded);
|
159
138
|
}
|
160
|
-
|
161
139
|
nextRange(low: number, high: number): UIO<number> {
|
162
140
|
return this.next.map((n) => (high - low + 1) * n + low);
|
163
141
|
}
|
164
|
-
|
165
142
|
nextArrayIntBetween(low: ArrayInt, high: ArrayInt): UIO<ArrayInt> {
|
166
143
|
const self = this;
|
167
144
|
return IO.gen(function* (_) {
|
@@ -187,7 +164,6 @@ export class TestRandom implements Random {
|
|
187
164
|
}).map((ns) => trimArrayIntInplace(addArrayIntToNew({ sign: 1, data: ns }, low)));
|
188
165
|
}
|
189
166
|
}
|
190
|
-
|
191
167
|
/**
|
192
168
|
* @internal
|
193
169
|
*/
|
@@ -205,7 +181,6 @@ function nextIntBetweenWith(
|
|
205
181
|
else return nextInt.repeatUntil((n) => min <= n && n < max);
|
206
182
|
}
|
207
183
|
}
|
208
|
-
|
209
184
|
export class Data {
|
210
185
|
constructor(
|
211
186
|
readonly seed1: number,
|
@@ -213,7 +188,6 @@ export class Data {
|
|
213
188
|
readonly nextNextGaussians: ImmutableQueue<number> = ImmutableQueue.empty(),
|
214
189
|
) {}
|
215
190
|
}
|
216
|
-
|
217
191
|
export class Buffer {
|
218
192
|
constructor(
|
219
193
|
readonly booleans: Vector<boolean> = Vector.empty(),
|
@@ -223,7 +197,6 @@ export class Buffer {
|
|
223
197
|
readonly integers: Vector<number> = Vector.empty(),
|
224
198
|
readonly strings: Vector<string> = Vector.empty(),
|
225
199
|
) {}
|
226
|
-
|
227
200
|
copy(_: Partial<Buffer>): Buffer {
|
228
201
|
return new Buffer(
|
229
202
|
_.booleans ?? this.booleans,
|
@@ -235,7 +208,6 @@ export class Buffer {
|
|
235
208
|
);
|
236
209
|
}
|
237
210
|
}
|
238
|
-
|
239
211
|
/** @internal */
|
240
212
|
function isStrictlySmaller(dataA: number[], dataB: number[]): boolean {
|
241
213
|
const maxLength = Math.max(dataA.length, dataB.length);
|
@@ -249,7 +221,6 @@ function isStrictlySmaller(dataA: number[], dataB: number[]): boolean {
|
|
249
221
|
}
|
250
222
|
return false;
|
251
223
|
}
|
252
|
-
|
253
224
|
export function substractArrayIntToNew(arrayIntA: ArrayInt, arrayIntB: ArrayInt): ArrayInt {
|
254
225
|
if (arrayIntA.sign !== arrayIntB.sign) {
|
255
226
|
return addArrayIntToNew(arrayIntA, { sign: -arrayIntB.sign as -1 | 1, data: arrayIntB.data });
|
@@ -272,7 +243,6 @@ export function substractArrayIntToNew(arrayIntA: ArrayInt, arrayIntB: ArrayInt)
|
|
272
243
|
}
|
273
244
|
return { sign: arrayIntA.sign, data: data.reverse() };
|
274
245
|
}
|
275
|
-
|
276
246
|
/**
|
277
247
|
* Trim uneeded zeros in ArrayInt
|
278
248
|
* and uniform notation for zero: {sign: 1, data: [0]}
|
@@ -292,7 +262,6 @@ export function trimArrayIntInplace(arrayInt: ArrayInt) {
|
|
292
262
|
return arrayInt;
|
293
263
|
/* eslint-enable */
|
294
264
|
}
|
295
|
-
|
296
265
|
/**
|
297
266
|
* Add two ArrayInt
|
298
267
|
* @internal
|
@@ -320,7 +289,6 @@ export function addArrayIntToNew(arrayIntA: ArrayInt, arrayIntB: ArrayInt): Arra
|
|
320
289
|
}
|
321
290
|
return { sign: arrayIntA.sign, data: data.reverse() };
|
322
291
|
}
|
323
|
-
|
324
292
|
/**
|
325
293
|
* Add one to a given positive ArrayInt
|
326
294
|
* @internal
|
@@ -342,8 +310,7 @@ export function addOneToPositiveArrayInt(arrayInt: ArrayInt): ArrayInt {
|
|
342
310
|
}
|
343
311
|
|
344
312
|
function Mash() {
|
345
|
-
let n
|
346
|
-
|
313
|
+
let n = 0xefc8249d;
|
347
314
|
const mash = function (data: string) {
|
348
315
|
for (let i = 0; i < data.length; i++) {
|
349
316
|
n += data.charCodeAt(i);
|
@@ -357,6 +324,5 @@ function Mash() {
|
|
357
324
|
}
|
358
325
|
return (n >>> 0) * 2.3283064365386963e-10; // 2^-32
|
359
326
|
};
|
360
|
-
|
361
327
|
return mash;
|
362
328
|
}
|
@@ -10,7 +10,6 @@ import { fr, info, sp, warn } from "../../data/LogLine.js";
|
|
10
10
|
import { Line } from "../../data/LogLine/Line.js";
|
11
11
|
import { Message } from "../../data/LogLine/Message.js";
|
12
12
|
import { TestAnnotation } from "../../data/TestAnnotation.js";
|
13
|
-
import { TestRenderer } from "./definition.js";
|
14
13
|
|
15
14
|
const tabSize = 2;
|
16
15
|
|
@@ -5,8 +5,6 @@ import type { Spec } from "@fncts/test/control/Spec";
|
|
5
5
|
import type { TestExecutor } from "@fncts/test/control/TestExecutor";
|
6
6
|
import type { ExecutedSpec } from "@fncts/test/data/ExecutedSpec";
|
7
7
|
|
8
|
-
import { Console } from "@fncts/io/Console";
|
9
|
-
import { defaultRuntimeConfig } from "@fncts/io/IO";
|
10
8
|
import { DefaultTestReporter } from "@fncts/test/control/DefaultTestReporter";
|
11
9
|
import { TestAnnotationRenderer } from "@fncts/test/control/TestAnnotationRenderer";
|
12
10
|
import { TestLogger } from "@fncts/test/control/TestLogger";
|
@@ -17,7 +15,6 @@ export class TestRunner<R, E> {
|
|
17
15
|
readonly bootstrap: Layer<never, never, TestLogger>;
|
18
16
|
constructor(
|
19
17
|
readonly executor: TestExecutor<R>,
|
20
|
-
readonly runtimeConfig: RuntimeConfig = defaultRuntimeConfig,
|
21
18
|
reporter?: TestReporter<E>,
|
22
19
|
bootstrap?: Layer<never, never, TestLogger>,
|
23
20
|
) {
|
@@ -1,32 +1,38 @@
|
|
1
|
-
import { showWithOptions } from "@fncts/base/
|
1
|
+
import { showWithOptions } from "@fncts/base/data/Showable";
|
2
2
|
|
3
3
|
import { AssertionValue } from "./definition.js";
|
4
4
|
|
5
5
|
/**
|
6
|
-
* @tsplus
|
6
|
+
* @tsplus pipeable fncts.test.data.AssertionValue label
|
7
7
|
*/
|
8
|
-
export function label
|
9
|
-
return
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
8
|
+
export function label(string: string) {
|
9
|
+
return <A>(self: AssertionValue<A>): AssertionValue<A> => {
|
10
|
+
return new AssertionValue(
|
11
|
+
LazyValue(() => self.assertion.value.label(string)),
|
12
|
+
self.value,
|
13
|
+
self.result,
|
14
|
+
self.expression,
|
15
|
+
self.sourceLocation,
|
16
|
+
);
|
17
|
+
};
|
16
18
|
}
|
17
19
|
|
18
20
|
/**
|
19
|
-
* @tsplus
|
21
|
+
* @tsplus pipeable fncts.test.data.AssertionValue isSameAssertionAs
|
20
22
|
*/
|
21
|
-
export function isSameAssertionAs<A>(
|
22
|
-
return self
|
23
|
+
export function isSameAssertionAs<A>(that: AssertionValue<A>) {
|
24
|
+
return (self: AssertionValue<A>): boolean => {
|
25
|
+
return self.assertion.value.rendered === that.assertion.value.rendered;
|
26
|
+
};
|
23
27
|
}
|
24
28
|
|
25
29
|
/**
|
26
|
-
* @tsplus
|
30
|
+
* @tsplus pipeable fncts.test.data.AssertionValue showValue
|
27
31
|
*/
|
28
|
-
export function showValue
|
29
|
-
return
|
32
|
+
export function showValue(offset = 0) {
|
33
|
+
return <A>(self: AssertionValue<A>): string => {
|
34
|
+
return showWithOptions(self.value, { indentationLevel: offset });
|
35
|
+
};
|
30
36
|
}
|
31
37
|
|
32
38
|
/**
|
@@ -37,12 +43,10 @@ export function printAssertion<A>(self: AssertionValue<A>): string {
|
|
37
43
|
}
|
38
44
|
|
39
45
|
/**
|
40
|
-
* @tsplus
|
46
|
+
* @tsplus pipeable fncts.test.data.AssertionValue withContext
|
41
47
|
*/
|
42
|
-
export function withContext<
|
43
|
-
self: AssertionValue<A
|
44
|
-
|
45
|
-
|
46
|
-
): AssertionValue<A> {
|
47
|
-
return new AssertionValue(self.assertion, self.value, self.result, expr, sourceLocation);
|
48
|
+
export function withContext(expr: Maybe<string>, sourceLocation: Maybe<string>) {
|
49
|
+
return <A>(self: AssertionValue<A>): AssertionValue<A> => {
|
50
|
+
return new AssertionValue(self.assertion, self.value, self.result, expr, sourceLocation);
|
51
|
+
};
|
48
52
|
}
|
@@ -1,6 +1,5 @@
|
|
1
1
|
import type { AssertionIO } from "../../control/AssertionIO/definition.js";
|
2
2
|
import type { FreeBooleanAlgebra } from "../FreeBooleanAlgebra.js";
|
3
|
-
|
4
3
|
export const AssertionValueTypeId = Symbol.for("fncts.test.data.AssertionValue");
|
5
4
|
export type AssertionValueTypeId = typeof AssertionValueTypeId;
|
6
5
|
|
@@ -10,14 +10,16 @@ import { ExecutedSpec, TestCase } from "./definition.js";
|
|
10
10
|
import { LabeledCase, MultipleCase } from "./definition.js";
|
11
11
|
|
12
12
|
/**
|
13
|
-
* @tsplus
|
13
|
+
* @tsplus pipeable fncts.test.data.ExecutedSpec fold
|
14
14
|
*/
|
15
|
-
export function
|
16
|
-
return
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
15
|
+
export function fold<E, Z>(f: (_: SpecCase<E, Z>) => Z) {
|
16
|
+
return (self: ExecutedSpec<E>): Z => {
|
17
|
+
return matchTag_(self.caseValue, {
|
18
|
+
Labeled: ({ label, spec }) => f(new LabeledCase(label, spec.fold(f))),
|
19
|
+
Multiple: ({ specs }) => f(new MultipleCase(specs.map((spec) => spec.fold(f)))),
|
20
|
+
Test: f,
|
21
|
+
});
|
22
|
+
};
|
21
23
|
}
|
22
24
|
|
23
25
|
/**
|
@@ -28,17 +30,19 @@ export function labeled<E>(spec: ExecutedSpec<E>, label: string): ExecutedSpec<E
|
|
28
30
|
}
|
29
31
|
|
30
32
|
/**
|
31
|
-
* @tsplus
|
33
|
+
* @tsplus pipeable fncts.test.data.ExecutedSpecCase map
|
32
34
|
*/
|
33
|
-
export function
|
34
|
-
return
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
35
|
+
export function mapSpecCase<A, B>(f: (a: A) => B) {
|
36
|
+
return <E>(self: SpecCase<E, A>): SpecCase<E, B> => {
|
37
|
+
return matchTag_(
|
38
|
+
self,
|
39
|
+
{
|
40
|
+
Labeled: ({ label, spec }) => new LabeledCase(label, f(spec)),
|
41
|
+
Multiple: ({ specs }) => new MultipleCase(specs.map(f)),
|
42
|
+
},
|
43
|
+
identity,
|
44
|
+
);
|
45
|
+
};
|
42
46
|
}
|
43
47
|
|
44
48
|
/**
|
@@ -56,30 +60,31 @@ export function test<E>(test: Either<TestFailure<E>, TestSuccess>, annotations:
|
|
56
60
|
}
|
57
61
|
|
58
62
|
/**
|
59
|
-
* @tsplus
|
63
|
+
* @tsplus pipeable fncts.test.data.ExecutedSpec transform
|
60
64
|
*/
|
61
|
-
export function
|
62
|
-
self: ExecutedSpec<E
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
});
|
65
|
+
export function transform<E, E1>(f: (_: SpecCase<E, ExecutedSpec<E1>>) => SpecCase<E1, ExecutedSpec<E1>>) {
|
66
|
+
return (self: ExecutedSpec<E>): ExecutedSpec<E1> => {
|
67
|
+
return matchTag_(self.caseValue, {
|
68
|
+
Labeled: ({ label, spec }) => new ExecutedSpec(f(new LabeledCase(label, spec.transform(f)))),
|
69
|
+
Multiple: ({ specs }) => new ExecutedSpec(f(new MultipleCase(specs.map((spec) => spec.transform(f))))),
|
70
|
+
Test: (t) => new ExecutedSpec(f(t)),
|
71
|
+
});
|
72
|
+
};
|
70
73
|
}
|
71
74
|
|
72
75
|
/**
|
73
|
-
* @tsplus
|
76
|
+
* @tsplus pipeable fncts.test.data.ExecutedSpec some
|
74
77
|
*/
|
75
|
-
export function
|
76
|
-
return self
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
78
|
+
export function some<E>(f: (_: SpecCase<E, boolean>) => boolean) {
|
79
|
+
return (self: ExecutedSpec<E>): boolean => {
|
80
|
+
return self.fold(
|
81
|
+
matchTag({
|
82
|
+
Labeled: (c) => c.spec || f(c),
|
83
|
+
Multiple: (c) => c.specs.some(identity) || f(c),
|
84
|
+
Test: f,
|
85
|
+
}),
|
86
|
+
);
|
87
|
+
};
|
83
88
|
}
|
84
89
|
|
85
90
|
/**
|