started work on docs + some notes...

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2020-08-14 01:42:01 +03:00
parent 6f5aaf9663
commit be414ff772
2 changed files with 45 additions and 0 deletions

View File

@ -1,2 +1,43 @@
# test.js # test.js
experimental test runner.... experimental test runner....
## Architecture
This package implements two testing schemes:
- Combinational testing
Here the user sets up a set of `Setup`, `Modifier` and `Test` functions and the system
chains different combinations of the three and runs them.
- Unit testing
Simple independent tests.
### Combinational testing
In general the idea here is that you define three things:
- `Setups` that build a test context and objects (the _setup_),
- `Modifiers` that modify the _setup_ in some way,
- `Tests` that test some aspect of a _setup_.
The system builds chains in the form:
```
setup -> modifier* -> test
```
Where `modifier` can me either single or a chain of modifiers.
A `setup` and `modifier` can also include assertions/tests for direct testing and
sanity checks.
The system defines a blank pass-through modifier and test, to alleviate the requirement
on the user to define at least one modifier and test, so in cases where it makes no
sense only a setup is required.
Note that each element can reference and re-use other elements so for example a
modifier can call (re-use) other modifiers to avoid code duplication.
This makes it simple to define procedural/generative tests.
### Unit testing
This is the traditional self-contained test approach.

View File

@ -246,6 +246,8 @@ module.Modifier =
module.Modifiers = module.Modifiers =
object.Constructor('Modifiers', Merged, {}) object.Constructor('Modifiers', Merged, {})
// default blank pass-through... // default blank pass-through...
// NOTE: we need at least one modifier and at least one test for the
// system to run....
.add({ '-': function(_, s){ return s }) .add({ '-': function(_, s){ return s })
@ -254,6 +256,8 @@ module.Test =
module.Tests = module.Tests =
object.Constructor('Tests', Merged, {}) object.Constructor('Tests', Merged, {})
// default blank pass-through... // default blank pass-through...
// NOTE: we need at least one modifier and at least one test for the
// system to run....
.add({ '-': function(_, s){ return s }) .add({ '-': function(_, s){ return s })