1package org.hamcrest.core;
2
3import org.hamcrest.AbstractMatcherTest;
4import org.hamcrest.Matcher;
5
6import static org.hamcrest.core.StringContains.containsString;
7import static org.hamcrest.core.StringContains.containsStringIgnoringCase;
8
9
10public class StringContainsTest extends AbstractMatcherTest {
11    static final String EXCERPT = "EXCERPT";
12    final Matcher<String> stringContains = containsString(EXCERPT);
13
14    @Override
15    protected Matcher<?> createMatcher() {
16        return stringContains;
17    }
18
19    public void testMatchesSubstrings() {
20        assertMatches(stringContains, EXCERPT + "END");
21        assertMatches(stringContains, "START" + EXCERPT);
22        assertMatches(stringContains, "START" + EXCERPT + "END");
23        assertMatches(stringContains, EXCERPT);
24        assertDoesNotMatch(stringContains, EXCERPT.toLowerCase());
25        assertMatches(stringContains, EXCERPT + EXCERPT);
26        assertDoesNotMatch(stringContains, "XC");
27
28        assertMismatchDescription("was \"Something else\"", stringContains, "Something else");
29        assertDescription("a string containing \"EXCERPT\"", stringContains);
30    }
31
32    public void testMatchesSubstringsIgnoringCase() {
33        final Matcher<String> ignoringCase = containsStringIgnoringCase("ExCert");
34        assertMatches(ignoringCase, "eXcERT" + "END");
35        assertMatches(ignoringCase, "START" + "EXCert");
36        assertMatches(ignoringCase, "START" + "excERT" + "END");
37        assertMatches(ignoringCase, "eXCert" + "excErt");
38        assertDoesNotMatch(ignoringCase, "xc");
39
40        assertMismatchDescription("was \"Something else\"", ignoringCase, "Something else");
41        assertDescription("a string containing \"ExCert\" ignoring case", ignoringCase);
42    }
43}
44