1c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffinpackage org.hamcrest.core;
2c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin
3c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffinimport org.hamcrest.AbstractMatcherTest;
4c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffinimport org.hamcrest.Matcher;
5c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin
6c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffinimport static org.hamcrest.core.StringEndsWith.endsWith;
7c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffinimport static org.hamcrest.core.StringEndsWith.endsWithIgnoringCase;
8c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin
9c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin
10c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffinpublic class StringEndsWithTest extends AbstractMatcherTest {
11c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin    static final String EXCERPT = "EXCERPT";
12c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin    final Matcher<String> stringEndsWith = endsWith(EXCERPT);
13c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin
14c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin    @Override
15c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin    protected Matcher<?> createMatcher() {
16c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin        return stringEndsWith;
17c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin    }
18c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin
19c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin    public void testMatchesSubstringAtEnd() {
20c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin        assertDoesNotMatch(stringEndsWith, EXCERPT + "END");
21c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin        assertMatches(stringEndsWith, "START" + EXCERPT);
22c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin        assertMatches(stringEndsWith, EXCERPT);
23c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin        assertDoesNotMatch(stringEndsWith, EXCERPT.toLowerCase());
24c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin        assertDoesNotMatch(stringEndsWith, "START" + EXCERPT + "END");
25c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin        assertMatches(stringEndsWith, EXCERPT + EXCERPT);
26c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin        assertDoesNotMatch(stringEndsWith, "EXCER");
27c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin
28c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin        assertMismatchDescription("was \"Something else\"", stringEndsWith, "Something else");
29c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin        assertDescription("a string ending with \"EXCERPT\"", stringEndsWith);
30c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin    }
31c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin
32c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin    public void testMatchesSubstringAtEndIngoringCase() {
33c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin        final Matcher<String> ignoringCase = endsWithIgnoringCase("EXCERpt");
34c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin        assertDoesNotMatch(ignoringCase, "eXCErpt" + "END");
35c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin        assertMatches(ignoringCase, "START" + "EXceRpt");
36c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin        assertMatches(ignoringCase, "EXcerPT");
37c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin        assertDoesNotMatch(ignoringCase, "START" + "ExcERpt" + "END");
38c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin        assertMatches(ignoringCase, "exCERpt" + "EXCerPt");
39c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin        assertDoesNotMatch(ignoringCase, "ExcER");
40c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin
41c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin        assertMismatchDescription("was \"Something else\"", ignoringCase, "Something else");
42c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin        assertDescription("a string ending with \"EXCERpt\" ignoring case", ignoringCase);
43c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin    }
44c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin
45c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin}
46