Add set testing

This PR adds set testing.

Targets #181
You don't need the `if` at all. `signum(o2 - o1)` yields `0` if `o2 == o1`.