@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
@@ -67,7 +67,6 @@ export class ExecutionResult {
|
|
67
67
|
readonly annotations: List<TestAnnotationMap>,
|
68
68
|
readonly lines: List<Line>,
|
69
69
|
) {}
|
70
|
-
|
71
70
|
withAnnotations(annotations: List<TestAnnotationMap>): ExecutionResult {
|
72
71
|
return new ExecutionResult(this.resultType, this.label, this.status, this.offset, annotations, this.lines);
|
73
72
|
}
|
@@ -84,61 +83,65 @@ export function rendered(
|
|
84
83
|
}
|
85
84
|
|
86
85
|
/**
|
87
|
-
* @tsplus operator fncts.test.ExecutionResult &&
|
86
|
+
* @tsplus pipeable-operator fncts.test.ExecutionResult &&
|
88
87
|
*/
|
89
|
-
export function
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
88
|
+
export function and(that: ExecutionResult) {
|
89
|
+
return (self: 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
|
+
};
|
113
114
|
}
|
114
115
|
|
115
116
|
/**
|
116
|
-
* @tsplus operator fncts.test.ExecutionResult ||
|
117
|
+
* @tsplus pipeable-operator fncts.test.ExecutionResult ||
|
117
118
|
*/
|
118
|
-
export function
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
119
|
+
export function or(that: ExecutionResult) {
|
120
|
+
return (self: ExecutionResult): ExecutionResult => {
|
121
|
+
if (self.status._tag === "Ignored") {
|
122
|
+
return that;
|
123
|
+
}
|
124
|
+
if (that.status._tag === "Ignored") {
|
125
|
+
return self;
|
126
|
+
}
|
127
|
+
if (self.status._tag === "Failed" && that.status._tag === "Failed") {
|
128
|
+
return new ExecutionResult(
|
129
|
+
self.resultType,
|
130
|
+
self.label,
|
131
|
+
self.status,
|
132
|
+
self.offset,
|
133
|
+
self.annotations,
|
134
|
+
self.lines.concat(that.lines.tail.getOrElse(Nil())),
|
135
|
+
);
|
136
|
+
}
|
137
|
+
if (self.status._tag === "Passed") {
|
138
|
+
return self;
|
139
|
+
}
|
140
|
+
if (that.status._tag === "Passed") {
|
141
|
+
return that;
|
142
|
+
}
|
143
|
+
throw new Error("BUG");
|
144
|
+
};
|
142
145
|
}
|
143
146
|
|
144
147
|
/**
|
@@ -1,30 +1,36 @@
|
|
1
1
|
import { And, FreeBooleanAlgebra, FreeBooleanAlgebraTag, Not, Or, Value } from "./definition.js";
|
2
2
|
|
3
3
|
/**
|
4
|
-
* @tsplus
|
5
|
-
* @tsplus operator fncts.test.FreeBooleanAlgebra &&
|
4
|
+
* @tsplus pipeable fncts.test.FreeBooleanAlgebra and
|
5
|
+
* @tsplus pipeable-operator fncts.test.FreeBooleanAlgebra &&
|
6
6
|
*/
|
7
|
-
export function
|
8
|
-
return
|
7
|
+
export function and<A>(right: FreeBooleanAlgebra<A>) {
|
8
|
+
return (left: FreeBooleanAlgebra<A>): FreeBooleanAlgebra<A> => {
|
9
|
+
return new And(left, right);
|
10
|
+
};
|
9
11
|
}
|
10
12
|
|
11
13
|
/**
|
12
|
-
* @tsplus
|
14
|
+
* @tsplus pipeable fncts.test.FreeBooleanAlgebra flatMap
|
13
15
|
*/
|
14
|
-
export function
|
15
|
-
return self
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
16
|
+
export function flatMap<A, B>(f: (a: A) => FreeBooleanAlgebra<B>) {
|
17
|
+
return (self: FreeBooleanAlgebra<A>): FreeBooleanAlgebra<B> => {
|
18
|
+
return self.fold({
|
19
|
+
Value: f,
|
20
|
+
And: (l, r) => l && r,
|
21
|
+
Or: (l, r) => l || r,
|
22
|
+
Not: (v) => v.invert,
|
23
|
+
});
|
24
|
+
};
|
21
25
|
}
|
22
26
|
|
23
27
|
/**
|
24
|
-
* @tsplus
|
28
|
+
* @tsplus pipeable fncts.test.FreeBooleanAlgebra map
|
25
29
|
*/
|
26
|
-
export function
|
27
|
-
return self
|
30
|
+
export function map<A, B>(f: (a: A) => B) {
|
31
|
+
return (self: FreeBooleanAlgebra<A>): FreeBooleanAlgebra<B> => {
|
32
|
+
return self.flatMap((a) => FreeBooleanAlgebra.success(f(a)));
|
33
|
+
};
|
28
34
|
}
|
29
35
|
|
30
36
|
/**
|
@@ -69,58 +75,60 @@ export function failures<A>(self: FreeBooleanAlgebra<A>): Maybe<FreeBooleanAlgeb
|
|
69
75
|
}
|
70
76
|
|
71
77
|
/**
|
72
|
-
* @tsplus
|
78
|
+
* @tsplus pipeable fncts.test.FreeBooleanAlgebra foldEval
|
73
79
|
*/
|
74
|
-
export function
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
)
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
});
|
80
|
+
export function foldEval<A, B>(cases: {
|
81
|
+
Value: (value: A) => B;
|
82
|
+
And: (left: B, right: B) => B;
|
83
|
+
Or: (left: B, right: B) => B;
|
84
|
+
Not: (value: B) => B;
|
85
|
+
}) {
|
86
|
+
return (self: FreeBooleanAlgebra<A>): Eval<B> => {
|
87
|
+
return Eval.defer(() => {
|
88
|
+
switch (self._tag) {
|
89
|
+
case FreeBooleanAlgebraTag.Value:
|
90
|
+
return Eval.now(cases.Value(self.value));
|
91
|
+
case FreeBooleanAlgebraTag.And:
|
92
|
+
return self.left.foldEval(cases).zipWith(self.right.foldEval(cases), cases.And);
|
93
|
+
case FreeBooleanAlgebraTag.Or:
|
94
|
+
return self.left.foldEval(cases).zipWith(self.right.foldEval(cases), cases.Or);
|
95
|
+
case FreeBooleanAlgebraTag.Not:
|
96
|
+
return self.result.foldEval(cases).map(cases.Not);
|
97
|
+
}
|
98
|
+
});
|
99
|
+
};
|
95
100
|
}
|
96
101
|
|
97
102
|
/**
|
98
|
-
* @tsplus
|
103
|
+
* @tsplus pipeable fncts.test.FreeBooleanAlgebra fold
|
99
104
|
*/
|
100
|
-
export function
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
return self.foldEval(cases).run;
|
105
|
+
export function fold<A, B>(cases: {
|
106
|
+
Value: (value: A) => B;
|
107
|
+
And: (left: B, right: B) => B;
|
108
|
+
Or: (left: B, right: B) => B;
|
109
|
+
Not: (value: B) => B;
|
110
|
+
}) {
|
111
|
+
return (self: FreeBooleanAlgebra<A>): B => {
|
112
|
+
return self.foldEval(cases).run;
|
113
|
+
};
|
110
114
|
}
|
111
115
|
|
112
116
|
/**
|
113
|
-
* @tsplus
|
117
|
+
* @tsplus pipeable fncts.test.FreeBooleanAlgebra iff
|
114
118
|
*/
|
115
|
-
export function
|
116
|
-
return left
|
119
|
+
export function iff<A>(right: FreeBooleanAlgebra<A>) {
|
120
|
+
return (left: FreeBooleanAlgebra<A>): FreeBooleanAlgebra<A> => {
|
121
|
+
return left.implies(right) && right.implies(left);
|
122
|
+
};
|
117
123
|
}
|
118
124
|
|
119
125
|
/**
|
120
|
-
* @tsplus
|
126
|
+
* @tsplus pipeable fncts.test.FreeBooleanAlgebra implies
|
121
127
|
*/
|
122
|
-
export function
|
123
|
-
return left
|
128
|
+
export function implies<A>(right: FreeBooleanAlgebra<A>) {
|
129
|
+
return (left: FreeBooleanAlgebra<A>): FreeBooleanAlgebra<A> => {
|
130
|
+
return left.invert || right;
|
131
|
+
};
|
124
132
|
}
|
125
133
|
|
126
134
|
/**
|
@@ -150,11 +158,13 @@ export function not<A>(self: FreeBooleanAlgebra<A>): FreeBooleanAlgebra<A> {
|
|
150
158
|
}
|
151
159
|
|
152
160
|
/**
|
153
|
-
* @tsplus
|
154
|
-
* @tsplus operator fncts.test.FreeBooleanAlgebra ||
|
161
|
+
* @tsplus pipeable fncts.test.FreeBooleanAlgebra or
|
162
|
+
* @tsplus pipeable-operator fncts.test.FreeBooleanAlgebra ||
|
155
163
|
*/
|
156
|
-
export function
|
157
|
-
return
|
164
|
+
export function or<A>(right: FreeBooleanAlgebra<A>) {
|
165
|
+
return (left: FreeBooleanAlgebra<A>): FreeBooleanAlgebra<A> => {
|
166
|
+
return new Or(left, right);
|
167
|
+
};
|
158
168
|
}
|
159
169
|
|
160
170
|
/**
|
@@ -57,10 +57,12 @@ export function prependTo(self: Line, message: Message): Message {
|
|
57
57
|
}
|
58
58
|
|
59
59
|
/**
|
60
|
-
* @tsplus
|
60
|
+
* @tsplus pipeable fncts.test.data.Line withOffset
|
61
61
|
*/
|
62
|
-
export function withOffset(
|
63
|
-
return
|
62
|
+
export function withOffset(shift: number) {
|
63
|
+
return (self: Line): Line => {
|
64
|
+
return new Line(self.fragments, self.offset + shift);
|
65
|
+
};
|
64
66
|
}
|
65
67
|
|
66
68
|
/**
|
@@ -44,14 +44,14 @@ export function prependFragment(fragment: Fragment, self: Message): Message {
|
|
44
44
|
/**
|
45
45
|
* @tsplus operator fncts.test.data.Message +
|
46
46
|
*/
|
47
|
-
export function
|
47
|
+
export function concat(self: Message, that: Message): Message {
|
48
48
|
return Message(self.lines.concat(that.lines));
|
49
49
|
}
|
50
50
|
|
51
51
|
/**
|
52
52
|
* @tsplus operator fncts.test.data.Message |
|
53
53
|
*/
|
54
|
-
export function
|
54
|
+
export function combine(self: Message, that: Message): Message {
|
55
55
|
const last = self.lines.last;
|
56
56
|
const head = that.lines.head;
|
57
57
|
if (last.isJust() && head.isJust()) {
|
@@ -62,33 +62,41 @@ export function combine_(self: Message, that: Message): Message {
|
|
62
62
|
}
|
63
63
|
|
64
64
|
/**
|
65
|
-
* @tsplus
|
65
|
+
* @tsplus pipeable fncts.test.data.Message drop
|
66
66
|
*/
|
67
|
-
export function
|
68
|
-
return
|
67
|
+
export function drop(n: number) {
|
68
|
+
return (self: Message): Message => {
|
69
|
+
return Message(self.lines.drop(n));
|
70
|
+
};
|
69
71
|
}
|
70
72
|
|
71
73
|
/**
|
72
|
-
* @tsplus
|
74
|
+
* @tsplus pipeable fncts.test.data.Message map
|
73
75
|
*/
|
74
|
-
export function
|
75
|
-
return
|
76
|
+
export function map(f: (line: Line) => Line) {
|
77
|
+
return (self: Message): Message => {
|
78
|
+
return Message(self.lines.map(f));
|
79
|
+
};
|
76
80
|
}
|
77
81
|
|
78
82
|
/**
|
79
|
-
* @tsplus
|
83
|
+
* @tsplus pipeable fncts.test.data.Message withOffset
|
80
84
|
*/
|
81
|
-
export function withOffset(
|
82
|
-
return self
|
85
|
+
export function withOffset(offset: number) {
|
86
|
+
return (self: Message): Message => {
|
87
|
+
return self.map((line) => line.withOffset(offset));
|
88
|
+
};
|
83
89
|
}
|
84
90
|
|
85
91
|
/**
|
86
|
-
* @tsplus
|
92
|
+
* @tsplus pipeable fncts.test.data.Message intersperse
|
87
93
|
*/
|
88
|
-
export function intersperse(
|
89
|
-
return
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
+
export function intersperse(line: Line) {
|
95
|
+
return (self: Message): Message => {
|
96
|
+
return new Message(
|
97
|
+
Vector.from(
|
98
|
+
self.lines.foldRight(List.empty<Line>(), (ln, rest) => Cons(ln, rest.isEmpty() ? Nil() : Cons(line, rest))),
|
99
|
+
),
|
100
|
+
);
|
101
|
+
};
|
94
102
|
}
|
@@ -8,7 +8,6 @@ export const enum RenderTag {
|
|
8
8
|
export class RenderFunction {
|
9
9
|
readonly _tag = RenderTag.Function;
|
10
10
|
constructor(readonly name: string, readonly paramLists: Conc<Conc<RenderParam>>) {}
|
11
|
-
|
12
11
|
get rendered(): string {
|
13
12
|
return `${this.name}(${this.paramLists.map((ps) => ps.map((p) => p.rendered).join(", ")).join("")})`;
|
14
13
|
}
|
@@ -17,7 +16,6 @@ export class RenderFunction {
|
|
17
16
|
export class RenderInfix {
|
18
17
|
readonly _tag = RenderTag.Infix;
|
19
18
|
constructor(readonly left: RenderParam, readonly op: string, readonly right: RenderParam) {}
|
20
|
-
|
21
19
|
get rendered(): string {
|
22
20
|
return `(${this.left.rendered} ${this.op} ${this.right.rendered})`;
|
23
21
|
}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import type { AssertionIO } from "../../control/AssertionIO/definition.js";
|
2
2
|
import type { RenderParam } from "./definition.js";
|
3
3
|
|
4
|
-
import { show } from "@fncts/base/
|
4
|
+
import { show } from "@fncts/base/data/Showable";
|
5
5
|
|
6
6
|
import { isAssertionIO } from "../../control/AssertionIO/definition.js";
|
7
7
|
import { RenderAssertionIO, RenderParamTag, RenderValue } from "./definition.js";
|
@@ -22,7 +22,7 @@ export const TaggedTag = Tag<HashSet<string>>("fncts.test.TestAnnotation.Tagged"
|
|
22
22
|
/**
|
23
23
|
* @tsplus static fncts.test.TestAnnotationOps Tagged
|
24
24
|
*/
|
25
|
-
export const Tagged = new TestAnnotation(TaggedTag, "tagged", HashSet.
|
25
|
+
export const Tagged = new TestAnnotation(TaggedTag, "tagged", HashSet.empty(), (x, y) => x.union(y));
|
26
26
|
|
27
27
|
export const TimingTag = Tag<number>("fncts.test.TestAnnotation.Timing");
|
28
28
|
/**
|
@@ -30,7 +30,9 @@ export const TimingTag = Tag<number>("fncts.test.TestAnnotation.Timing");
|
|
30
30
|
*/
|
31
31
|
export const Timing = new TestAnnotation(TimingTag, "timing", 0, (x, y) => x + y);
|
32
32
|
|
33
|
-
export const FibersTag = Tag<Either<number, Conc<Ref<HashSet<Fiber.Runtime<any, any>>>>>>(
|
33
|
+
export const FibersTag = Tag<Either<number, Conc<Ref<HashSet<Fiber.Runtime<any, any>>>>>>(
|
34
|
+
"fncts.test.TestAnnotation.Fibers",
|
35
|
+
);
|
34
36
|
/**
|
35
37
|
* @tsplus static fncts.test.TestAnnotationOps Fibers
|
36
38
|
*/
|
@@ -10,18 +10,15 @@ export type TestAnnotationTypeId = typeof TestAnnotationTypeId;
|
|
10
10
|
export class TestAnnotation<V> implements Hashable, Equatable {
|
11
11
|
readonly _typeId: TestAnnotationTypeId = TestAnnotationTypeId;
|
12
12
|
readonly _V!: () => V;
|
13
|
-
|
14
13
|
constructor(
|
15
14
|
readonly tag: Tag<V>,
|
16
15
|
readonly identifier: string,
|
17
16
|
readonly initial: V,
|
18
17
|
readonly combine: (v1: V, v2: V) => V,
|
19
18
|
) {}
|
20
|
-
|
21
19
|
get [Symbol.hash]() {
|
22
20
|
return Hashable.combine(Hashable.string(this.identifier), Hashable.unknown(this.tag));
|
23
21
|
}
|
24
|
-
|
25
22
|
[Symbol.equals](that: unknown) {
|
26
23
|
return (
|
27
24
|
isTestAnnotation(that) &&
|
@@ -4,12 +4,11 @@ import { identity } from "@fncts/base/data/function";
|
|
4
4
|
|
5
5
|
export class TestAnnotationMap {
|
6
6
|
constructor(private readonly map: HashMap<TestAnnotation<any>, any>) {}
|
7
|
-
|
8
7
|
combine(that: TestAnnotationMap): TestAnnotationMap {
|
9
8
|
return new TestAnnotationMap(
|
10
9
|
Conc.from(this.map)
|
11
10
|
.concat(Conc.from(that.map))
|
12
|
-
.foldLeft(HashMap.
|
11
|
+
.foldLeft(HashMap.empty(), (acc, [k, v]) =>
|
13
12
|
acc.set(
|
14
13
|
k,
|
15
14
|
acc.get(k).match(
|
@@ -20,22 +19,17 @@ export class TestAnnotationMap {
|
|
20
19
|
),
|
21
20
|
);
|
22
21
|
}
|
23
|
-
|
24
22
|
get<V>(key: TestAnnotation<V>): V {
|
25
23
|
return this.map.get(key).match(() => key.initial, identity);
|
26
24
|
}
|
27
|
-
|
28
25
|
private overwrite<V>(key: TestAnnotation<V>, value: V): TestAnnotationMap {
|
29
26
|
return new TestAnnotationMap(this.map.set(key, value));
|
30
27
|
}
|
31
|
-
|
32
28
|
private update<V>(key: TestAnnotation<V>, f: (v: V) => V): TestAnnotationMap {
|
33
29
|
return this.overwrite(key, f(this.get(key)));
|
34
30
|
}
|
35
|
-
|
36
31
|
annotate<V>(key: TestAnnotation<V>, value: V): TestAnnotationMap {
|
37
32
|
return this.update(key, (_) => key.combine(_, value));
|
38
33
|
}
|
39
|
-
|
40
|
-
static empty: TestAnnotationMap = new TestAnnotationMap(HashMap.makeDefault());
|
34
|
+
static empty: TestAnnotationMap = new TestAnnotationMap(HashMap.empty());
|
41
35
|
}
|
package/_src/demo.ts
CHANGED
@@ -2,9 +2,9 @@ import { DefaultRunnableSpec } from "@fncts/test/control/DefaultRunnableSpec";
|
|
2
2
|
|
3
3
|
import { suite, test, testIO } from "./api.js";
|
4
4
|
import { strictEqualTo } from "./control/Assertion.js";
|
5
|
-
|
6
|
-
|
7
|
-
|
5
|
+
const ServiceATag = Tag<{
|
6
|
+
x: number;
|
7
|
+
}>("fncts.test.demo.ServiceA");
|
8
8
|
class DemoSpec extends DefaultRunnableSpec {
|
9
9
|
spec = suite(
|
10
10
|
"TestSuite",
|
@@ -12,5 +12,4 @@ class DemoSpec extends DefaultRunnableSpec {
|
|
12
12
|
test("Demo failure", { a: { b: { c: { d: 100 } } } }.assert(strictEqualTo({ a: { b: { c: { d: 0 } } } }))),
|
13
13
|
);
|
14
14
|
}
|
15
|
-
|
16
15
|
new DemoSpec().main();
|
package/_src/util/math.ts
CHANGED
@@ -4,7 +4,6 @@ export const MIN_VALUE_32 = 2 ** -126 * 2 ** -23;
|
|
4
4
|
export const MAX_VALUE_32 = 2 ** 127 * (1 + (2 ** 23 - 1) / 2 ** 23);
|
5
5
|
/** @internal */
|
6
6
|
export const EPSILON_32 = 2 ** -23;
|
7
|
-
|
8
7
|
/** @internal */
|
9
8
|
const INDEX_POSITIVE_INFINITY_32 = 2139095040; // floatToIndex(MAX_VALUE_32) + 1;
|
10
9
|
/** @internal */
|
@@ -23,7 +22,10 @@ export function safeFloatToIndex(f: number, label: string): IO<never, never, num
|
|
23
22
|
return IO.succeedNow(index);
|
24
23
|
}
|
25
24
|
|
26
|
-
export function decomposeFloat(f: number): {
|
25
|
+
export function decomposeFloat(f: number): {
|
26
|
+
exponent: number;
|
27
|
+
significand: number;
|
28
|
+
} {
|
27
29
|
// 1 => significand 0b1 - exponent 1 (will be preferred)
|
28
30
|
// => significand 0b0.1 - exponent 2
|
29
31
|
const maxSignificand = 1 + (2 ** 23 - 1) / 2 ** 23;
|
@@ -45,11 +47,9 @@ export function floatToIndex(f: number): number {
|
|
45
47
|
return INDEX_NEGATIVE_INFINITY_32;
|
46
48
|
}
|
47
49
|
const { exponent, significand } = decomposeFloat(f);
|
48
|
-
|
49
50
|
if (Number.isNaN(exponent) || Number.isNaN(significand) || !Number.isInteger(significand * 0x800000)) {
|
50
51
|
return Number.NaN;
|
51
52
|
}
|
52
|
-
|
53
53
|
if (f > 0 || (f === 0 && 1 / f === Number.POSITIVE_INFINITY)) {
|
54
54
|
return indexInFloatFromDecomp(exponent, significand);
|
55
55
|
} else {
|
@@ -60,10 +60,8 @@ export function floatToIndex(f: number): number {
|
|
60
60
|
/** @internal */
|
61
61
|
export function indexInFloatFromDecomp(exponent: number, significand: number) {
|
62
62
|
// WARNING: significand >= 0
|
63
|
-
|
64
63
|
// By construct of significand in decomposeFloat,
|
65
64
|
// significand is always max-ed.
|
66
|
-
|
67
65
|
// The float close to zero are the only one having a significand <1, they also have an exponent of -126.
|
68
66
|
// They are in range: [2**(-126) * 2**(-23), 2**(-126) * (2 - 2 ** 23)]
|
69
67
|
// In other words there are 2**24 elements in that range if we include zero.
|
@@ -104,15 +102,17 @@ export function indexToFloat(index: number): number {
|
|
104
102
|
}
|
105
103
|
|
106
104
|
/** @internal */
|
107
|
-
export type ArrayInt64 = {
|
105
|
+
export type ArrayInt64 = {
|
106
|
+
sign: 1 | -1;
|
107
|
+
data: [number, number];
|
108
|
+
};
|
108
109
|
|
109
110
|
/** @internal */
|
110
111
|
export const Zero64: ArrayInt64 = { sign: 1, data: [0, 0] };
|
111
|
-
|
112
112
|
/** @internal */
|
113
113
|
export const Unit64: ArrayInt64 = { sign: 1, data: [0, 1] };
|
114
|
-
|
115
114
|
/** @internal */
|
115
|
+
|
116
116
|
export function isZero64(a: ArrayInt64): boolean {
|
117
117
|
return a.data[0] === 0 && a.data[1] === 0;
|
118
118
|
}
|
@@ -178,7 +178,6 @@ function substract64Internal(a: ArrayInt64, b: ArrayInt64): ArrayInt64 {
|
|
178
178
|
const high = a.data[0] + b.data[0] + (low > 0xffffffff ? 1 : 0);
|
179
179
|
return { sign: 1, data: [high >>> 0, low >>> 0] };
|
180
180
|
}
|
181
|
-
|
182
181
|
// a.sign === -1 with b.sign === 1 is impossible given: a - b >= 0, except for a = 0 and b = 0
|
183
182
|
// Operation is a substraction
|
184
183
|
return {
|
@@ -270,7 +269,10 @@ const INDEX_NEGATIVE_INFINITY: ArrayInt64 = { sign: -1, data: [2146435072, 1] };
|
|
270
269
|
*
|
271
270
|
* @internal
|
272
271
|
*/
|
273
|
-
export function decomposeDouble(d: number): {
|
272
|
+
export function decomposeDouble(d: number): {
|
273
|
+
exponent: number;
|
274
|
+
significand: number;
|
275
|
+
} {
|
274
276
|
// 1 => significand 0b1 - exponent 1 (will be preferred)
|
275
277
|
// => significand 0b0.1 - exponent 2
|
276
278
|
const maxSignificand = 2 - Number.EPSILON;
|
@@ -292,10 +294,8 @@ function positiveNumberToInt64(n: number): ArrayInt64["data"] {
|
|
292
294
|
/** @internal */
|
293
295
|
function indexInDoubleFromDecomp(exponent: number, significand: number): ArrayInt64["data"] {
|
294
296
|
// WARNING: significand >= 0
|
295
|
-
|
296
297
|
// By construct of significand in decomposeDouble,
|
297
298
|
// significand is always max-ed.
|
298
|
-
|
299
299
|
// The double close to zero are the only one having a significand <1, they also have an exponent of -1022.
|
300
300
|
// They are in range: [2**(-1022) * 2**(-52), 2**(-1022) * (2 - 2 ** 52)]
|
301
301
|
// In other words there are 2**53 elements in that range if we include zero.
|
@@ -447,8 +447,14 @@ export function nextAfter(x: number, y: number) {
|
|
447
447
|
export function computeBiasedRanges(
|
448
448
|
min: ArrayInt64,
|
449
449
|
max: ArrayInt64,
|
450
|
-
biasedRanges?: {
|
451
|
-
|
450
|
+
biasedRanges?: {
|
451
|
+
min: ArrayInt64;
|
452
|
+
max: ArrayInt64;
|
453
|
+
}[],
|
454
|
+
): {
|
455
|
+
min: ArrayInt64;
|
456
|
+
max: ArrayInt64;
|
457
|
+
}[] {
|
452
458
|
if (biasedRanges != null) {
|
453
459
|
return biasedRanges;
|
454
460
|
}
|
@@ -477,8 +483,16 @@ export function computeArrayInt64GenerateRange(
|
|
477
483
|
min: ArrayInt64,
|
478
484
|
max: ArrayInt64,
|
479
485
|
biasFactor: number | undefined,
|
480
|
-
biasedRanges:
|
481
|
-
|
486
|
+
biasedRanges:
|
487
|
+
| {
|
488
|
+
min: ArrayInt64;
|
489
|
+
max: ArrayInt64;
|
490
|
+
}[]
|
491
|
+
| undefined,
|
492
|
+
): UIO<{
|
493
|
+
min: ArrayInt64;
|
494
|
+
max: ArrayInt64;
|
495
|
+
}> {
|
482
496
|
return IO.gen(function* (_) {
|
483
497
|
if (biasFactor === undefined || (yield* _(Random.nextIntBetween(1, biasFactor))) !== 1) {
|
484
498
|
return { min, max };
|