protocol validation with tests