Код: Выделить всё
if (!matcher.matches() || uuidMatcher.find())Код: Выделить всё
public void validate(String email, String emailName, List errorMessages) {
if (!StringUtils.isBlank(email)) {
// 1. Main Email Format
String regex = "^[A-Za-z0-9._+-]+@[A-Za-z0-9-]+(\\.[A-Za-z0-9-]+)*\\.[A-Za-z]{2,}$";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(email);
// 2. UUID cannot appear anywhere
String uuidRegex = "\\w{8}-\\w{4}-\\w{4}-\\w{4}-\\w{12}";
Pattern uuidPattern = Pattern.compile(uuidRegex);
Matcher uuidMatcher = uuidPattern.matcher(email);
// This is for testing/debugging only: Print each scenario
if (matcher.matches() && uuidMatcher.find())
System.out.println("Satisfied (1): matcher.matches & uuidMatcher.find");
else if (!matcher.matches() && uuidMatcher.find())
System.out.println("Satisfied (2): !matcher.matches & uuidMatcher.find");
else if (matcher.matches() && !uuidMatcher.find())
System.out.println("Satisfied (3): matcher.matches & !uuidMatcher.find");
else
System.out.println("Satisfied (4): !matcher.matches & !uuidMatcher.find");
// Add to errorMessage depending on: !matcher.matches() || uuidMatcher.find()
if (!matcher.matches() || uuidMatcher.find()) {
errorMessages.add(emailName + " is invalid");
}
}
}
Код: Выделить всё
@Test
public void testValidateEmailTrue() throws Exception {
List emails = new ArrayList();
emails.add("123@test.com");
emails.add("test@test.com");
emails.add("test@123.com");
emails.add("test.bob@test.co.in");
emails.add("test1@test.me.org");
emails.add("test_bob@test.com");
emails.add("test-bob@test.com");
emails.add("test-bob@abc.def.ghi.com");
emails.add("test+bob@abc.def.ghi.com");
emails.add("abcd1234-abcd-abcd-abcd-abcd1234567@test.com");
for (String email : emails)mail {
service.validate(email, "email", errorMessages);
}
assertTrue(errorMessages.isEmpty());
}
@Test
public void testValidateEmailFalse() throws Exception {
List emails = new ArrayList();
emails.add("@test.com");
emails.add("test&test.com");
emails.add("test#@test.me.org");
emails.add("test@abc..com");
emails.add("test%bob@abc.def.ghi.com");
emails.add("abcd1234-abcd-abcd-abcd-abcd12345678@test.com");
emails.add("%abcd1234-abcd-abcd-abcd-abcd12345678@test.com");
emails.add("abcd1234-abcd-abcd-abcd-abcd123456789@test.com");
for (String email : emails) {
service.validate(email, "email", errorMessages);
}
assertFalse(errorMessages.isEmpty());
}
@Test
public void testValidateEmailNullOrEmpty() throws Exception {
service.validate(null, "email", errorMessages);
service.validate("", "email", errorMessages);
assertTrue(errorMessages.isEmpty());
}
Код: Выделить всё
Satisfied (3): matcher.matches & !uuidMatcher.find
Satisfied (3): matcher.matches & !uuidMatcher.find
Satisfied (3): matcher.matches & !uuidMatcher.find
Satisfied (3): matcher.matches & !uuidMatcher.find
Satisfied (3): matcher.matches & !uuidMatcher.find
Satisfied (3): matcher.matches & !uuidMatcher.find
Satisfied (3): matcher.matches & !uuidMatcher.find
Satisfied (3): matcher.matches & !uuidMatcher.find
Satisfied (3): matcher.matches & !uuidMatcher.find
Satisfied (3): matcher.matches & !uuidMatcher.find
Satisfied (4): !matcher.matches & !uuidMatcher.find
Satisfied (4): !matcher.matches & !uuidMatcher.find
Satisfied (4): !matcher.matches & !uuidMatcher.find
Satisfied (4): !matcher.matches & !uuidMatcher.find
Satisfied (4): !matcher.matches & !uuidMatcher.find
Satisfied (1): matcher.matches & uuidMatcher.find
Satisfied (2): !matcher.matches & uuidMatcher.find
Satisfied (1): matcher.matches & uuidMatcher.find

Если у меня есть просто метод тестирования № 1 и закомментируйте № 2, тогда он показывает Сценарий (3) охвачен, но все остальные — нет (наоборот):
Только с методом тестирования №1 (№2 удален):

Мобильная версия