Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion testing-modules/mockito/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@
<groupId>org.hamcrest</groupId>
<artifactId>java-hamcrest</artifactId>
<version>${hamcrest.version}</version>
<scope>test</scope>
</dependency>

</dependencies>
Expand Down
Original file line number Diff line number Diff line change
@@ -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);
}
}
Original file line number Diff line number Diff line change
@@ -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();
}
}
Original file line number Diff line number Diff line change
@@ -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();
}
}
Original file line number Diff line number Diff line change
@@ -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))));
}
}