BAEL-1579: Hamcrest custom matchers. (#3905)
* BAEL-1579: Hamcrest custom matchers. * BAEL-1589: Removing hamcrest dependency test scope.
This commit is contained in:
parent
48b8d2c8a5
commit
6549e41afa
|
@ -51,7 +51,6 @@
|
|||
<groupId>org.hamcrest</groupId>
|
||||
<artifactId>java-hamcrest</artifactId>
|
||||
<version>${hamcrest.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
package org.baeldung.hamcrest.custommatchers;
|
||||
|
||||
import org.hamcrest.Description;
|
||||
import org.hamcrest.Matcher;
|
||||
import org.hamcrest.TypeSafeMatcher;
|
||||
|
||||
public class IsDivisibleBy extends TypeSafeMatcher<Integer> {
|
||||
|
||||
private Integer divider;
|
||||
|
||||
private IsDivisibleBy(Integer divider) {
|
||||
this.divider = divider;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean matchesSafely(Integer dividend) {
|
||||
return ((dividend % divider) == 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void describeTo(Description description) {
|
||||
description.appendText("divisible by " + divider);
|
||||
}
|
||||
|
||||
public static Matcher<Integer> divisibleBy(Integer divider) {
|
||||
return new IsDivisibleBy(divider);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
package org.baeldung.hamcrest.custommatchers;
|
||||
|
||||
import org.hamcrest.Description;
|
||||
import org.hamcrest.Matcher;
|
||||
import org.hamcrest.TypeSafeMatcher;
|
||||
|
||||
public class IsOnlyNumbers extends TypeSafeMatcher<String> {
|
||||
|
||||
@Override
|
||||
protected boolean matchesSafely(String s) {
|
||||
try {
|
||||
Integer.parseInt(s);
|
||||
return true;
|
||||
} catch (NumberFormatException nfe) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void describeTo(Description description) {
|
||||
description.appendText("only numbers");
|
||||
}
|
||||
|
||||
public static Matcher<String> onlyNumbers() {
|
||||
return new IsOnlyNumbers();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
package org.baeldung.hamcrest.custommatchers;
|
||||
|
||||
import org.hamcrest.Description;
|
||||
import org.hamcrest.Matcher;
|
||||
import org.hamcrest.TypeSafeMatcher;
|
||||
|
||||
public class IsUppercase extends TypeSafeMatcher<String> {
|
||||
|
||||
@Override
|
||||
protected boolean matchesSafely(String s) {
|
||||
return s.equals(s.toUpperCase());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void describeTo(Description description) {
|
||||
description.appendText("all uppercase");
|
||||
}
|
||||
|
||||
public static Matcher<String> uppercase() {
|
||||
return new IsUppercase();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,50 @@
|
|||
package org.baeldung.hamcrest;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.baeldung.hamcrest.custommatchers.IsDivisibleBy.divisibleBy;
|
||||
import static org.baeldung.hamcrest.custommatchers.IsOnlyNumbers.onlyNumbers;
|
||||
import static org.baeldung.hamcrest.custommatchers.IsUppercase.uppercase;
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
import static org.hamcrest.Matchers.is;
|
||||
import static org.hamcrest.Matchers.not;
|
||||
|
||||
public class HamcrestCustomUnitTest {
|
||||
|
||||
@Test
|
||||
public final void givenAString_whenIsOnlyNumbers_thenCorrect() {
|
||||
String numbers = "123";
|
||||
|
||||
assertThat(numbers, is(onlyNumbers()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public final void givenAString_whenIsNotOnlyNumbers_thenCorrect() {
|
||||
String numbers = "123ABC";
|
||||
|
||||
assertThat(numbers, is(not(onlyNumbers())));
|
||||
}
|
||||
|
||||
@Test
|
||||
public final void givenAString_whenIsUppercase_thenCorrect() {
|
||||
String uppercaseWord = "HELLO";
|
||||
|
||||
assertThat(uppercaseWord, is(uppercase()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public final void givenAnEvenInteger_whenDivisibleByTwo_thenCorrect() {
|
||||
Integer ten = 10;
|
||||
Integer two = 2;
|
||||
|
||||
assertThat(ten, is(divisibleBy(two)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public final void givenAnOddInteger_whenNotDivisibleByTwo_thenCorrect() {
|
||||
Integer eleven = 11;
|
||||
Integer two = 2;
|
||||
|
||||
assertThat(eleven, is(not(divisibleBy(two))));
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue