There are no negative numbers or fractions: like −1 and 7 ÷ 3 in the examples above, these are also reduced to one of 0,1,...,N−1.
As usual, you cannot divide by zero. You also cannot divide if the right hand side has any common factors with the modulus. If we change our modulus to 10, then the following operations all generate errors:
3 ÷ 20 (since 20 ≡ 0);
7 ÷ 8 (since 8 and 10 have a common factor of 2).
Integers can be arbitrarily large. For instance, if we set our modulus to 2305843009213693951 (a Mersenne prime), then:
5 ^ 2305843009213693950 ≡ 1 (by Fermat's little theorem).
The code is written carefully, and is backed up by a thorough suite of 186 automated tests.