When input is truly faulty, throw exception instead of returning false. Add appropriate tests for each such exception.