There is a problem with cascading validation when using custom validation in conjunction with embedded objects.
The attached project has a test with four scenarios:
A one-to-one relationship where the child object is 'embedded' and has in-line validation
A one-to-one relationship where the child object has in-line validation
A one-to-one relationship where the child object has custom validation
A one-to-one relationship where the child object is 'embedded' and has custom validation
In all of the above scenarios, calling validate() on the parent object should return false if the child object is invalid, however, the last scenario does not.