Add arbitraries for not empty collection/string which do not ever fail to generate value #206
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've observed, that generation of
String :| Not[Empty]
tends to fail to generate value from time to time (even up to 1.5% from my tests) <- because the generator used underneath from time to time selects 0 size for collection.This has caused some flaky tests for us when we had many such values generated and combined - then the probability of failing increases to
1 - 0.985^n
where n is number of values combined.Scalacheck has built in function
Gen.nonEmptyBuildableOf
which can be used here. Not Empty case may be the most usefulLength[X]
case so it makes sense IMHO to optimise here. Similar thing is done in refined.