This library provides a basic abstract clock interface. This simplifies testing code that needs to read time or sleep.
Instead of reading the time directly, such code should instead accept an abstract Clock *
object. In production code, this should be instantiated to a RealClock
object, while test code can use a FakeClock
object, and control how time advances.