When I first heard about property-based tests, I had two issues. First, I thought they were meant to replace example tests—and we know now that they are not; just use the two techniques side by side. Second, I had no idea how to come up with good properties.
I had, however, a good idea on how to come with good examples and how to remove duplication between tests. We've seen a sample on how to come up with good examples for the power function; let's recap them:
- 00 -> undefined (* the pow implementation in C++ returns 1 unless specific errors are enabled)
- 0any integer from 0 to max -> 0
- 1any integer -> 1
- (any integer except 0)0 -> 1
- 22 -> 4
- 2max int that doesn't overflow -> value to be computed
- 105 -> 100000
- 10max int that doesn't overflow -> value to be computed
We've also...