File tree 5 files changed +127
-1
lines changed
main/java/org/baeldung/hamcrest/custommatchers
test/java/org/baeldung/hamcrest
5 files changed +127
-1
lines changed Original file line number Diff line number Diff line change 51
51
<groupId >org.hamcrest</groupId >
52
52
<artifactId >java-hamcrest</artifactId >
53
53
<version >${hamcrest.version} </version >
54
- <scope >test</scope >
55
54
</dependency >
56
55
57
56
</dependencies >
Original file line number Diff line number Diff line change
1
+ package org .baeldung .hamcrest .custommatchers ;
2
+
3
+ import org .hamcrest .Description ;
4
+ import org .hamcrest .Matcher ;
5
+ import org .hamcrest .TypeSafeMatcher ;
6
+
7
+ public class IsDivisibleBy extends TypeSafeMatcher <Integer > {
8
+
9
+ private Integer divider ;
10
+
11
+ private IsDivisibleBy (Integer divider ) {
12
+ this .divider = divider ;
13
+ }
14
+
15
+ @ Override
16
+ protected boolean matchesSafely (Integer dividend ) {
17
+ return ((dividend % divider ) == 0 );
18
+ }
19
+
20
+ @ Override
21
+ public void describeTo (Description description ) {
22
+ description .appendText ("divisible by " + divider );
23
+ }
24
+
25
+ public static Matcher <Integer > divisibleBy (Integer divider ) {
26
+ return new IsDivisibleBy (divider );
27
+ }
28
+ }
Original file line number Diff line number Diff line change
1
+ package org .baeldung .hamcrest .custommatchers ;
2
+
3
+ import org .hamcrest .Description ;
4
+ import org .hamcrest .Matcher ;
5
+ import org .hamcrest .TypeSafeMatcher ;
6
+
7
+ public class IsOnlyNumbers extends TypeSafeMatcher <String > {
8
+
9
+ @ Override
10
+ protected boolean matchesSafely (String s ) {
11
+ try {
12
+ Integer .parseInt (s );
13
+ return true ;
14
+ } catch (NumberFormatException nfe ) {
15
+ return false ;
16
+ }
17
+ }
18
+
19
+ @ Override
20
+ public void describeTo (Description description ) {
21
+ description .appendText ("only numbers" );
22
+ }
23
+
24
+ public static Matcher <String > onlyNumbers () {
25
+ return new IsOnlyNumbers ();
26
+ }
27
+ }
Original file line number Diff line number Diff line change
1
+ package org .baeldung .hamcrest .custommatchers ;
2
+
3
+ import org .hamcrest .Description ;
4
+ import org .hamcrest .Matcher ;
5
+ import org .hamcrest .TypeSafeMatcher ;
6
+
7
+ public class IsUppercase extends TypeSafeMatcher <String > {
8
+
9
+ @ Override
10
+ protected boolean matchesSafely (String s ) {
11
+ return s .equals (s .toUpperCase ());
12
+ }
13
+
14
+ @ Override
15
+ public void describeTo (Description description ) {
16
+ description .appendText ("all uppercase" );
17
+ }
18
+
19
+ public static Matcher <String > uppercase () {
20
+ return new IsUppercase ();
21
+ }
22
+ }
Original file line number Diff line number Diff line change
1
+ package org .baeldung .hamcrest ;
2
+
3
+ import org .junit .Test ;
4
+
5
+ import static org .baeldung .hamcrest .custommatchers .IsDivisibleBy .divisibleBy ;
6
+ import static org .baeldung .hamcrest .custommatchers .IsOnlyNumbers .onlyNumbers ;
7
+ import static org .baeldung .hamcrest .custommatchers .IsUppercase .uppercase ;
8
+ import static org .hamcrest .MatcherAssert .assertThat ;
9
+ import static org .hamcrest .Matchers .is ;
10
+ import static org .hamcrest .Matchers .not ;
11
+
12
+ public class HamcrestCustomUnitTest {
13
+
14
+ @ Test
15
+ public final void givenAString_whenIsOnlyNumbers_thenCorrect () {
16
+ String numbers = "123" ;
17
+
18
+ assertThat (numbers , is (onlyNumbers ()));
19
+ }
20
+
21
+ @ Test
22
+ public final void givenAString_whenIsNotOnlyNumbers_thenCorrect () {
23
+ String numbers = "123ABC" ;
24
+
25
+ assertThat (numbers , is (not (onlyNumbers ())));
26
+ }
27
+
28
+ @ Test
29
+ public final void givenAString_whenIsUppercase_thenCorrect () {
30
+ String uppercaseWord = "HELLO" ;
31
+
32
+ assertThat (uppercaseWord , is (uppercase ()));
33
+ }
34
+
35
+ @ Test
36
+ public final void givenAnEvenInteger_whenDivisibleByTwo_thenCorrect () {
37
+ Integer ten = 10 ;
38
+ Integer two = 2 ;
39
+
40
+ assertThat (ten , is (divisibleBy (two )));
41
+ }
42
+
43
+ @ Test
44
+ public final void givenAnOddInteger_whenNotDivisibleByTwo_thenCorrect () {
45
+ Integer eleven = 11 ;
46
+ Integer two = 2 ;
47
+
48
+ assertThat (eleven , is (not (divisibleBy (two ))));
49
+ }
50
+ }
You can’t perform that action at this time.
0 commit comments