@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
package/_src/control/Spec/api.ts
CHANGED
@@ -30,60 +30,60 @@ export function annotated<R, E, T>(spec: PSpec<R, E, T>): PSpec<R | Annotations,
|
|
30
30
|
}
|
31
31
|
|
32
32
|
/**
|
33
|
-
* @tsplus
|
33
|
+
* @tsplus pipeable fncts.test.PSpec combine
|
34
34
|
*/
|
35
|
-
export function
|
36
|
-
self: PSpec<R, E, T
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
return MultipleCase<R | R1, E | E1, T | T1
|
47
|
-
}
|
48
|
-
return MultipleCase(Conc<PSpec<R | R1, E | E1, T | T1>>(self, that));
|
35
|
+
export function combine<R1, E1, T1>(that: PSpec<R1, E1, T1>) {
|
36
|
+
return <R, E, T>(self: PSpec<R, E, T>): PSpec<R | R1, E | E1, T | T1> => {
|
37
|
+
if (self.caseValue.isMultiple() && that.caseValue.isMultiple()) {
|
38
|
+
return MultipleCase<R | R1, E | E1, T | T1>(self.caseValue.specs.concat(that.caseValue.specs));
|
39
|
+
}
|
40
|
+
if (self.caseValue.isMultiple()) {
|
41
|
+
return MultipleCase<R | R1, E | E1, T | T1>(self.caseValue.specs.append(that));
|
42
|
+
}
|
43
|
+
if (that.caseValue.isMultiple()) {
|
44
|
+
return MultipleCase<R | R1, E | E1, T | T1>(that.caseValue.specs.prepend(self));
|
45
|
+
}
|
46
|
+
return MultipleCase(Conc<PSpec<R | R1, E | E1, T | T1>>(self, that));
|
47
|
+
};
|
49
48
|
}
|
50
49
|
|
51
50
|
/**
|
52
|
-
* @tsplus
|
51
|
+
* @tsplus pipeable fncts.test.PSpec contramapEnvironment
|
53
52
|
*/
|
54
|
-
export function
|
55
|
-
self: PSpec<R, E, T
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
Environment.empty.add(r.get(Scope.Tag), Scope.Tag).union(f(r as Environment<R0>)),
|
53
|
+
export function contramapEnvironment<R, R0>(f: (r0: Environment<R0>) => Environment<R>) {
|
54
|
+
return <E, T>(self: PSpec<R, E, T>): PSpec<R0, E, T> => {
|
55
|
+
return self.transform(
|
56
|
+
matchTag(
|
57
|
+
{
|
58
|
+
Scoped: ({ scoped }) =>
|
59
|
+
new ScopedCase(
|
60
|
+
scoped.contramapEnvironment((r: Environment<R0 | Scope>) =>
|
61
|
+
Environment.empty.add(r.get(Scope.Tag), Scope.Tag).union(f(r as Environment<R0>)),
|
62
|
+
),
|
65
63
|
),
|
66
|
-
),
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
)
|
71
|
-
|
64
|
+
Test: ({ test, annotations }) => new TestCase(test.contramapEnvironment(f), annotations),
|
65
|
+
},
|
66
|
+
identity,
|
67
|
+
),
|
68
|
+
);
|
69
|
+
};
|
72
70
|
}
|
73
71
|
|
74
72
|
/**
|
75
|
-
* @tsplus
|
73
|
+
* @tsplus pipeable fncts.test.PSpec countTests
|
76
74
|
*/
|
77
|
-
export function
|
78
|
-
return spec
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
75
|
+
export function countTests<T>(f: (t: T) => boolean) {
|
76
|
+
return <R, E>(spec: PSpec<R, E, T>): IO<R | Scope, E, number> => {
|
77
|
+
return spec.fold(
|
78
|
+
matchTag({
|
79
|
+
Exec: ({ spec }) => spec,
|
80
|
+
Labeled: ({ spec }) => spec,
|
81
|
+
Scoped: ({ scoped }) => scoped.flatten,
|
82
|
+
Multiple: ({ specs }) => IO.sequenceIterable(specs).map((specs) => specs.foldLeft(0, (b, a) => b + a)),
|
83
|
+
Test: ({ test }) => test.map((t) => (f(t) ? 1 : 0)),
|
84
|
+
}),
|
85
|
+
);
|
86
|
+
};
|
87
87
|
}
|
88
88
|
|
89
89
|
/**
|
@@ -100,138 +100,145 @@ export function exec<R, E, T>(spec: PSpec<R, E, T>, exec: ExecutionStrategy): PS
|
|
100
100
|
}
|
101
101
|
|
102
102
|
/**
|
103
|
-
* @tsplus
|
103
|
+
* @tsplus pipeable fncts.test.PSpec execute
|
104
104
|
*/
|
105
|
-
export function execute
|
106
|
-
self: PSpec<R, E, T
|
107
|
-
|
108
|
-
)
|
109
|
-
|
110
|
-
|
111
|
-
);
|
105
|
+
export function execute(defExec: ExecutionStrategy) {
|
106
|
+
return <R, E, T>(self: PSpec<R, E, T>): IO<R | Scope, never, PSpec<never, E, T>> => {
|
107
|
+
return IO.environmentWithIO((r: Environment<R | Scope>) =>
|
108
|
+
self.provideEnvironment(r).foreachExec(IO.failCauseNow, IO.succeedNow, defExec),
|
109
|
+
);
|
110
|
+
};
|
112
111
|
}
|
113
112
|
|
114
113
|
/**
|
115
|
-
* @tsplus
|
114
|
+
* @tsplus pipeable fncts.test.PSpec filterAnnotations
|
116
115
|
*/
|
117
|
-
export function
|
118
|
-
spec: PSpec<R, E, T
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
Test: ({ test, annotations }) => (f(annotations.get(key)) ? Just(TestCase(test, annotations)) : Nothing()),
|
132
|
-
});
|
116
|
+
export function filterAnnotations<V>(key: TestAnnotation<V>, f: (v: V) => boolean) {
|
117
|
+
return <R, E, T>(spec: PSpec<R, E, T>): Maybe<PSpec<R, E, T>> => {
|
118
|
+
return matchTag_(spec.caseValue, {
|
119
|
+
Exec: ({ spec, exec }) => spec.filterAnnotations(key, f).map((spec) => ExecCase(spec, exec)),
|
120
|
+
Labeled: ({ label, spec }) => spec.filterAnnotations(key, f).map((spec) => LabeledCase(spec, label)),
|
121
|
+
Scoped: ({ scoped }) =>
|
122
|
+
Just(ScopedCase(scoped.map((spec) => spec.filterAnnotations(key, f).getOrElse(Spec.empty)))),
|
123
|
+
Multiple: ({ specs }) => {
|
124
|
+
const filtered = specs.filterMap((spec) => spec.filterAnnotations(key, f));
|
125
|
+
return filtered.isEmpty ? Nothing() : Just(MultipleCase(filtered));
|
126
|
+
},
|
127
|
+
Test: ({ test, annotations }) => (f(annotations.get(key)) ? Just(TestCase(test, annotations)) : Nothing()),
|
128
|
+
});
|
129
|
+
};
|
133
130
|
}
|
134
131
|
|
135
132
|
/**
|
136
|
-
* @tsplus
|
133
|
+
* @tsplus pipeable fncts.test.PSpec filterLabels
|
137
134
|
*/
|
138
|
-
export function
|
139
|
-
return
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
135
|
+
export function filterLabels(f: (label: string) => boolean) {
|
136
|
+
return <R, E, T>(spec: PSpec<R, E, T>): Maybe<PSpec<R, E, T>> => {
|
137
|
+
return matchTag_(spec.caseValue, {
|
138
|
+
Exec: ({ spec, exec }) => spec.filterLabels(f).map((spec) => ExecCase(spec, exec)),
|
139
|
+
Labeled: ({ label, spec }) =>
|
140
|
+
f(label) ? Just(LabeledCase(spec, label)) : spec.filterLabels(f).map((spec) => LabeledCase(spec, label)),
|
141
|
+
Scoped: ({ scoped }) => Just(ScopedCase(scoped.map((spec) => spec.filterLabels(f).getOrElse(Spec.empty)))),
|
142
|
+
Multiple: ({ specs }) => {
|
143
|
+
const filtered = specs.filterMap((spec) => spec.filterLabels(f));
|
144
|
+
return filtered.isEmpty ? Nothing() : Just(MultipleCase(filtered));
|
145
|
+
},
|
146
|
+
Test: () => Nothing(),
|
147
|
+
});
|
148
|
+
};
|
150
149
|
}
|
151
150
|
|
152
151
|
/**
|
153
|
-
* @tsplus
|
152
|
+
* @tsplus pipeable fncts.test.PSpec filterTags
|
154
153
|
*/
|
155
|
-
export function
|
156
|
-
return spec
|
154
|
+
export function filterTags(f: (tag: string) => boolean) {
|
155
|
+
return <R, E, T>(spec: PSpec<R, E, T>): Maybe<PSpec<R, E, T>> => {
|
156
|
+
return spec.filterAnnotations(TestAnnotation.Tagged, (v) => v.some(f));
|
157
|
+
};
|
157
158
|
}
|
158
159
|
|
159
160
|
/**
|
160
|
-
* @tsplus
|
161
|
+
* @tsplus pipeable fncts.test.PSpec filterByArgs
|
161
162
|
*/
|
162
|
-
export function filterByArgs
|
163
|
-
return spec
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
163
|
+
export function filterByArgs(args: TestArgs) {
|
164
|
+
return <R, E>(spec: Spec<R, E>): Spec<R, E> => {
|
165
|
+
return spec
|
166
|
+
.filterTags(args.tagSearchTerms.elem(String.Eq))
|
167
|
+
.flatMap((spec) =>
|
168
|
+
spec.filterLabels((label) => args.testSearchTerms.findIndex((term) => term.includes(label)) === -1),
|
169
|
+
)
|
170
|
+
.getOrElse(() => spec);
|
171
|
+
};
|
169
172
|
}
|
170
173
|
|
171
174
|
/**
|
172
|
-
* @tsplus
|
175
|
+
* @tsplus pipeable fncts.test.PSpec fold
|
173
176
|
*/
|
174
|
-
export function
|
175
|
-
return
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
177
|
+
export function fold<R, E, T, Z>(f: (_: SpecCase<R, E, T, Z>) => Z) {
|
178
|
+
return (spec: PSpec<R, E, T>): Z => {
|
179
|
+
return matchTag_(spec.caseValue, {
|
180
|
+
Exec: ({ exec, spec }) => f(new ExecCase(exec, spec.fold(f))),
|
181
|
+
Labeled: ({ label, spec }) => f(new LabeledCase(label, spec.fold(f))),
|
182
|
+
Scoped: ({ scoped }) => f(new ScopedCase(scoped.map((spec) => spec.fold(f)))),
|
183
|
+
Multiple: ({ specs }) => f(new MultipleCase(specs.map((spec) => spec.fold(f)))),
|
184
|
+
Test: (t) => f(t),
|
185
|
+
});
|
186
|
+
};
|
182
187
|
}
|
183
188
|
|
184
189
|
/**
|
185
|
-
* @tsplus
|
190
|
+
* @tsplus pipeable fncts.test.PSpec foldScoped
|
186
191
|
*/
|
187
|
-
export function
|
188
|
-
spec: PSpec<R, E, T>,
|
192
|
+
export function foldScoped<R, E, T, R1, E1, Z>(
|
189
193
|
f: (_: SpecCase<R, E, T, Z>) => IO<R1 | Scope, E1, Z>,
|
190
194
|
defExec: ExecutionStrategy,
|
191
|
-
)
|
192
|
-
return
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
scoped
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
195
|
+
) {
|
196
|
+
return (spec: PSpec<R, E, T>): IO<R | R1 | Scope, E1, Z> => {
|
197
|
+
return matchTag_(spec.caseValue, {
|
198
|
+
Exec: ({ exec, spec }) => spec.foldScoped(f, exec).flatMap((z) => f(new ExecCase(exec, z))),
|
199
|
+
Labeled: ({ label, spec }) => spec.foldScoped(f, defExec).flatMap((z) => f(new LabeledCase(label, z))),
|
200
|
+
Scoped: ({ scoped }) =>
|
201
|
+
scoped.matchCauseIO(
|
202
|
+
(cause) => f(new ScopedCase(IO.haltNow(cause))),
|
203
|
+
(spec) => spec.foldScoped(f, defExec).flatMap((z) => f(new ScopedCase(IO.succeedNow(z)))),
|
204
|
+
),
|
205
|
+
Multiple: ({ specs }) =>
|
206
|
+
IO.foreachExec(specs, defExec, (spec) => spec.foldScoped(f, defExec).scoped).flatMap((zs) =>
|
207
|
+
f(new MultipleCase(zs)),
|
208
|
+
),
|
209
|
+
Test: f,
|
210
|
+
});
|
211
|
+
};
|
206
212
|
}
|
207
213
|
|
208
214
|
/**
|
209
|
-
* @tsplus
|
215
|
+
* @tsplus pipeable fncts.test.PSpec foreachExec
|
210
216
|
*/
|
211
|
-
export function
|
212
|
-
spec: PSpec<R, E, T>,
|
217
|
+
export function foreachExec<E, T, R1, E1, A, R2, E2, B>(
|
213
218
|
failure: (c: Cause<E>) => IO<R1, E1, A>,
|
214
219
|
success: (t: T) => IO<R2, E2, B>,
|
215
220
|
defExec: ExecutionStrategy,
|
216
|
-
)
|
217
|
-
return spec
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
scoped
|
223
|
-
(
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
test
|
229
|
-
(
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
221
|
+
) {
|
222
|
+
return <R>(spec: PSpec<R, E, T>): IO<R | R1 | R2 | Scope, never, PSpec<R | R1 | R2, E1 | E2, A | B>> => {
|
223
|
+
return spec.foldScoped(
|
224
|
+
matchTag({
|
225
|
+
Exec: ({ exec, spec }) => IO.succeedNow(ExecCase(spec, exec)),
|
226
|
+
Labeled: ({ label, spec }) => IO.succeedNow(LabeledCase(spec, label)),
|
227
|
+
Scoped: ({ scoped }) =>
|
228
|
+
scoped.matchCause(
|
229
|
+
(cause) => TestCase(failure(cause), TestAnnotationMap.empty),
|
230
|
+
(t) => ScopedCase(IO.succeedNow(t)),
|
231
|
+
),
|
232
|
+
Multiple: ({ specs }) => IO.succeedNow(MultipleCase(specs)),
|
233
|
+
Test: ({ test, annotations }) =>
|
234
|
+
test.matchCause(
|
235
|
+
(cause) => TestCase(failure(cause), annotations),
|
236
|
+
(t) => TestCase(success(t), annotations),
|
237
|
+
),
|
238
|
+
}),
|
239
|
+
defExec,
|
240
|
+
);
|
241
|
+
};
|
235
242
|
}
|
236
243
|
|
237
244
|
/**
|
@@ -244,7 +251,6 @@ export function labeledCase<R, E, T>(spec: PSpec<R, E, T>, label: string): PSpec
|
|
244
251
|
}
|
245
252
|
|
246
253
|
/**
|
247
|
-
* @tsplus fluent fncts.test.PSpec scoped
|
248
254
|
* @tsplus static fncts.test.PSpecOps scoped
|
249
255
|
* @tsplus static fncts.test.PSpec.ScopedCaseOps __call
|
250
256
|
*/
|
@@ -253,35 +259,38 @@ export function scoped<R, E, T>(managed: IO<R | Scope, E, PSpec<R, E, T>>): PSpe
|
|
253
259
|
}
|
254
260
|
|
255
261
|
/**
|
256
|
-
* @tsplus
|
262
|
+
* @tsplus pipeable fncts.test.SpecCase mapError
|
257
263
|
*/
|
258
|
-
export function mapError<
|
259
|
-
return self
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
264
|
+
export function mapError<E, E1>(f: (e: E) => E1) {
|
265
|
+
return <R, T>(self: PSpec<R, E, T>): PSpec<R, E1, T> => {
|
266
|
+
return self.transform(
|
267
|
+
matchTag(
|
268
|
+
{
|
269
|
+
Scoped: ({ scoped }) => new ScopedCase(scoped.mapError(f)),
|
270
|
+
Test: ({ test, annotations }) => new TestCase(test.mapError(f), annotations),
|
271
|
+
},
|
272
|
+
identity,
|
273
|
+
),
|
274
|
+
);
|
275
|
+
};
|
268
276
|
}
|
269
277
|
|
270
278
|
/**
|
271
|
-
* @tsplus
|
279
|
+
* @tsplus pipeable fncts.test.SpecCase map
|
272
280
|
*/
|
273
|
-
export function
|
274
|
-
return
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
+
export function mapSpecCase<A, B>(f: (a: A) => B) {
|
282
|
+
return <R, E, T>(fa: SpecCase<R, E, T, A>): SpecCase<R, E, T, B> => {
|
283
|
+
return matchTag_(fa, {
|
284
|
+
Exec: ({ exec, spec }) => new ExecCase(exec, f(spec)),
|
285
|
+
Labeled: ({ label, spec }) => new LabeledCase(label, f(spec)),
|
286
|
+
Scoped: ({ scoped }) => new ScopedCase(scoped.map(f)),
|
287
|
+
Multiple: ({ specs }) => new MultipleCase(specs.map(f)),
|
288
|
+
Test: ({ test, annotations }) => new TestCase(test, annotations),
|
289
|
+
});
|
290
|
+
};
|
281
291
|
}
|
282
292
|
|
283
293
|
/**
|
284
|
-
* @tsplus fluent fncts.test.PSpec multiple
|
285
294
|
* @tsplus static fncts.test.PSpecOps multiple
|
286
295
|
* @tsplus static fncts.test.PSpec.MultipleCaseOps __call
|
287
296
|
*/
|
@@ -290,32 +299,32 @@ export function multipleCase<R, E, T>(specs: Conc<PSpec<R, E, T>>): PSpec<R, E,
|
|
290
299
|
}
|
291
300
|
|
292
301
|
/**
|
293
|
-
* @tsplus
|
302
|
+
* @tsplus pipeable fncts.test.PSpec provideEnvironment
|
294
303
|
*/
|
295
|
-
export function
|
296
|
-
return self
|
304
|
+
export function provideEnvironment<R>(r: Environment<R>) {
|
305
|
+
return <E, T>(self: PSpec<R, E, T>): PSpec<never, E, T> => {
|
306
|
+
return self.contramapEnvironment(() => r);
|
307
|
+
};
|
297
308
|
}
|
298
309
|
|
299
310
|
/**
|
300
|
-
* @tsplus
|
311
|
+
* @tsplus pipeable fncts.test.PSpec provideLayer
|
301
312
|
*/
|
302
|
-
export function
|
303
|
-
self: PSpec<ROut, E1, T
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
);
|
313
|
+
export function provideLayer<RIn, E, ROut>(layer: Layer<RIn, E, ROut>) {
|
314
|
+
return <E1, T>(self: PSpec<ROut, E1, T>): PSpec<RIn, E | E1, T> => {
|
315
|
+
return self.transform(
|
316
|
+
matchTag(
|
317
|
+
{
|
318
|
+
Scoped: ({ scoped }) => new ScopedCase(scoped.provideLayer(Layer.environment<Scope>().and(layer))),
|
319
|
+
Test: ({ test, annotations }) => new TestCase(test.provideLayer(layer), annotations),
|
320
|
+
},
|
321
|
+
identity,
|
322
|
+
),
|
323
|
+
);
|
324
|
+
};
|
315
325
|
}
|
316
326
|
|
317
327
|
/**
|
318
|
-
* @tsplus fluent fncts.test.PSpec test
|
319
328
|
* @tsplus static fncts.test.PSpecOps test
|
320
329
|
* @tsplus static fncts.test.PSpec.TestCaseOps __call
|
321
330
|
*/
|
@@ -324,58 +333,62 @@ export function testCase<R, E, T>(test: IO<R, E, T>, annotations: TestAnnotation
|
|
324
333
|
}
|
325
334
|
|
326
335
|
/**
|
327
|
-
* @tsplus
|
336
|
+
* @tsplus pipeable fncts.test.PSpec transform
|
328
337
|
*/
|
329
|
-
export function
|
330
|
-
spec: PSpec<R, E, T>,
|
338
|
+
export function transform<R, E, T, R1, E1, T1>(
|
331
339
|
f: (_: SpecCase<R, E, T, PSpec<R1, E1, T1>>) => SpecCase<R1, E1, T1, PSpec<R1, E1, T1>>,
|
332
|
-
)
|
333
|
-
return
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
+
) {
|
341
|
+
return (spec: PSpec<R, E, T>): PSpec<R1, E1, T1> => {
|
342
|
+
return matchTag_(spec.caseValue, {
|
343
|
+
Exec: ({ exec, spec }) => new PSpec(f(new ExecCase(exec, spec.transform(f)))),
|
344
|
+
Labeled: ({ label, spec }) => new PSpec(f(new LabeledCase(label, spec.transform(f)))),
|
345
|
+
Scoped: ({ scoped }) => new PSpec(f(new ScopedCase(scoped.map((spec) => spec.transform(f))))),
|
346
|
+
Multiple: ({ specs }) => new PSpec(f(new MultipleCase(specs.map((spec) => spec.transform(f))))),
|
347
|
+
Test: (t) => new PSpec(f(t)),
|
348
|
+
});
|
349
|
+
};
|
340
350
|
}
|
341
351
|
|
342
352
|
/**
|
343
|
-
* @tsplus
|
353
|
+
* @tsplus pipeable fncts.test.PSpec annotate
|
344
354
|
*/
|
345
|
-
export function
|
346
|
-
return self
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
355
|
+
export function annotate<V>(key: TestAnnotation<V>, value: V) {
|
356
|
+
return <R, E, T>(self: PSpec<R, E, T>): PSpec<R, E, T> => {
|
357
|
+
return self.transform(
|
358
|
+
matchTag(
|
359
|
+
{
|
360
|
+
Test: ({ test, annotations }) => new TestCase(test, annotations.annotate(key, value)),
|
361
|
+
},
|
362
|
+
identity,
|
363
|
+
),
|
364
|
+
);
|
365
|
+
};
|
354
366
|
}
|
355
367
|
|
356
368
|
/**
|
357
|
-
* @tsplus
|
369
|
+
* @tsplus pipeable fncts.test.PSpec whenIO
|
358
370
|
*/
|
359
|
-
export function
|
360
|
-
self: PSpec<R, E, TestSuccess
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
});
|
371
|
+
export function whenIO<R1, E1>(b: IO<R1, E1, boolean>) {
|
372
|
+
return <R, E>(self: PSpec<R, E, TestSuccess>): PSpec<R | R1 | Annotations, E | E1, TestSuccess> => {
|
373
|
+
return matchTag_(self.caseValue, {
|
374
|
+
Exec: (c) => exec(c.spec.whenIO(b), c.exec),
|
375
|
+
Labeled: ({ label, spec }) => Spec.labeled(spec.whenIO(b), label),
|
376
|
+
Scoped: (c) => Spec.scoped(b.flatMap((b) => (b ? c.scoped : IO.succeedNow(Spec.empty)))),
|
377
|
+
Multiple: ({ specs }) => Spec.multiple(specs.map((_) => _.whenIO(b))),
|
378
|
+
Test: (c) =>
|
379
|
+
Spec.test(
|
380
|
+
b.flatMap((b) => IO.if(b, c.test, Annotations.annotate(TestAnnotation.Ignored, 1)).as(TestSuccess.Ignored)),
|
381
|
+
c.annotations,
|
382
|
+
),
|
383
|
+
});
|
384
|
+
};
|
374
385
|
}
|
375
386
|
|
376
387
|
/**
|
377
|
-
* @tsplus
|
388
|
+
* @tsplus pipeable fncts.test.PSpec when
|
378
389
|
*/
|
379
|
-
export function
|
380
|
-
return self
|
390
|
+
export function when(b: Lazy<boolean>) {
|
391
|
+
return <R, E>(self: PSpec<R, E, TestSuccess>): PSpec<R | Annotations, E, TestSuccess> => {
|
392
|
+
return self.whenIO(IO.succeed(b));
|
393
|
+
};
|
381
394
|
}
|
@@ -11,7 +11,6 @@ export class PSpec<R, E, T> {
|
|
11
11
|
readonly _R!: () => R;
|
12
12
|
readonly _E!: () => E;
|
13
13
|
readonly _A!: () => T;
|
14
|
-
|
15
14
|
constructor(readonly caseValue: SpecCase<R, E, T, PSpec<R, E, T>>) {}
|
16
15
|
}
|
17
16
|
|
@@ -26,7 +25,6 @@ export const Spec: SpecOps = {};
|
|
26
25
|
* @tsplus type fncts.test.PSpec
|
27
26
|
*/
|
28
27
|
export type Spec<R, E> = PSpec<R, TestFailure<E>, TestSuccess>;
|
29
|
-
|
30
28
|
export const enum SpecCaseTag {
|
31
29
|
Exec = "Exec",
|
32
30
|
Labeled = "Labeled",
|
@@ -34,7 +34,6 @@ export function buildSummary<E>(executedSpec: ExecutedSpec<E>): Summary {
|
|
34
34
|
);
|
35
35
|
const failures = extractFailures(executedSpec);
|
36
36
|
const rendered = ConsoleRenderer.render(failures.flatMap(render), silent).join("\n");
|
37
|
-
|
38
37
|
return new Summary(success, fail, ignore, rendered);
|
39
38
|
}
|
40
39
|
|
@@ -5,22 +5,24 @@ import { LeafRenderer } from "./definition.js";
|
|
5
5
|
import { CompositeRenderer, TestAnnotationRendererTag } from "./definition.js";
|
6
6
|
|
7
7
|
/**
|
8
|
-
* @tsplus
|
9
|
-
* @tsplus operator fncts.test.TestAnnotationRenderer +
|
8
|
+
* @tsplus pipeable fncts.test.TestAnnotationRenderer combine
|
9
|
+
* @tsplus pipeable-operator fncts.test.TestAnnotationRenderer +
|
10
10
|
*/
|
11
|
-
export function
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
11
|
+
export function combine(that: TestAnnotationRenderer) {
|
12
|
+
return (self: TestAnnotationRenderer): TestAnnotationRenderer => {
|
13
|
+
if (
|
14
|
+
self._tag === TestAnnotationRendererTag.CompositeRenderer &&
|
15
|
+
that._tag === TestAnnotationRendererTag.CompositeRenderer
|
16
|
+
) {
|
17
|
+
return new CompositeRenderer(self.renderers.concat(that.renderers));
|
18
|
+
} else if (self._tag === TestAnnotationRendererTag.CompositeRenderer) {
|
19
|
+
return new CompositeRenderer(self.renderers.append(that));
|
20
|
+
} else if (that._tag === TestAnnotationRendererTag.CompositeRenderer) {
|
21
|
+
return new CompositeRenderer(that.renderers.prepend(self));
|
22
|
+
} else {
|
23
|
+
return new CompositeRenderer(Vector(self, that));
|
24
|
+
}
|
25
|
+
};
|
24
26
|
}
|
25
27
|
|
26
28
|
/**
|