Complete unit test, Use evaluatePrecondition instead of my long code (should've known this before!)