BAEL-4163 - Counting matches for a regex (#9466)
* BAEL-4163 - Counting matches for a regex * BAEL-4163 - Fixing build problemns * BAEL-4163 : Adding more test to assure quality of the examples * BAEL-4163 : Fixing request changes * BAEL-4163 : Minor adjustements to give more context about the commented out tests * BAEL-4163 : Tests for overlap example
This commit is contained in:
parent
78cacb4d2e
commit
535c88153d
@ -0,0 +1,110 @@
|
|||||||
|
package com.baeldung.regex.countmatches;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertNotEquals;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unit Test intended to count number of matches of a RegEx using Java 8 and 9.
|
||||||
|
*
|
||||||
|
* Java 9 is needed to run the commented out tests.
|
||||||
|
*/
|
||||||
|
public class CountMatchesUnitTest {
|
||||||
|
|
||||||
|
private static final Pattern EMAIL_ADDRESS_PATTERN = Pattern.compile("([a-z0-9_.-]+)@([a-z0-9_.-]+[a-z])");
|
||||||
|
private static final String TEXT_CONTAINING_EMAIL_ADDRESSES = "You can contact me through: writer@baeldung.com, editor@baeldung.com and team@bealdung.com";
|
||||||
|
private static final String TEXT_CONTAINING_FIVE_EMAIL_ADDRESSES = "Valid emails are: me@gmail.com, you@baeldung.com, contact@hotmail.com, press@anysite.com and support@bealdung.com";
|
||||||
|
private static final String TEXT_CONTAINING_OVERLAP_EMAIL_ADDRESSES = "Try to contact us at team@baeldung.comeditor@baeldung.com, support@baeldung.com.";
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenContainingEmailString_whenJava8Match_thenCountMacthesFound() {
|
||||||
|
Matcher countEmailMatcher = EMAIL_ADDRESS_PATTERN.matcher(TEXT_CONTAINING_EMAIL_ADDRESSES);
|
||||||
|
|
||||||
|
int count = 0;
|
||||||
|
while (countEmailMatcher.find()) {
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
assertEquals(3, count);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenContainingFiveEmailsString_whenJava8Match_thenCountMacthesFound() {
|
||||||
|
Matcher countFiveEmailsMatcher = EMAIL_ADDRESS_PATTERN.matcher(TEXT_CONTAINING_FIVE_EMAIL_ADDRESSES);
|
||||||
|
|
||||||
|
int count = 0;
|
||||||
|
while (countFiveEmailsMatcher.find()) {
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
assertEquals(5, count);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenStringWithoutEmails_whenJava8Match_thenCountMacthesNotFound() {
|
||||||
|
Matcher noEmailMatcher = EMAIL_ADDRESS_PATTERN.matcher("Simple text without emails.");
|
||||||
|
|
||||||
|
int count = 0;
|
||||||
|
while (noEmailMatcher.find()) {
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
assertEquals(0, count);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenStringWithOverlappingEmails_whenJava8Match_thenCountWrongMatches() {
|
||||||
|
Matcher countOverlappingEmailsMatcher = EMAIL_ADDRESS_PATTERN.matcher(TEXT_CONTAINING_OVERLAP_EMAIL_ADDRESSES);
|
||||||
|
|
||||||
|
int count = 0;
|
||||||
|
while (countOverlappingEmailsMatcher.find()) {
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
assertNotEquals(3, count);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenContainingEmailString_whenStartingInJava9Match_thenCountMacthesFound() {
|
||||||
|
// uncomment to try with Java 9
|
||||||
|
// Matcher countEmailMatcher = EMAIL_ADDRESS_PATTERN.matcher(TEXT_CONTAINING_EMAIL_ADDRESSES);
|
||||||
|
|
||||||
|
// long count = countEmailMatcher.results().count();
|
||||||
|
|
||||||
|
// assertEquals(3, count);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenContainingFiveEmailsString_whenStartingInJava9Match_thenCountMacthesFound() {
|
||||||
|
// uncomment to try with Java 9
|
||||||
|
// Matcher countFiveEmailsMatcher = EMAIL_ADDRESS_PATTERN.matcher(TEXT_CONTAINING_FIVE_EMAIL_ADDRESSES);
|
||||||
|
|
||||||
|
// long count = countFiveEmailsMatcher.results().count();
|
||||||
|
|
||||||
|
// assertEquals(5, count);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenStringWithoutEmails_whenJava9Match_thenCountMacthesNotFound() {
|
||||||
|
// uncomment to try with Java 9
|
||||||
|
// Matcher noEmailMatcher = EMAIL_ADDRESS_PATTERN.matcher("Simple text without emails.");
|
||||||
|
|
||||||
|
// long count = noEmailMatcher.results().count();
|
||||||
|
|
||||||
|
// assertEquals(0, count);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenStringWithOverlappingEmails_whenJava9Match_thenCountWrongMatches() {
|
||||||
|
// uncomment to try with Java 9
|
||||||
|
// Matcher countOverlappingEmailsMatcher = EMAIL_ADDRESS_PATTERN.matcher(TEXT_CONTAINING_OVERLAP_EMAIL_ADDRESSES);
|
||||||
|
|
||||||
|
// long count = countOverlappingEmailsMatcher.results().count();
|
||||||
|
|
||||||
|
// assertNotEquals(3, count);
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user