Separate testing and input generation concepts #96
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I got stuck implementing parallel state machine testing as
Test
was notMonadBaseControl
so I couldn't fork it to a new thread. This change makes a separation between things that support testing (Test
) and things that support testing and can generate input (TestGen
). This means that we can fork a thread inTest
even though we can't do so forTestGen
. It also clears up the strangeResourceT
behaviour somewhat.I'm not really happy with the names
Test
andTestGen
, would probably preferTest
andProperty
, but then I don't know what to call the top level testable thing.I'm also tossing up on the names of the
eval
functions, I named them this way so thatevalExceptT
looks likeevalStateT
fromtransformers
. But reallyeval
itself is more similar toevaluate
inbase:Control.Exception
! @charleso, I wouldn't mind a discussion about this some time