@fncts/test 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/TestSpec.d.ts +4 -0
- package/_cjs/api.cjs +91 -0
- package/_cjs/api.cjs.map +1 -0
- package/_cjs/control/AbstractRunnableSpec.cjs +30 -0
- package/_cjs/control/AbstractRunnableSpec.cjs.map +1 -0
- package/_cjs/control/Annotations/api.cjs +50 -0
- package/_cjs/control/Annotations/api.cjs.map +1 -0
- package/_cjs/control/Annotations/definition.cjs +27 -0
- package/_cjs/control/Annotations/definition.cjs.map +1 -0
- package/_cjs/control/Annotations/live.cjs +68 -0
- package/_cjs/control/Annotations/live.cjs.map +1 -0
- package/_cjs/control/Annotations.cjs +45 -0
- package/_cjs/control/Annotations.cjs.map +1 -0
- package/_cjs/control/Assertion/api.cjs +256 -0
- package/_cjs/control/Assertion/api.cjs.map +1 -0
- package/_cjs/control/Assertion/definition.cjs +32 -0
- package/_cjs/control/Assertion/definition.cjs.map +1 -0
- package/_cjs/control/Assertion.cjs +32 -0
- package/_cjs/control/Assertion.cjs.map +1 -0
- package/_cjs/control/AssertionIO/api.cjs +46 -0
- package/_cjs/control/AssertionIO/api.cjs.map +1 -0
- package/_cjs/control/AssertionIO/definition.cjs +37 -0
- package/_cjs/control/AssertionIO/definition.cjs.map +1 -0
- package/_cjs/control/AssertionIO.cjs +32 -0
- package/_cjs/control/AssertionIO.cjs.map +1 -0
- package/_cjs/control/DefaultRunnableSpec.cjs +30 -0
- package/_cjs/control/DefaultRunnableSpec.cjs.map +1 -0
- package/_cjs/control/DefaultTestReporter/definition.cjs +9 -0
- package/_cjs/control/DefaultTestReporter/definition.cjs.map +1 -0
- package/_cjs/control/DefaultTestReporter/render.cjs +288 -0
- package/_cjs/control/DefaultTestReporter/render.cjs.map +1 -0
- package/_cjs/control/DefaultTestReporter.cjs +32 -0
- package/_cjs/control/DefaultTestReporter.cjs.map +1 -0
- package/_cjs/control/FreeBooleanAlgebraIO/api.cjs +89 -0
- package/_cjs/control/FreeBooleanAlgebraIO/api.cjs.map +1 -0
- package/_cjs/control/FreeBooleanAlgebraIO/definition.cjs +9 -0
- package/_cjs/control/FreeBooleanAlgebraIO/definition.cjs.map +1 -0
- package/_cjs/control/FreeBooleanAlgebraIO.cjs +32 -0
- package/_cjs/control/FreeBooleanAlgebraIO.cjs.map +1 -0
- package/_cjs/control/Gen/api/array.cjs +50 -0
- package/_cjs/control/Gen/api/array.cjs.map +1 -0
- package/_cjs/control/Gen/api/char.cjs +129 -0
- package/_cjs/control/Gen/api/char.cjs.map +1 -0
- package/_cjs/control/Gen/api/conc.cjs +70 -0
- package/_cjs/control/Gen/api/conc.cjs.map +1 -0
- package/_cjs/control/Gen/api/double.cjs +82 -0
- package/_cjs/control/Gen/api/double.cjs.map +1 -0
- package/_cjs/control/Gen/api/float.cjs +55 -0
- package/_cjs/control/Gen/api/float.cjs.map +1 -0
- package/_cjs/control/Gen/api/string.cjs +102 -0
- package/_cjs/control/Gen/api/string.cjs.map +1 -0
- package/_cjs/control/Gen/api/struct.cjs +36 -0
- package/_cjs/control/Gen/api/struct.cjs.map +1 -0
- package/_cjs/control/Gen/api.cjs +369 -0
- package/_cjs/control/Gen/api.cjs.map +1 -0
- package/_cjs/control/Gen/constraints.cjs +6 -0
- package/_cjs/control/Gen/constraints.cjs.map +1 -0
- package/_cjs/control/Gen/definition.cjs +20 -0
- package/_cjs/control/Gen/definition.cjs.map +1 -0
- package/_cjs/control/Gen.cjs +136 -0
- package/_cjs/control/Gen.cjs.map +1 -0
- package/_cjs/control/Live/definition.cjs +67 -0
- package/_cjs/control/Live/definition.cjs.map +1 -0
- package/_cjs/control/Live.cjs +19 -0
- package/_cjs/control/Live.cjs.map +1 -0
- package/_cjs/control/RunnableSpec.cjs +70 -0
- package/_cjs/control/RunnableSpec.cjs.map +1 -0
- package/_cjs/control/Sample/api.cjs +244 -0
- package/_cjs/control/Sample/api.cjs.map +1 -0
- package/_cjs/control/Sample/definition.cjs +21 -0
- package/_cjs/control/Sample/definition.cjs.map +1 -0
- package/_cjs/control/Sample.cjs +32 -0
- package/_cjs/control/Sample.cjs.map +1 -0
- package/_cjs/control/Sized/api.cjs +32 -0
- package/_cjs/control/Sized/api.cjs.map +1 -0
- package/_cjs/control/Sized/definition.cjs +27 -0
- package/_cjs/control/Sized/definition.cjs.map +1 -0
- package/_cjs/control/Sized/live.cjs +42 -0
- package/_cjs/control/Sized/live.cjs.map +1 -0
- package/_cjs/control/Sized.cjs +45 -0
- package/_cjs/control/Sized.cjs.map +1 -0
- package/_cjs/control/Spec/api.cjs +525 -0
- package/_cjs/control/Spec/api.cjs.map +1 -0
- package/_cjs/control/Spec/definition.cjs +125 -0
- package/_cjs/control/Spec/definition.cjs.map +1 -0
- package/_cjs/control/Spec.cjs +32 -0
- package/_cjs/control/Spec.cjs.map +1 -0
- package/_cjs/control/SummaryBuilder.cjs +87 -0
- package/_cjs/control/SummaryBuilder.cjs.map +1 -0
- package/_cjs/control/Test.cjs +34 -0
- package/_cjs/control/Test.cjs.map +1 -0
- package/_cjs/control/TestAnnotationRenderer/api.cjs +101 -0
- package/_cjs/control/TestAnnotationRenderer/api.cjs.map +1 -0
- package/_cjs/control/TestAnnotationRenderer/definition.cjs +53 -0
- package/_cjs/control/TestAnnotationRenderer/definition.cjs.map +1 -0
- package/_cjs/control/TestAnnotationRenderer.cjs +32 -0
- package/_cjs/control/TestAnnotationRenderer.cjs.map +1 -0
- package/_cjs/control/TestAspect/api.cjs +148 -0
- package/_cjs/control/TestAspect/api.cjs.map +1 -0
- package/_cjs/control/TestAspect/definition.cjs +6 -0
- package/_cjs/control/TestAspect/definition.cjs.map +1 -0
- package/_cjs/control/TestAspect.cjs +32 -0
- package/_cjs/control/TestAspect.cjs.map +1 -0
- package/_cjs/control/TestClock/api.cjs +72 -0
- package/_cjs/control/TestClock/api.cjs.map +1 -0
- package/_cjs/control/TestClock/definition.cjs +225 -0
- package/_cjs/control/TestClock/definition.cjs.map +1 -0
- package/_cjs/control/TestClock.cjs +32 -0
- package/_cjs/control/TestClock.cjs.map +1 -0
- package/_cjs/control/TestConsole/api.cjs +64 -0
- package/_cjs/control/TestConsole/api.cjs.map +1 -0
- package/_cjs/control/TestConsole/definition.cjs +100 -0
- package/_cjs/control/TestConsole/definition.cjs.map +1 -0
- package/_cjs/control/TestConsole.cjs +32 -0
- package/_cjs/control/TestConsole.cjs.map +1 -0
- package/_cjs/control/TestEnvironment.cjs +39 -0
- package/_cjs/control/TestEnvironment.cjs.map +1 -0
- package/_cjs/control/TestExecutor.cjs +58 -0
- package/_cjs/control/TestExecutor.cjs.map +1 -0
- package/_cjs/control/TestLogger.cjs +58 -0
- package/_cjs/control/TestLogger.cjs.map +1 -0
- package/_cjs/control/TestRandom/api.cjs +125 -0
- package/_cjs/control/TestRandom/api.cjs.map +1 -0
- package/_cjs/control/TestRandom/definition.cjs +458 -0
- package/_cjs/control/TestRandom/definition.cjs.map +1 -0
- package/_cjs/control/TestRandom.cjs +32 -0
- package/_cjs/control/TestRandom.cjs.map +1 -0
- package/_cjs/control/TestRenderer/ConsoleRenderer.cjs +113 -0
- package/_cjs/control/TestRenderer/ConsoleRenderer.cjs.map +1 -0
- package/_cjs/control/TestRenderer/definition.cjs +6 -0
- package/_cjs/control/TestRenderer/definition.cjs.map +1 -0
- package/_cjs/control/TestRunner.cjs +45 -0
- package/_cjs/control/TestRunner.cjs.map +1 -0
- package/_cjs/data/AssertionData.cjs +55 -0
- package/_cjs/data/AssertionData.cjs.map +1 -0
- package/_cjs/data/AssertionResult.cjs +34 -0
- package/_cjs/data/AssertionResult.cjs.map +1 -0
- package/_cjs/data/AssertionValue/api.cjs +64 -0
- package/_cjs/data/AssertionValue/api.cjs.map +1 -0
- package/_cjs/data/AssertionValue/definition.cjs +35 -0
- package/_cjs/data/AssertionValue/definition.cjs.map +1 -0
- package/_cjs/data/AssertionValue.cjs +32 -0
- package/_cjs/data/AssertionValue.cjs.map +1 -0
- package/_cjs/data/ExecutedSpec/api.cjs +132 -0
- package/_cjs/data/ExecutedSpec/api.cjs.map +1 -0
- package/_cjs/data/ExecutedSpec/definition.cjs +58 -0
- package/_cjs/data/ExecutedSpec/definition.cjs.map +1 -0
- package/_cjs/data/ExecutedSpec.cjs +32 -0
- package/_cjs/data/ExecutedSpec.cjs.map +1 -0
- package/_cjs/data/ExecutionResult.cjs +142 -0
- package/_cjs/data/ExecutionResult.cjs.map +1 -0
- package/_cjs/data/FailureDetails.cjs +17 -0
- package/_cjs/data/FailureDetails.cjs.map +1 -0
- package/_cjs/data/FreeBooleanAlgebra/api.cjs +194 -0
- package/_cjs/data/FreeBooleanAlgebra/api.cjs.map +1 -0
- package/_cjs/data/FreeBooleanAlgebra/definition.cjs +59 -0
- package/_cjs/data/FreeBooleanAlgebra/definition.cjs.map +1 -0
- package/_cjs/data/FreeBooleanAlgebra.cjs +32 -0
- package/_cjs/data/FreeBooleanAlgebra.cjs.map +1 -0
- package/_cjs/data/GenFailureDetails.cjs +18 -0
- package/_cjs/data/GenFailureDetails.cjs.map +1 -0
- package/_cjs/data/LogLine/Fragment.cjs +94 -0
- package/_cjs/data/LogLine/Fragment.cjs.map +1 -0
- package/_cjs/data/LogLine/Line.cjs +142 -0
- package/_cjs/data/LogLine/Line.cjs.map +1 -0
- package/_cjs/data/LogLine/Message.cjs +145 -0
- package/_cjs/data/LogLine/Message.cjs.map +1 -0
- package/_cjs/data/LogLine/Style.cjs +124 -0
- package/_cjs/data/LogLine/Style.cjs.map +1 -0
- package/_cjs/data/LogLine/api.cjs +65 -0
- package/_cjs/data/LogLine/api.cjs.map +1 -0
- package/_cjs/data/LogLine.cjs +32 -0
- package/_cjs/data/LogLine.cjs.map +1 -0
- package/_cjs/data/Render/api.cjs +25 -0
- package/_cjs/data/Render/api.cjs.map +1 -0
- package/_cjs/data/Render/definition.cjs +52 -0
- package/_cjs/data/Render/definition.cjs.map +1 -0
- package/_cjs/data/Render.cjs +32 -0
- package/_cjs/data/Render.cjs.map +1 -0
- package/_cjs/data/RenderParam/api.cjs +40 -0
- package/_cjs/data/RenderParam/api.cjs.map +1 -0
- package/_cjs/data/RenderParam/definition.cjs +33 -0
- package/_cjs/data/RenderParam/definition.cjs.map +1 -0
- package/_cjs/data/RenderParam.cjs +32 -0
- package/_cjs/data/RenderParam.cjs.map +1 -0
- package/_cjs/data/Summary.cjs +20 -0
- package/_cjs/data/Summary.cjs.map +1 -0
- package/_cjs/data/TestAnnotation/api.cjs +76 -0
- package/_cjs/data/TestAnnotation/api.cjs.map +1 -0
- package/_cjs/data/TestAnnotation/definition.cjs +55 -0
- package/_cjs/data/TestAnnotation/definition.cjs.map +1 -0
- package/_cjs/data/TestAnnotation.cjs +32 -0
- package/_cjs/data/TestAnnotation.cjs.map +1 -0
- package/_cjs/data/TestAnnotationMap.cjs +51 -0
- package/_cjs/data/TestAnnotationMap.cjs.map +1 -0
- package/_cjs/data/TestArgs/definition.cjs +18 -0
- package/_cjs/data/TestArgs/definition.cjs.map +1 -0
- package/_cjs/data/TestArgs.cjs +19 -0
- package/_cjs/data/TestArgs.cjs.map +1 -0
- package/_cjs/data/TestConfig.cjs +76 -0
- package/_cjs/data/TestConfig.cjs.map +1 -0
- package/_cjs/data/TestFailure.cjs +75 -0
- package/_cjs/data/TestFailure.cjs.map +1 -0
- package/_cjs/data/TestSuccess.cjs +48 -0
- package/_cjs/data/TestSuccess.cjs.map +1 -0
- package/_cjs/data/TestTimeoutException.cjs +16 -0
- package/_cjs/data/TestTimeoutException.cjs.map +1 -0
- package/_cjs/demo.cjs +44 -0
- package/_cjs/demo.cjs.map +1 -0
- package/_cjs/util/math.cjs +673 -0
- package/_cjs/util/math.cjs.map +1 -0
- package/_mjs/api.mjs +57 -0
- package/_mjs/api.mjs.map +1 -0
- package/_mjs/control/AbstractRunnableSpec.mjs +16 -0
- package/_mjs/control/AbstractRunnableSpec.mjs.map +1 -0
- package/_mjs/control/Annotations/api.mjs +30 -0
- package/_mjs/control/Annotations/api.mjs.map +1 -0
- package/_mjs/control/Annotations/definition.mjs +13 -0
- package/_mjs/control/Annotations/definition.mjs.map +1 -0
- package/_mjs/control/Annotations/live.mjs +40 -0
- package/_mjs/control/Annotations/live.mjs.map +1 -0
- package/_mjs/control/Annotations.mjs +5 -0
- package/_mjs/control/Annotations.mjs.map +1 -0
- package/_mjs/control/Assertion/api.mjs +170 -0
- package/_mjs/control/Assertion/api.mjs.map +1 -0
- package/_mjs/control/Assertion/definition.mjs +17 -0
- package/_mjs/control/Assertion/definition.mjs.map +1 -0
- package/_mjs/control/Assertion.mjs +4 -0
- package/_mjs/control/Assertion.mjs.map +1 -0
- package/_mjs/control/AssertionIO/api.mjs +28 -0
- package/_mjs/control/AssertionIO/api.mjs.map +1 -0
- package/_mjs/control/AssertionIO/definition.mjs +23 -0
- package/_mjs/control/AssertionIO/definition.mjs.map +1 -0
- package/_mjs/control/AssertionIO.mjs +4 -0
- package/_mjs/control/AssertionIO.mjs.map +1 -0
- package/_mjs/control/DefaultRunnableSpec.mjs +15 -0
- package/_mjs/control/DefaultRunnableSpec.mjs.map +1 -0
- package/_mjs/control/DefaultTestReporter/definition.mjs +2 -0
- package/_mjs/control/DefaultTestReporter/definition.mjs.map +1 -0
- package/_mjs/control/DefaultTestReporter/render.mjs +245 -0
- package/_mjs/control/DefaultTestReporter/render.mjs.map +1 -0
- package/_mjs/control/DefaultTestReporter.mjs +4 -0
- package/_mjs/control/DefaultTestReporter.mjs.map +1 -0
- package/_mjs/control/FreeBooleanAlgebraIO/api.mjs +62 -0
- package/_mjs/control/FreeBooleanAlgebraIO/api.mjs.map +1 -0
- package/_mjs/control/FreeBooleanAlgebraIO/definition.mjs +2 -0
- package/_mjs/control/FreeBooleanAlgebraIO/definition.mjs.map +1 -0
- package/_mjs/control/FreeBooleanAlgebraIO.mjs +4 -0
- package/_mjs/control/FreeBooleanAlgebraIO.mjs.map +1 -0
- package/_mjs/control/Gen/api/array.mjs +31 -0
- package/_mjs/control/Gen/api/array.mjs.map +1 -0
- package/_mjs/control/Gen/api/char.mjs +95 -0
- package/_mjs/control/Gen/api/char.mjs.map +1 -0
- package/_mjs/control/Gen/api/conc.mjs +46 -0
- package/_mjs/control/Gen/api/conc.mjs.map +1 -0
- package/_mjs/control/Gen/api/double.mjs +60 -0
- package/_mjs/control/Gen/api/double.mjs.map +1 -0
- package/_mjs/control/Gen/api/float.mjs +41 -0
- package/_mjs/control/Gen/api/float.mjs.map +1 -0
- package/_mjs/control/Gen/api/string.mjs +72 -0
- package/_mjs/control/Gen/api/string.mjs.map +1 -0
- package/_mjs/control/Gen/api/struct.mjs +18 -0
- package/_mjs/control/Gen/api/struct.mjs.map +1 -0
- package/_mjs/control/Gen/api.mjs +288 -0
- package/_mjs/control/Gen/api.mjs.map +1 -0
- package/_mjs/control/Gen/constraints.mjs +2 -0
- package/_mjs/control/Gen/constraints.mjs.map +1 -0
- package/_mjs/control/Gen/definition.mjs +11 -0
- package/_mjs/control/Gen/definition.mjs.map +1 -0
- package/_mjs/control/Gen.mjs +14 -0
- package/_mjs/control/Gen.mjs.map +1 -0
- package/_mjs/control/Live/definition.mjs +42 -0
- package/_mjs/control/Live/definition.mjs.map +1 -0
- package/_mjs/control/Live.mjs +3 -0
- package/_mjs/control/Live.mjs.map +1 -0
- package/_mjs/control/RunnableSpec.mjs +44 -0
- package/_mjs/control/RunnableSpec.mjs.map +1 -0
- package/_mjs/control/Sample/api.mjs +195 -0
- package/_mjs/control/Sample/api.mjs.map +1 -0
- package/_mjs/control/Sample/definition.mjs +12 -0
- package/_mjs/control/Sample/definition.mjs.map +1 -0
- package/_mjs/control/Sample.mjs +4 -0
- package/_mjs/control/Sample.mjs.map +1 -0
- package/_mjs/control/Sized/api.mjs +16 -0
- package/_mjs/control/Sized/api.mjs.map +1 -0
- package/_mjs/control/Sized/definition.mjs +13 -0
- package/_mjs/control/Sized/definition.mjs.map +1 -0
- package/_mjs/control/Sized/live.mjs +25 -0
- package/_mjs/control/Sized/live.mjs.map +1 -0
- package/_mjs/control/Sized.mjs +5 -0
- package/_mjs/control/Sized.mjs.map +1 -0
- package/_mjs/control/Spec/api.mjs +449 -0
- package/_mjs/control/Spec/api.mjs.map +1 -0
- package/_mjs/control/Spec/definition.mjs +96 -0
- package/_mjs/control/Spec/definition.mjs.map +1 -0
- package/_mjs/control/Spec.mjs +4 -0
- package/_mjs/control/Spec.mjs.map +1 -0
- package/_mjs/control/SummaryBuilder.mjs +61 -0
- package/_mjs/control/SummaryBuilder.mjs.map +1 -0
- package/_mjs/control/Test.mjs +15 -0
- package/_mjs/control/Test.mjs.map +1 -0
- package/_mjs/control/TestAnnotationRenderer/api.mjs +74 -0
- package/_mjs/control/TestAnnotationRenderer/api.mjs.map +1 -0
- package/_mjs/control/TestAnnotationRenderer/definition.mjs +32 -0
- package/_mjs/control/TestAnnotationRenderer/definition.mjs.map +1 -0
- package/_mjs/control/TestAnnotationRenderer.mjs +4 -0
- package/_mjs/control/TestAnnotationRenderer.mjs.map +1 -0
- package/_mjs/control/TestAspect/api.mjs +93 -0
- package/_mjs/control/TestAspect/api.mjs.map +1 -0
- package/_mjs/control/TestAspect/definition.mjs +2 -0
- package/_mjs/control/TestAspect/definition.mjs.map +1 -0
- package/_mjs/control/TestAspect.mjs +4 -0
- package/_mjs/control/TestAspect.mjs.map +1 -0
- package/_mjs/control/TestClock/api.mjs +45 -0
- package/_mjs/control/TestClock/api.mjs.map +1 -0
- package/_mjs/control/TestClock/definition.mjs +173 -0
- package/_mjs/control/TestClock/definition.mjs.map +1 -0
- package/_mjs/control/TestClock.mjs +4 -0
- package/_mjs/control/TestClock.mjs.map +1 -0
- package/_mjs/control/TestConsole/api.mjs +41 -0
- package/_mjs/control/TestConsole/api.mjs.map +1 -0
- package/_mjs/control/TestConsole/definition.mjs +73 -0
- package/_mjs/control/TestConsole/definition.mjs.map +1 -0
- package/_mjs/control/TestConsole.mjs +4 -0
- package/_mjs/control/TestConsole.mjs.map +1 -0
- package/_mjs/control/TestEnvironment.mjs +17 -0
- package/_mjs/control/TestEnvironment.mjs.map +1 -0
- package/_mjs/control/TestExecutor.mjs +36 -0
- package/_mjs/control/TestExecutor.mjs.map +1 -0
- package/_mjs/control/TestLogger.mjs +36 -0
- package/_mjs/control/TestLogger.mjs.map +1 -0
- package/_mjs/control/TestRandom/api.mjs +87 -0
- package/_mjs/control/TestRandom/api.mjs.map +1 -0
- package/_mjs/control/TestRandom/definition.mjs +418 -0
- package/_mjs/control/TestRandom/definition.mjs.map +1 -0
- package/_mjs/control/TestRandom.mjs +4 -0
- package/_mjs/control/TestRandom.mjs.map +1 -0
- package/_mjs/control/TestRenderer/ConsoleRenderer.mjs +88 -0
- package/_mjs/control/TestRenderer/ConsoleRenderer.mjs.map +1 -0
- package/_mjs/control/TestRenderer/definition.mjs +2 -0
- package/_mjs/control/TestRenderer/definition.mjs.map +1 -0
- package/_mjs/control/TestRunner.mjs +23 -0
- package/_mjs/control/TestRunner.mjs.map +1 -0
- package/_mjs/data/AssertionData.mjs +34 -0
- package/_mjs/data/AssertionData.mjs.map +1 -0
- package/_mjs/data/AssertionResult.mjs +17 -0
- package/_mjs/data/AssertionResult.mjs.map +1 -0
- package/_mjs/data/AssertionValue/api.mjs +42 -0
- package/_mjs/data/AssertionValue/api.mjs.map +1 -0
- package/_mjs/data/AssertionValue/definition.mjs +19 -0
- package/_mjs/data/AssertionValue/definition.mjs.map +1 -0
- package/_mjs/data/AssertionValue.mjs +4 -0
- package/_mjs/data/AssertionValue.mjs.map +1 -0
- package/_mjs/data/ExecutedSpec/api.mjs +104 -0
- package/_mjs/data/ExecutedSpec/api.mjs.map +1 -0
- package/_mjs/data/ExecutedSpec/definition.mjs +40 -0
- package/_mjs/data/ExecutedSpec/definition.mjs.map +1 -0
- package/_mjs/data/ExecutedSpec.mjs +4 -0
- package/_mjs/data/ExecutedSpec.mjs.map +1 -0
- package/_mjs/data/ExecutionResult.mjs +110 -0
- package/_mjs/data/ExecutionResult.mjs.map +1 -0
- package/_mjs/data/FailureDetails.mjs +8 -0
- package/_mjs/data/FailureDetails.mjs.map +1 -0
- package/_mjs/data/FreeBooleanAlgebra/api.mjs +154 -0
- package/_mjs/data/FreeBooleanAlgebra/api.mjs.map +1 -0
- package/_mjs/data/FreeBooleanAlgebra/definition.mjs +40 -0
- package/_mjs/data/FreeBooleanAlgebra/definition.mjs.map +1 -0
- package/_mjs/data/FreeBooleanAlgebra.mjs +4 -0
- package/_mjs/data/FreeBooleanAlgebra.mjs.map +1 -0
- package/_mjs/data/GenFailureDetails.mjs +9 -0
- package/_mjs/data/GenFailureDetails.mjs.map +1 -0
- package/_mjs/data/LogLine/Fragment.mjs +65 -0
- package/_mjs/data/LogLine/Fragment.mjs.map +1 -0
- package/_mjs/data/LogLine/Line.mjs +104 -0
- package/_mjs/data/LogLine/Line.mjs.map +1 -0
- package/_mjs/data/LogLine/Message.mjs +107 -0
- package/_mjs/data/LogLine/Message.mjs.map +1 -0
- package/_mjs/data/LogLine/Style.mjs +101 -0
- package/_mjs/data/LogLine/Style.mjs.map +1 -0
- package/_mjs/data/LogLine/api.mjs +32 -0
- package/_mjs/data/LogLine/api.mjs.map +1 -0
- package/_mjs/data/LogLine.mjs +3 -0
- package/_mjs/data/LogLine.mjs.map +1 -0
- package/_mjs/data/Render/api.mjs +16 -0
- package/_mjs/data/Render/api.mjs.map +1 -0
- package/_mjs/data/Render/definition.mjs +33 -0
- package/_mjs/data/Render/definition.mjs.map +1 -0
- package/_mjs/data/Render.mjs +4 -0
- package/_mjs/data/Render.mjs.map +1 -0
- package/_mjs/data/RenderParam/api.mjs +28 -0
- package/_mjs/data/RenderParam/api.mjs.map +1 -0
- package/_mjs/data/RenderParam/definition.mjs +20 -0
- package/_mjs/data/RenderParam/definition.mjs.map +1 -0
- package/_mjs/data/RenderParam.mjs +4 -0
- package/_mjs/data/RenderParam.mjs.map +1 -0
- package/_mjs/data/Summary.mjs +11 -0
- package/_mjs/data/Summary.mjs.map +1 -0
- package/_mjs/data/TestAnnotation/api.mjs +47 -0
- package/_mjs/data/TestAnnotation/api.mjs.map +1 -0
- package/_mjs/data/TestAnnotation/definition.mjs +33 -0
- package/_mjs/data/TestAnnotation/definition.mjs.map +1 -0
- package/_mjs/data/TestAnnotation.mjs +4 -0
- package/_mjs/data/TestAnnotation.mjs.map +1 -0
- package/_mjs/data/TestAnnotationMap.mjs +33 -0
- package/_mjs/data/TestAnnotationMap.mjs.map +1 -0
- package/_mjs/data/TestArgs/definition.mjs +9 -0
- package/_mjs/data/TestArgs/definition.mjs.map +1 -0
- package/_mjs/data/TestArgs.mjs +3 -0
- package/_mjs/data/TestArgs.mjs.map +1 -0
- package/_mjs/data/TestConfig.mjs +52 -0
- package/_mjs/data/TestConfig.mjs.map +1 -0
- package/_mjs/data/TestFailure.mjs +49 -0
- package/_mjs/data/TestFailure.mjs.map +1 -0
- package/_mjs/data/TestSuccess.mjs +31 -0
- package/_mjs/data/TestSuccess.mjs.map +1 -0
- package/_mjs/data/TestTimeoutException.mjs +7 -0
- package/_mjs/data/TestTimeoutException.mjs.map +1 -0
- package/_mjs/demo.mjs +33 -0
- package/_mjs/demo.mjs.map +1 -0
- package/_mjs/util/math.mjs +604 -0
- package/_mjs/util/math.mjs.map +1 -0
- package/_src/api.ts +76 -0
- package/_src/control/AbstractRunnableSpec.ts +23 -0
- package/_src/control/Annotations/api.ts +33 -0
- package/_src/control/Annotations/definition.ts +20 -0
- package/_src/control/Annotations/live.ts +50 -0
- package/_src/control/Annotations.ts +5 -0
- package/_src/control/Assertion/api.ts +236 -0
- package/_src/control/Assertion/definition.ts +20 -0
- package/_src/control/Assertion.ts +4 -0
- package/_src/control/AssertionIO/api.ts +32 -0
- package/_src/control/AssertionIO/definition.ts +26 -0
- package/_src/control/AssertionIO.ts +4 -0
- package/_src/control/DefaultRunnableSpec.ts +12 -0
- package/_src/control/DefaultTestReporter/definition.ts +6 -0
- package/_src/control/DefaultTestReporter/render.ts +295 -0
- package/_src/control/DefaultTestReporter.ts +4 -0
- package/_src/control/FreeBooleanAlgebraIO/api.ts +67 -0
- package/_src/control/FreeBooleanAlgebraIO/definition.ts +13 -0
- package/_src/control/FreeBooleanAlgebraIO.ts +4 -0
- package/_src/control/Gen/api/array.ts +31 -0
- package/_src/control/Gen/api/char.ts +83 -0
- package/_src/control/Gen/api/conc.ts +50 -0
- package/_src/control/Gen/api/double.ts +64 -0
- package/_src/control/Gen/api/float.ts +36 -0
- package/_src/control/Gen/api/string.ts +71 -0
- package/_src/control/Gen/api/struct.ts +21 -0
- package/_src/control/Gen/api.ts +276 -0
- package/_src/control/Gen/constraints.ts +38 -0
- package/_src/control/Gen/definition.ts +9 -0
- package/_src/control/Gen.ts +15 -0
- package/_src/control/Live/definition.ts +47 -0
- package/_src/control/Live.ts +3 -0
- package/_src/control/RunnableSpec.ts +42 -0
- package/_src/control/Sample/api.ts +287 -0
- package/_src/control/Sample/definition.ts +7 -0
- package/_src/control/Sample.ts +4 -0
- package/_src/control/Sized/api.ts +14 -0
- package/_src/control/Sized/definition.ts +13 -0
- package/_src/control/Sized/live.ts +19 -0
- package/_src/control/Sized.ts +5 -0
- package/_src/control/Spec/api.ts +384 -0
- package/_src/control/Spec/definition.ts +103 -0
- package/_src/control/Spec.ts +4 -0
- package/_src/control/SummaryBuilder.ts +68 -0
- package/_src/control/Test.ts +31 -0
- package/_src/control/TestAnnotationRenderer/api.ts +75 -0
- package/_src/control/TestAnnotationRenderer/definition.ts +49 -0
- package/_src/control/TestAnnotationRenderer.ts +4 -0
- package/_src/control/TestAspect/api.ts +122 -0
- package/_src/control/TestAspect/definition.ts +3 -0
- package/_src/control/TestAspect.ts +4 -0
- package/_src/control/TestClock/api.ts +36 -0
- package/_src/control/TestClock/definition.ts +196 -0
- package/_src/control/TestClock.ts +4 -0
- package/_src/control/TestConsole/api.ts +36 -0
- package/_src/control/TestConsole/definition.ts +61 -0
- package/_src/control/TestConsole.ts +4 -0
- package/_src/control/TestEnvironment.ts +30 -0
- package/_src/control/TestExecutor.ts +54 -0
- package/_src/control/TestLogger.ts +37 -0
- package/_src/control/TestRandom/api.ts +76 -0
- package/_src/control/TestRandom/definition.ts +362 -0
- package/_src/control/TestRandom.ts +4 -0
- package/_src/control/TestRenderer/ConsoleRenderer.ts +94 -0
- package/_src/control/TestRenderer/definition.ts +7 -0
- package/_src/control/TestRunner.ts +34 -0
- package/_src/data/AssertionData.ts +33 -0
- package/_src/data/AssertionResult.ts +31 -0
- package/_src/data/AssertionValue/api.ts +48 -0
- package/_src/data/AssertionValue/definition.ts +20 -0
- package/_src/data/AssertionValue.ts +4 -0
- package/_src/data/ExecutedSpec/api.ts +96 -0
- package/_src/data/ExecutedSpec/definition.ts +37 -0
- package/_src/data/ExecutedSpec.ts +4 -0
- package/_src/data/ExecutionResult.ts +153 -0
- package/_src/data/FailureDetails.ts +13 -0
- package/_src/data/FreeBooleanAlgebra/api.ts +152 -0
- package/_src/data/FreeBooleanAlgebra/definition.ts +38 -0
- package/_src/data/FreeBooleanAlgebra.ts +4 -0
- package/_src/data/GenFailureDetails.ts +3 -0
- package/_src/data/LogLine/Fragment.ts +59 -0
- package/_src/data/LogLine/Line.ts +91 -0
- package/_src/data/LogLine/Message.ts +94 -0
- package/_src/data/LogLine/Style.ts +150 -0
- package/_src/data/LogLine/api.ts +40 -0
- package/_src/data/LogLine.ts +2 -0
- package/_src/data/Render/api.ts +18 -0
- package/_src/data/Render/definition.ts +36 -0
- package/_src/data/Render.ts +4 -0
- package/_src/data/RenderParam/api.ts +31 -0
- package/_src/data/RenderParam/definition.ts +28 -0
- package/_src/data/RenderParam.ts +4 -0
- package/_src/data/Summary.ts +4 -0
- package/_src/data/TestAnnotation/api.ts +49 -0
- package/_src/data/TestAnnotation/definition.ts +37 -0
- package/_src/data/TestAnnotation.ts +4 -0
- package/_src/data/TestAnnotationMap.ts +41 -0
- package/_src/data/TestArgs/definition.ts +7 -0
- package/_src/data/TestArgs.ts +3 -0
- package/_src/data/TestConfig.ts +47 -0
- package/_src/data/TestFailure.ts +56 -0
- package/_src/data/TestSuccess.ts +39 -0
- package/_src/data/TestTimeoutException.ts +5 -0
- package/_src/demo.ts +16 -0
- package/_src/util/math.ts +497 -0
- package/api.d.ts +21 -0
- package/control/AbstractRunnableSpec.d.ts +15 -0
- package/control/Annotations/api.d.ts +26 -0
- package/control/Annotations/definition.d.ts +20 -0
- package/control/Annotations/live.d.ts +18 -0
- package/control/Annotations.d.ts +3 -0
- package/control/Assertion/api.d.ts +81 -0
- package/control/Assertion/definition.d.ts +17 -0
- package/control/Assertion.d.ts +2 -0
- package/control/AssertionIO/api.d.ts +18 -0
- package/control/AssertionIO/definition.d.ts +18 -0
- package/control/AssertionIO.d.ts +2 -0
- package/control/DefaultRunnableSpec.d.ts +7 -0
- package/control/DefaultTestReporter/definition.d.ts +6 -0
- package/control/DefaultTestReporter/render.d.ts +23 -0
- package/control/DefaultTestReporter.d.ts +2 -0
- package/control/FreeBooleanAlgebraIO/api.d.ts +44 -0
- package/control/FreeBooleanAlgebraIO/definition.d.ts +12 -0
- package/control/FreeBooleanAlgebraIO.d.ts +2 -0
- package/control/Gen/api/array.d.ts +19 -0
- package/control/Gen/api/char.d.ts +47 -0
- package/control/Gen/api/conc.d.ts +26 -0
- package/control/Gen/api/double.d.ts +13 -0
- package/control/Gen/api/float.d.ts +7 -0
- package/control/Gen/api/string.d.ts +49 -0
- package/control/Gen/api/struct.d.ts +8 -0
- package/control/Gen/api.d.ts +169 -0
- package/control/Gen/constraints.d.ts +32 -0
- package/control/Gen/definition.d.ts +11 -0
- package/control/Gen.d.ts +10 -0
- package/control/Live/definition.d.ts +24 -0
- package/control/Live.d.ts +1 -0
- package/control/RunnableSpec.d.ts +12 -0
- package/control/Sample/api.d.ts +79 -0
- package/control/Sample/definition.d.ts +11 -0
- package/control/Sample.d.ts +2 -0
- package/control/Sized/api.d.ts +13 -0
- package/control/Sized/definition.d.ts +14 -0
- package/control/Sized/live.d.ts +9 -0
- package/control/Sized.d.ts +3 -0
- package/control/Spec/api.d.ts +159 -0
- package/control/Spec/definition.d.ts +96 -0
- package/control/Spec.d.ts +2 -0
- package/control/SummaryBuilder.d.ts +15 -0
- package/control/Test.d.ts +20 -0
- package/control/TestAnnotationRenderer/api.d.ts +42 -0
- package/control/TestAnnotationRenderer/definition.d.ts +31 -0
- package/control/TestAnnotationRenderer.d.ts +2 -0
- package/control/TestAspect/api.d.ts +23 -0
- package/control/TestAspect/definition.d.ts +2 -0
- package/control/TestAspect.d.ts +2 -0
- package/control/TestClock/api.d.ts +21 -0
- package/control/TestClock/definition.d.ts +66 -0
- package/control/TestClock.d.ts +2 -0
- package/control/TestConsole/api.d.ts +15 -0
- package/control/TestConsole/definition.d.ts +39 -0
- package/control/TestConsole.d.ts +2 -0
- package/control/TestEnvironment.d.ts +16 -0
- package/control/TestExecutor.d.ts +13 -0
- package/control/TestLogger.d.ts +25 -0
- package/control/TestRandom/api.d.ts +49 -0
- package/control/TestRandom/definition.d.ts +91 -0
- package/control/TestRandom.d.ts +2 -0
- package/control/TestRenderer/ConsoleRenderer.d.ts +15 -0
- package/control/TestRenderer/definition.d.ts +4 -0
- package/control/TestRunner.d.ts +18 -0
- package/data/AssertionData.d.ts +24 -0
- package/data/AssertionResult.d.ts +23 -0
- package/data/AssertionValue/api.d.ts +27 -0
- package/data/AssertionValue/definition.d.ts +19 -0
- package/data/AssertionValue.d.ts +2 -0
- package/data/ExecutedSpec/api.d.ts +47 -0
- package/data/ExecutedSpec/definition.d.ts +39 -0
- package/data/ExecutedSpec.d.ts +2 -0
- package/data/ExecutionResult.d.ts +59 -0
- package/data/FailureDetails.d.ts +15 -0
- package/data/FreeBooleanAlgebra/api.d.ts +81 -0
- package/data/FreeBooleanAlgebra/definition.d.ts +38 -0
- package/data/FreeBooleanAlgebra.d.ts +2 -0
- package/data/GenFailureDetails.d.ts +6 -0
- package/data/LogLine/Fragment.d.ts +46 -0
- package/data/LogLine/Line.d.ts +62 -0
- package/data/LogLine/Message.d.ts +61 -0
- package/data/LogLine/Style.d.ts +107 -0
- package/data/LogLine/api.d.ts +11 -0
- package/data/LogLine.d.ts +2 -0
- package/data/Render/api.d.ts +13 -0
- package/data/Render/definition.d.ts +31 -0
- package/data/Render.d.ts +2 -0
- package/data/RenderParam/api.d.ts +13 -0
- package/data/RenderParam/definition.d.ts +25 -0
- package/data/RenderParam.d.ts +2 -0
- package/data/Summary.d.ts +8 -0
- package/data/TestAnnotation/api.d.ts +41 -0
- package/data/TestAnnotation/definition.d.ts +20 -0
- package/data/TestAnnotation.d.ts +2 -0
- package/data/TestAnnotationMap.d.ts +12 -0
- package/data/TestArgs/definition.d.ts +7 -0
- package/data/TestArgs.d.ts +1 -0
- package/data/TestConfig.d.ts +42 -0
- package/data/TestFailure.d.ts +46 -0
- package/data/TestSuccess.d.ts +33 -0
- package/data/TestTimeoutException.d.ts +3 -0
- package/demo.d.ts +1 -0
- package/package.json +18 -0
- package/util/math.d.ts +130 -0
@@ -0,0 +1,48 @@
|
|
1
|
+
import { showWithOptions } from "@fncts/base/typeclass/Showable";
|
2
|
+
|
3
|
+
import { AssertionValue } from "./definition.js";
|
4
|
+
|
5
|
+
/**
|
6
|
+
* @tsplus fluent fncts.test.data.AssertionValue label
|
7
|
+
*/
|
8
|
+
export function label<A>(self: AssertionValue<A>, string: string): AssertionValue<A> {
|
9
|
+
return new AssertionValue(
|
10
|
+
LazyValue(() => self.assertion.value.label(string)),
|
11
|
+
self.value,
|
12
|
+
self.result,
|
13
|
+
self.expression,
|
14
|
+
self.sourceLocation,
|
15
|
+
);
|
16
|
+
}
|
17
|
+
|
18
|
+
/**
|
19
|
+
* @tsplus fluent fncts.test.data.AssertionValue isSameAssertionAs
|
20
|
+
*/
|
21
|
+
export function isSameAssertionAs<A>(self: AssertionValue<A>, that: AssertionValue<A>): boolean {
|
22
|
+
return self.assertion.value.rendered === that.assertion.value.rendered;
|
23
|
+
}
|
24
|
+
|
25
|
+
/**
|
26
|
+
* @tsplus fluent fncts.test.data.AssertionValue showValue
|
27
|
+
*/
|
28
|
+
export function showValue<A>(self: AssertionValue<A>, offset = 0): string {
|
29
|
+
return showWithOptions(self.value, { indentationLevel: offset });
|
30
|
+
}
|
31
|
+
|
32
|
+
/**
|
33
|
+
* @tsplus getter fncts.test.data.AssertionValue printAssertion
|
34
|
+
*/
|
35
|
+
export function printAssertion<A>(self: AssertionValue<A>): string {
|
36
|
+
return self.assertion.value.rendered;
|
37
|
+
}
|
38
|
+
|
39
|
+
/**
|
40
|
+
* @tsplus fluent fncts.test.data.AssertionValue withContext
|
41
|
+
*/
|
42
|
+
export function withContext<A>(
|
43
|
+
self: AssertionValue<A>,
|
44
|
+
expr: Maybe<string>,
|
45
|
+
sourceLocation: Maybe<string>,
|
46
|
+
): AssertionValue<A> {
|
47
|
+
return new AssertionValue(self.assertion, self.value, self.result, expr, sourceLocation);
|
48
|
+
}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
import type { AssertionIO } from "../../control/AssertionIO/definition.js";
|
2
|
+
import type { FreeBooleanAlgebra } from "../FreeBooleanAlgebra.js";
|
3
|
+
|
4
|
+
export const AssertionValueTypeId = Symbol.for("fncts.test.data.AssertionValue");
|
5
|
+
export type AssertionValueTypeId = typeof AssertionValueTypeId;
|
6
|
+
|
7
|
+
/**
|
8
|
+
* @tsplus type fncts.test.data.AssertionValue
|
9
|
+
* @tsplus companion fncts.test.data.AssertionValueOps
|
10
|
+
*/
|
11
|
+
export class AssertionValue<A> {
|
12
|
+
readonly _typeId: AssertionValueTypeId = AssertionValueTypeId;
|
13
|
+
constructor(
|
14
|
+
readonly assertion: LazyValue<AssertionIO<A>>,
|
15
|
+
readonly value: A,
|
16
|
+
readonly result: LazyValue<FreeBooleanAlgebra<AssertionValue<A>>>,
|
17
|
+
readonly expression: Maybe<string> = Nothing(),
|
18
|
+
readonly sourceLocation: Maybe<string> = Nothing(),
|
19
|
+
) {}
|
20
|
+
}
|
@@ -0,0 +1,96 @@
|
|
1
|
+
import type { TestAnnotationMap } from "../TestAnnotationMap.js";
|
2
|
+
import type { TestFailure } from "../TestFailure.js";
|
3
|
+
import type { TestSuccess } from "../TestSuccess.js";
|
4
|
+
import type { SpecCase } from "./definition.js";
|
5
|
+
|
6
|
+
import { identity } from "@fncts/base/data/function";
|
7
|
+
import { matchTag, matchTag_ } from "@fncts/base/util/pattern";
|
8
|
+
|
9
|
+
import { ExecutedSpec, TestCase } from "./definition.js";
|
10
|
+
import { LabeledCase, MultipleCase } from "./definition.js";
|
11
|
+
|
12
|
+
/**
|
13
|
+
* @tsplus fluent fncts.test.data.ExecutedSpec fold
|
14
|
+
*/
|
15
|
+
export function fold_<E, Z>(self: ExecutedSpec<E>, f: (_: SpecCase<E, Z>) => Z): Z {
|
16
|
+
return matchTag_(self.caseValue, {
|
17
|
+
Labeled: ({ label, spec }) => f(new LabeledCase(label, spec.fold(f))),
|
18
|
+
Multiple: ({ specs }) => f(new MultipleCase(specs.map((spec) => spec.fold(f)))),
|
19
|
+
Test: f,
|
20
|
+
});
|
21
|
+
}
|
22
|
+
|
23
|
+
/**
|
24
|
+
* @tsplus static fncts.test.data.ExecutedSpecOps labeled
|
25
|
+
*/
|
26
|
+
export function labeled<E>(spec: ExecutedSpec<E>, label: string): ExecutedSpec<E> {
|
27
|
+
return new ExecutedSpec(new LabeledCase(label, spec));
|
28
|
+
}
|
29
|
+
|
30
|
+
/**
|
31
|
+
* @tsplus fluent fncts.test.data.ExecutedSpecCase map
|
32
|
+
*/
|
33
|
+
export function mapSpecCase_<E, A, B>(self: SpecCase<E, A>, f: (a: A) => B): SpecCase<E, B> {
|
34
|
+
return matchTag_(
|
35
|
+
self,
|
36
|
+
{
|
37
|
+
Labeled: ({ label, spec }) => new LabeledCase(label, f(spec)),
|
38
|
+
Multiple: ({ specs }) => new MultipleCase(specs.map(f)),
|
39
|
+
},
|
40
|
+
identity,
|
41
|
+
);
|
42
|
+
}
|
43
|
+
|
44
|
+
/**
|
45
|
+
* @tsplus static fncts.test.data.ExecutedSpecOps multiple
|
46
|
+
*/
|
47
|
+
export function multiple<E>(specs: Conc<ExecutedSpec<E>>): ExecutedSpec<E> {
|
48
|
+
return new ExecutedSpec(new MultipleCase(specs));
|
49
|
+
}
|
50
|
+
|
51
|
+
/**
|
52
|
+
* @tsplus static fncts.test.data.ExecutedSpecOps test
|
53
|
+
*/
|
54
|
+
export function test<E>(test: Either<TestFailure<E>, TestSuccess>, annotations: TestAnnotationMap): ExecutedSpec<E> {
|
55
|
+
return new ExecutedSpec(new TestCase(test, annotations));
|
56
|
+
}
|
57
|
+
|
58
|
+
/**
|
59
|
+
* @tsplus fluent fncts.test.data.ExecutedSpec transform
|
60
|
+
*/
|
61
|
+
export function transform_<E, E1>(
|
62
|
+
self: ExecutedSpec<E>,
|
63
|
+
f: (_: SpecCase<E, ExecutedSpec<E1>>) => SpecCase<E1, ExecutedSpec<E1>>,
|
64
|
+
): ExecutedSpec<E1> {
|
65
|
+
return matchTag_(self.caseValue, {
|
66
|
+
Labeled: ({ label, spec }) => new ExecutedSpec(f(new LabeledCase(label, spec.transform(f)))),
|
67
|
+
Multiple: ({ specs }) => new ExecutedSpec(f(new MultipleCase(specs.map((spec) => spec.transform(f))))),
|
68
|
+
Test: (t) => new ExecutedSpec(f(t)),
|
69
|
+
});
|
70
|
+
}
|
71
|
+
|
72
|
+
/**
|
73
|
+
* @tsplus fluent fncts.test.data.ExecutedSpec exists
|
74
|
+
*/
|
75
|
+
export function exists_<E>(self: ExecutedSpec<E>, f: (_: SpecCase<E, boolean>) => boolean): boolean {
|
76
|
+
return self.fold(
|
77
|
+
matchTag({
|
78
|
+
Labeled: (c) => c.spec || f(c),
|
79
|
+
Multiple: (c) => c.specs.exists(identity) || f(c),
|
80
|
+
Test: f,
|
81
|
+
}),
|
82
|
+
);
|
83
|
+
}
|
84
|
+
|
85
|
+
/**
|
86
|
+
* @tsplus getter fncts.test.data.ExecutedSpec size
|
87
|
+
*/
|
88
|
+
export function size<E>(self: ExecutedSpec<E>): number {
|
89
|
+
return self.fold(
|
90
|
+
matchTag({
|
91
|
+
Labeled: ({ spec }) => spec,
|
92
|
+
Multiple: ({ specs }) => specs.foldLeft(0, (b, a) => b + a),
|
93
|
+
Test: () => 1,
|
94
|
+
}),
|
95
|
+
);
|
96
|
+
}
|
@@ -0,0 +1,37 @@
|
|
1
|
+
import type { TestAnnotationMap } from "../TestAnnotationMap.js";
|
2
|
+
import type { TestFailure } from "../TestFailure.js";
|
3
|
+
import type { TestSuccess } from "../TestSuccess.js";
|
4
|
+
|
5
|
+
export const enum ExecutedSpecCaseTag {
|
6
|
+
Test = "Test",
|
7
|
+
Labeled = "Labeled",
|
8
|
+
Multiple = "Multiple",
|
9
|
+
}
|
10
|
+
|
11
|
+
/**
|
12
|
+
* @tsplus type fncts.test.data.ExecutedSpec
|
13
|
+
* @tsplus companion fncts.test.data.ExecutedSpecOps
|
14
|
+
*/
|
15
|
+
export class ExecutedSpec<E> {
|
16
|
+
constructor(readonly caseValue: SpecCase<E, ExecutedSpec<E>>) {}
|
17
|
+
}
|
18
|
+
|
19
|
+
export class TestCase<E> {
|
20
|
+
readonly _tag = ExecutedSpecCaseTag.Test;
|
21
|
+
constructor(readonly test: Either<TestFailure<E>, TestSuccess>, readonly annotations: TestAnnotationMap) {}
|
22
|
+
}
|
23
|
+
|
24
|
+
export class LabeledCase<A> {
|
25
|
+
readonly _tag = ExecutedSpecCaseTag.Labeled;
|
26
|
+
constructor(readonly label: string, readonly spec: A) {}
|
27
|
+
}
|
28
|
+
|
29
|
+
export class MultipleCase<A> {
|
30
|
+
readonly _tag = ExecutedSpecCaseTag.Multiple;
|
31
|
+
constructor(readonly specs: Conc<A>) {}
|
32
|
+
}
|
33
|
+
|
34
|
+
/**
|
35
|
+
* @tsplus type fncts.test.data.ExecutedSpecCase
|
36
|
+
*/
|
37
|
+
export type SpecCase<E, A> = TestCase<E> | LabeledCase<A> | MultipleCase<A>;
|
@@ -0,0 +1,153 @@
|
|
1
|
+
import type { Line } from "./LogLine/Line.js";
|
2
|
+
import type { TestAnnotationMap } from "./TestAnnotationMap.js";
|
3
|
+
|
4
|
+
import { matchTag_ } from "@fncts/base/util/pattern";
|
5
|
+
|
6
|
+
export interface Failed {
|
7
|
+
readonly _tag: "Failed";
|
8
|
+
}
|
9
|
+
|
10
|
+
export const Failed: Failed = {
|
11
|
+
_tag: "Failed",
|
12
|
+
};
|
13
|
+
|
14
|
+
export interface Passed {
|
15
|
+
readonly _tag: "Passed";
|
16
|
+
}
|
17
|
+
|
18
|
+
export const Passed: Passed = {
|
19
|
+
_tag: "Passed",
|
20
|
+
};
|
21
|
+
|
22
|
+
export interface Ignored {
|
23
|
+
readonly _tag: "Ignored";
|
24
|
+
}
|
25
|
+
|
26
|
+
export const Ignored: Ignored = {
|
27
|
+
_tag: "Ignored",
|
28
|
+
};
|
29
|
+
|
30
|
+
export type Status = Failed | Passed | Ignored;
|
31
|
+
|
32
|
+
interface Test {
|
33
|
+
readonly _tag: "Test";
|
34
|
+
}
|
35
|
+
|
36
|
+
export const Test: ResultType = {
|
37
|
+
_tag: "Test",
|
38
|
+
};
|
39
|
+
|
40
|
+
export interface Suite {
|
41
|
+
readonly _tag: "Suite";
|
42
|
+
}
|
43
|
+
|
44
|
+
export const Suite: ResultType = {
|
45
|
+
_tag: "Suite",
|
46
|
+
};
|
47
|
+
|
48
|
+
export interface Other {
|
49
|
+
readonly _tag: "Other";
|
50
|
+
}
|
51
|
+
|
52
|
+
export const Other: ResultType = {
|
53
|
+
_tag: "Other",
|
54
|
+
};
|
55
|
+
|
56
|
+
export type ResultType = Test | Suite | Other;
|
57
|
+
|
58
|
+
/**
|
59
|
+
* @tsplus type fncts.test.ExecutionResult
|
60
|
+
*/
|
61
|
+
export class ExecutionResult {
|
62
|
+
constructor(
|
63
|
+
readonly resultType: ResultType,
|
64
|
+
readonly label: string,
|
65
|
+
readonly status: Status,
|
66
|
+
readonly offset: number,
|
67
|
+
readonly annotations: List<TestAnnotationMap>,
|
68
|
+
readonly lines: List<Line>,
|
69
|
+
) {}
|
70
|
+
|
71
|
+
withAnnotations(annotations: List<TestAnnotationMap>): ExecutionResult {
|
72
|
+
return new ExecutionResult(this.resultType, this.label, this.status, this.offset, annotations, this.lines);
|
73
|
+
}
|
74
|
+
}
|
75
|
+
|
76
|
+
export function rendered(
|
77
|
+
caseType: ResultType,
|
78
|
+
label: string,
|
79
|
+
status: Status,
|
80
|
+
offset: number,
|
81
|
+
lines: List<Line>,
|
82
|
+
): ExecutionResult {
|
83
|
+
return new ExecutionResult(caseType, label, status, offset, Nil(), lines);
|
84
|
+
}
|
85
|
+
|
86
|
+
/**
|
87
|
+
* @tsplus operator fncts.test.ExecutionResult &&
|
88
|
+
*/
|
89
|
+
export function and_(self: ExecutionResult, that: ExecutionResult): ExecutionResult {
|
90
|
+
if (self.status._tag === "Ignored") {
|
91
|
+
return that;
|
92
|
+
}
|
93
|
+
if (that.status._tag === "Ignored") {
|
94
|
+
return self;
|
95
|
+
}
|
96
|
+
if (self.status._tag === "Failed" && that.status._tag === "Failed") {
|
97
|
+
return new ExecutionResult(
|
98
|
+
self.resultType,
|
99
|
+
self.label,
|
100
|
+
self.status,
|
101
|
+
self.offset,
|
102
|
+
self.annotations,
|
103
|
+
self.lines.concat(that.lines.tail.getOrElse(Nil())),
|
104
|
+
);
|
105
|
+
}
|
106
|
+
if (self.status._tag === "Passed") {
|
107
|
+
return that;
|
108
|
+
}
|
109
|
+
if (that.status._tag === "Passed") {
|
110
|
+
return self;
|
111
|
+
}
|
112
|
+
throw new Error("BUG");
|
113
|
+
}
|
114
|
+
|
115
|
+
/**
|
116
|
+
* @tsplus operator fncts.test.ExecutionResult ||
|
117
|
+
*/
|
118
|
+
export function or_(self: ExecutionResult, that: ExecutionResult): ExecutionResult {
|
119
|
+
if (self.status._tag === "Ignored") {
|
120
|
+
return that;
|
121
|
+
}
|
122
|
+
if (that.status._tag === "Ignored") {
|
123
|
+
return self;
|
124
|
+
}
|
125
|
+
if (self.status._tag === "Failed" && that.status._tag === "Failed") {
|
126
|
+
return new ExecutionResult(
|
127
|
+
self.resultType,
|
128
|
+
self.label,
|
129
|
+
self.status,
|
130
|
+
self.offset,
|
131
|
+
self.annotations,
|
132
|
+
self.lines.concat(that.lines.tail.getOrElse(Nil())),
|
133
|
+
);
|
134
|
+
}
|
135
|
+
if (self.status._tag === "Passed") {
|
136
|
+
return self;
|
137
|
+
}
|
138
|
+
if (that.status._tag === "Passed") {
|
139
|
+
return that;
|
140
|
+
}
|
141
|
+
throw new Error("BUG");
|
142
|
+
}
|
143
|
+
|
144
|
+
/**
|
145
|
+
* @tsplus getter fncts.test.ExecutionResult invert
|
146
|
+
*/
|
147
|
+
export function invert(self: ExecutionResult): ExecutionResult {
|
148
|
+
return matchTag_(self.status, {
|
149
|
+
Ignored: () => self,
|
150
|
+
Failed: () => new ExecutionResult(self.resultType, self.label, Passed, self.offset, self.annotations, self.lines),
|
151
|
+
Passed: () => new ExecutionResult(self.resultType, self.label, Failed, self.offset, self.annotations, self.lines),
|
152
|
+
});
|
153
|
+
}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import type { FailureDetailsResult } from "./AssertionResult.js";
|
2
|
+
import type { AssertionValue } from "./AssertionValue.js";
|
3
|
+
import type { FreeBooleanAlgebra } from "./FreeBooleanAlgebra.js";
|
4
|
+
import type { GenFailureDetails } from "./GenFailureDetails.js";
|
5
|
+
|
6
|
+
/**
|
7
|
+
* @tsplus type fncts.test.FreeBooleanAlgebra
|
8
|
+
*/
|
9
|
+
export type TestResult = FreeBooleanAlgebra<FailureDetailsResult>;
|
10
|
+
|
11
|
+
export class FailureDetails {
|
12
|
+
constructor(readonly assertion: Cons<AssertionValue<any>>, readonly gen: Maybe<GenFailureDetails<any>>) {}
|
13
|
+
}
|
@@ -0,0 +1,152 @@
|
|
1
|
+
import { And, FreeBooleanAlgebra, FreeBooleanAlgebraTag, Not, Or, Value } from "./definition.js";
|
2
|
+
|
3
|
+
/**
|
4
|
+
* @tsplus fluent fncts.test.FreeBooleanAlgebra and
|
5
|
+
* @tsplus operator fncts.test.FreeBooleanAlgebra &&
|
6
|
+
*/
|
7
|
+
export function and_<A>(left: FreeBooleanAlgebra<A>, right: FreeBooleanAlgebra<A>): FreeBooleanAlgebra<A> {
|
8
|
+
return new And(left, right);
|
9
|
+
}
|
10
|
+
|
11
|
+
/**
|
12
|
+
* @tsplus fluent fncts.test.FreeBooleanAlgebra flatMap
|
13
|
+
*/
|
14
|
+
export function flatMap_<A, B>(self: FreeBooleanAlgebra<A>, f: (a: A) => FreeBooleanAlgebra<B>): FreeBooleanAlgebra<B> {
|
15
|
+
return self.fold({
|
16
|
+
Value: f,
|
17
|
+
And: (l, r) => l && r,
|
18
|
+
Or: (l, r) => l || r,
|
19
|
+
Not: (v) => v.invert,
|
20
|
+
});
|
21
|
+
}
|
22
|
+
|
23
|
+
/**
|
24
|
+
* @tsplus static fncts.test.FreeBooleanAlgebraOps failure
|
25
|
+
*/
|
26
|
+
export function failure<A>(a: A): FreeBooleanAlgebra<A> {
|
27
|
+
return FreeBooleanAlgebra.success(a).invert;
|
28
|
+
}
|
29
|
+
|
30
|
+
/**
|
31
|
+
* @tsplus getter fncts.test.FreeBooleanAlgebra failures
|
32
|
+
*/
|
33
|
+
export function failures<A>(self: FreeBooleanAlgebra<A>): Maybe<FreeBooleanAlgebra<A>> {
|
34
|
+
return self
|
35
|
+
.fold<A, Either<FreeBooleanAlgebra<A>, FreeBooleanAlgebra<A>>>({
|
36
|
+
Value: (a) => Either.right(FreeBooleanAlgebra.success(a)),
|
37
|
+
And: (l, r) =>
|
38
|
+
l.isRight()
|
39
|
+
? r.isRight()
|
40
|
+
? Either.right(l.right && r.right)
|
41
|
+
: r
|
42
|
+
: r.isRight()
|
43
|
+
? l
|
44
|
+
: Either.left(l.left && r.left),
|
45
|
+
Or: (l, r) =>
|
46
|
+
l.isRight()
|
47
|
+
? r.isRight()
|
48
|
+
? Either.right(l.right || r.right)
|
49
|
+
: l
|
50
|
+
: r.isRight()
|
51
|
+
? r
|
52
|
+
: Either.left(l.left || r.left),
|
53
|
+
Not: (v) => v.swap,
|
54
|
+
})
|
55
|
+
.match(Maybe.just, () => Nothing());
|
56
|
+
}
|
57
|
+
|
58
|
+
/**
|
59
|
+
* @tsplus fluent fncts.test.FreeBooleanAlgebra foldEval
|
60
|
+
*/
|
61
|
+
export function foldEval_<A, B>(
|
62
|
+
self: FreeBooleanAlgebra<A>,
|
63
|
+
cases: {
|
64
|
+
Value: (value: A) => B;
|
65
|
+
And: (left: B, right: B) => B;
|
66
|
+
Or: (left: B, right: B) => B;
|
67
|
+
Not: (value: B) => B;
|
68
|
+
},
|
69
|
+
): Eval<B> {
|
70
|
+
return Eval.defer(() => {
|
71
|
+
switch (self._tag) {
|
72
|
+
case FreeBooleanAlgebraTag.Value:
|
73
|
+
return Eval.now(cases.Value(self.value));
|
74
|
+
case FreeBooleanAlgebraTag.And:
|
75
|
+
return self.left.foldEval(cases).zipWith(self.right.foldEval(cases), cases.And);
|
76
|
+
case FreeBooleanAlgebraTag.Or:
|
77
|
+
return self.left.foldEval(cases).zipWith(self.right.foldEval(cases), cases.Or);
|
78
|
+
case FreeBooleanAlgebraTag.Not:
|
79
|
+
return self.result.foldEval(cases).map(cases.Not);
|
80
|
+
}
|
81
|
+
});
|
82
|
+
}
|
83
|
+
|
84
|
+
/**
|
85
|
+
* @tsplus fluent fncts.test.FreeBooleanAlgebra fold
|
86
|
+
*/
|
87
|
+
export function fold_<A, B>(
|
88
|
+
self: FreeBooleanAlgebra<A>,
|
89
|
+
cases: {
|
90
|
+
Value: (value: A) => B;
|
91
|
+
And: (left: B, right: B) => B;
|
92
|
+
Or: (left: B, right: B) => B;
|
93
|
+
Not: (value: B) => B;
|
94
|
+
},
|
95
|
+
): B {
|
96
|
+
return self.foldEval(cases).run;
|
97
|
+
}
|
98
|
+
|
99
|
+
/**
|
100
|
+
* @tsplus fluent fncts.test.FreeBooleanAlgebra iff
|
101
|
+
*/
|
102
|
+
export function iff_<A>(left: FreeBooleanAlgebra<A>, right: FreeBooleanAlgebra<A>): FreeBooleanAlgebra<A> {
|
103
|
+
return left.implies(right) && right.implies(left);
|
104
|
+
}
|
105
|
+
|
106
|
+
/**
|
107
|
+
* @tsplus fluent fncts.test.FreeBooleanAlgebra implies
|
108
|
+
*/
|
109
|
+
export function implies_<A>(left: FreeBooleanAlgebra<A>, right: FreeBooleanAlgebra<A>): FreeBooleanAlgebra<A> {
|
110
|
+
return left.invert || right;
|
111
|
+
}
|
112
|
+
|
113
|
+
/**
|
114
|
+
* @tsplus getter fncts.test.FreeBooleanAlgebra isFailure
|
115
|
+
*/
|
116
|
+
export function isFailure<A>(self: FreeBooleanAlgebra<A>): boolean {
|
117
|
+
return !self.isSuccess;
|
118
|
+
}
|
119
|
+
|
120
|
+
/**
|
121
|
+
* @tsplus getter fncts.test.FreeBooleanAlgebra isSuccess
|
122
|
+
*/
|
123
|
+
export function isSuccess<A>(self: FreeBooleanAlgebra<A>): boolean {
|
124
|
+
return self.fold({
|
125
|
+
Value: (): boolean => true,
|
126
|
+
And: (l, r) => l && r,
|
127
|
+
Or: (l, r) => l || r,
|
128
|
+
Not: (v) => !v,
|
129
|
+
});
|
130
|
+
}
|
131
|
+
|
132
|
+
/**
|
133
|
+
* @tsplus getter fncts.test.FreeBooleanAlgebra invert
|
134
|
+
*/
|
135
|
+
export function not<A>(self: FreeBooleanAlgebra<A>): FreeBooleanAlgebra<A> {
|
136
|
+
return new Not(self);
|
137
|
+
}
|
138
|
+
|
139
|
+
/**
|
140
|
+
* @tsplus fluent fncts.test.FreeBooleanAlgebra or
|
141
|
+
* @tsplus operator fncts.test.FreeBooleanAlgebra ||
|
142
|
+
*/
|
143
|
+
export function or_<A>(left: FreeBooleanAlgebra<A>, right: FreeBooleanAlgebra<A>): FreeBooleanAlgebra<A> {
|
144
|
+
return new Or(left, right);
|
145
|
+
}
|
146
|
+
|
147
|
+
/**
|
148
|
+
* @tsplus static fncts.test.FreeBooleanAlgebraOps success
|
149
|
+
*/
|
150
|
+
export function success<A>(a: A): FreeBooleanAlgebra<A> {
|
151
|
+
return new Value(a);
|
152
|
+
}
|
@@ -0,0 +1,38 @@
|
|
1
|
+
export const enum FreeBooleanAlgebraTag {
|
2
|
+
Value = "Value",
|
3
|
+
And = "And",
|
4
|
+
Or = "Or",
|
5
|
+
Not = "Not",
|
6
|
+
}
|
7
|
+
|
8
|
+
export class Value<A> {
|
9
|
+
readonly _tag = FreeBooleanAlgebraTag.Value;
|
10
|
+
constructor(readonly value: A) {}
|
11
|
+
}
|
12
|
+
|
13
|
+
export class And<A> {
|
14
|
+
readonly _tag = FreeBooleanAlgebraTag.And;
|
15
|
+
constructor(readonly left: FreeBooleanAlgebra<A>, readonly right: FreeBooleanAlgebra<A>) {}
|
16
|
+
}
|
17
|
+
|
18
|
+
export class Or<A> {
|
19
|
+
readonly _tag = FreeBooleanAlgebraTag.Or;
|
20
|
+
constructor(readonly left: FreeBooleanAlgebra<A>, readonly right: FreeBooleanAlgebra<A>) {}
|
21
|
+
}
|
22
|
+
|
23
|
+
export class Not<A> {
|
24
|
+
readonly _tag = FreeBooleanAlgebraTag.Not;
|
25
|
+
constructor(readonly result: FreeBooleanAlgebra<A>) {}
|
26
|
+
}
|
27
|
+
|
28
|
+
/**
|
29
|
+
* @tsplus type fncts.test.FreeBooleanAlgebra
|
30
|
+
*/
|
31
|
+
export type FreeBooleanAlgebra<A> = Value<A> | And<A> | Or<A> | Not<A>;
|
32
|
+
|
33
|
+
/**
|
34
|
+
* @tsplus type fncts.test.FreeBooleanAlgebraOps
|
35
|
+
*/
|
36
|
+
export interface FreeBooleanAlgebraOps {}
|
37
|
+
|
38
|
+
export const FreeBooleanAlgebra: FreeBooleanAlgebraOps = {};
|
@@ -0,0 +1,59 @@
|
|
1
|
+
import { Line } from "./Line.js";
|
2
|
+
import { Style } from "./Style.js";
|
3
|
+
|
4
|
+
/**
|
5
|
+
* @tsplus type fncts.test.data.Fragment
|
6
|
+
* @tsplus companion fncts.test.data.FragmentOps
|
7
|
+
*/
|
8
|
+
export class Fragment {
|
9
|
+
constructor(readonly text: string, readonly style: Style = Style.Default) {}
|
10
|
+
}
|
11
|
+
|
12
|
+
/**
|
13
|
+
* @tsplus static fncts.test.data.FragmentOps __call
|
14
|
+
*/
|
15
|
+
export function makeFragment(text: string, style = Style.Default): Fragment {
|
16
|
+
return new Fragment(text, style);
|
17
|
+
}
|
18
|
+
|
19
|
+
/**
|
20
|
+
* @tsplus operator fncts.test.data.Fragment +
|
21
|
+
*/
|
22
|
+
export function appendTo(line: Line, self: Fragment): Line {
|
23
|
+
return new Line(line.fragments.append(self), line.offset);
|
24
|
+
}
|
25
|
+
|
26
|
+
/**
|
27
|
+
* @tsplus operator fncts.test.data.Fragment +
|
28
|
+
*/
|
29
|
+
export function prependTo(self: Fragment, line: Line): Line {
|
30
|
+
return new Line(line.fragments.prepend(self), line.offset);
|
31
|
+
}
|
32
|
+
|
33
|
+
/**
|
34
|
+
* @tsplus operator fncts.test.data.Fragment +
|
35
|
+
*/
|
36
|
+
export function append(self: Fragment, that: Fragment): Line {
|
37
|
+
return new Line(Vector(self, that));
|
38
|
+
}
|
39
|
+
|
40
|
+
/**
|
41
|
+
* @tsplus getter fncts.test.data.Fragment toLine
|
42
|
+
*/
|
43
|
+
export function toLine(self: Fragment): Line {
|
44
|
+
return new Line(Vector(self));
|
45
|
+
}
|
46
|
+
|
47
|
+
/**
|
48
|
+
* @tsplus getter fncts.test.data.Fragment bold
|
49
|
+
*/
|
50
|
+
export function bold(self: Fragment): Fragment {
|
51
|
+
return new Fragment(self.text, Style.Bold(self));
|
52
|
+
}
|
53
|
+
|
54
|
+
/**
|
55
|
+
* @tsplus getter fncts.test.data.Fragment underlined
|
56
|
+
*/
|
57
|
+
export function underlined(self: Fragment): Fragment {
|
58
|
+
return new Fragment(self.text, Style.Underlined(self));
|
59
|
+
}
|