Assertion are used by a programmer to validate that system conditions are true. This goes with the programming by contract model. When a method is first entered the programmer should have a list of assertions about the state of input parameters and the system state.
This allows one to quickly identify when a piece of code isn't used properly.
@since 0.1