diff --git a/testing-modules/mockito/pom.xml b/testing-modules/mockito/pom.xml index cdd73e6efe..d9478d5bd1 100644 --- a/testing-modules/mockito/pom.xml +++ b/testing-modules/mockito/pom.xml @@ -51,7 +51,6 @@ org.hamcrest java-hamcrest ${hamcrest.version} - test diff --git a/testing-modules/mockito/src/main/java/org/baeldung/hamcrest/custommatchers/IsDivisibleBy.java b/testing-modules/mockito/src/main/java/org/baeldung/hamcrest/custommatchers/IsDivisibleBy.java new file mode 100644 index 0000000000..65a183f273 --- /dev/null +++ b/testing-modules/mockito/src/main/java/org/baeldung/hamcrest/custommatchers/IsDivisibleBy.java @@ -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 { + + 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 divisibleBy(Integer divider) { + return new IsDivisibleBy(divider); + } +} diff --git a/testing-modules/mockito/src/main/java/org/baeldung/hamcrest/custommatchers/IsOnlyNumbers.java b/testing-modules/mockito/src/main/java/org/baeldung/hamcrest/custommatchers/IsOnlyNumbers.java new file mode 100644 index 0000000000..7d95fbf34a --- /dev/null +++ b/testing-modules/mockito/src/main/java/org/baeldung/hamcrest/custommatchers/IsOnlyNumbers.java @@ -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 { + + @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 onlyNumbers() { + return new IsOnlyNumbers(); + } +} \ No newline at end of file diff --git a/testing-modules/mockito/src/main/java/org/baeldung/hamcrest/custommatchers/IsUppercase.java b/testing-modules/mockito/src/main/java/org/baeldung/hamcrest/custommatchers/IsUppercase.java new file mode 100644 index 0000000000..859e7006b7 --- /dev/null +++ b/testing-modules/mockito/src/main/java/org/baeldung/hamcrest/custommatchers/IsUppercase.java @@ -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 { + + @Override + protected boolean matchesSafely(String s) { + return s.equals(s.toUpperCase()); + } + + @Override + public void describeTo(Description description) { + description.appendText("all uppercase"); + } + + public static Matcher uppercase() { + return new IsUppercase(); + } +} \ No newline at end of file diff --git a/testing-modules/mockito/src/test/java/org/baeldung/hamcrest/HamcrestCustomUnitTest.java b/testing-modules/mockito/src/test/java/org/baeldung/hamcrest/HamcrestCustomUnitTest.java new file mode 100644 index 0000000000..4d6ff8503f --- /dev/null +++ b/testing-modules/mockito/src/test/java/org/baeldung/hamcrest/HamcrestCustomUnitTest.java @@ -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)))); + } +}