There may not be a single solution to all of these, and some of them may be hard.
Some examples:
- When specifying bounded integer ranges, we don't intentionally check near all of {{min,0,max}}
-- At first glance this sounds easy, but it involves making not-obvious decisions about the meaning of "small" examples and where to shrink to. E.g., should {{(gen/generate (gen/choose 5 Integer/MAX_VALUE) 3)}} be highly likely to generate {{Integer/MAX_VALUE}}? (Intuitively that may not match what the user means when passing {{3}} as the {{size}}); and if a test fails for {{1000}} but not for any smaller numbers, should it shrink to {{1000}} or to {{Integer/MAX_VALUE}} since the latter is "simpler" in a certain sense?
- The size of a collection correlates with the {{size}} of its elements
-- i.e., {{(gen/list gen/nat)}} is highly unlikely to generate a list of 20 {{0}}'s.