Let's see again the list of properties that we'd like to check:
- 00 -> undefined (1 by default in pow function in C++)
- 0[1 .. maxInt] -> 0
- value: [1 .. maxInt]0 -> 1
- value: [0 .. maxInt]1 -> value
- xy = xy-1 * x
We will now implement each of the properties in turn. For every property, we will use either a normal example-based test, or the data generators inspired by the generate_ints_greater_than_1 function. Let's start with the simplest property—00 should be undefined—or actually 1 in its standard implementation.