Arb()
An Arb (for arbitrary) is a provider of property test data in two categories: edgecases and samples.
Edge cases are values that are a common source of bugs. For example, a function using ints is more likely to fail for common edge cases like zero, minus 1, positive 1, Int.MAX_VALUE and Int.MIN_VALUE rather than random values like 965489. Therefore, edge cases can be included in sequences generated by an arbitrary.
Not all arbitraries will utilize edge cases. For example, if you define an integer generator using a subset of the number space - say from 100 to 250,000 - then no edge cases are provided.
Samples are chosen randomly from the sample space and are used to give a greater breadth to the test cases. For example, in the case of a function using integers, these random values could be from across the entire integer number line, or could be limited to a subset of ints such as natural numbers or even numbers.
In order to use an Arb inside a property test, one must invoke the take method, passing in the number of iterations required and optionally a ShrinkingMode.