### Question:
InteracETransferValidator extends InputValidator { @Override public ValidationResult validate(String input) { ValidationResult result = validateIfNotEmpty(input); if (!result.isValid) { return result; } else { ValidationResult emailResult = emailValidator.validate(input); if (emailResult.isValid) return emailResult; else return validatePhoneNumber(input); } } @Inject  InteracETransferValidator(EmailValidator emailValidator, InteracETransferQuestionValidator questionValidator, InteracETransferAnswerValidator answerValidator); @Override ValidationResult validate(String input); final InputValidator answerValidator; final InputValidator questionValidator; }### Answer:
@Test public void validate() throws Exception { InteracETransferValidator validator = new InteracETransferValidator( new EmailValidator(), new InteracETransferQuestionValidator(new LengthValidator(), new RegexValidator()), new InteracETransferAnswerValidator(new LengthValidator(), new RegexValidator()) ); assertTrue(validator.validate("name@domain.tld").isValid); assertTrue(validator.validate("n1.n2@c.dd").isValid); assertTrue(validator.validate("+1 236 123-4567").isValid); assertTrue(validator.validate("15061234567").isValid); assertTrue(validator.validate("1 289 784 2134").isValid); assertTrue(validator.validate("+1-514-654-7412").isValid); assertFalse(validator.validate("abc@.de").isValid); assertFalse(validator.validate("abc@d.e").isValid); assertFalse(validator.validate("2361234567").isValid); assertFalse(validator.validate("+150612345678").isValid); assertFalse(validator.validate("1289784213").isValid); assertFalse(validator.validate("+1 555 123-4567").isValid); assertFalse(validator.validate("+1 236 1234-567").isValid); }