package org.hamcrest.core;

import org.hamcrest.AbstractMatcherTest;
import org.hamcrest.Matcher;

import static org.hamcrest.core.StringEndsWith.endsWith;
import static org.hamcrest.core.StringEndsWith.endsWithIgnoringCase;


public class StringEndsWithTest extends AbstractMatcherTest {
    
static final String EXCERPT = "EXCERPT";
    
final Matcher<String> stringEndsWith = endsWith(EXCERPT);

    
@Override
    
protected Matcher<?> createMatcher() {
        
return stringEndsWith;
    
}

    
public void testMatchesSubstringAtEnd() {
        
assertDoesNotMatch(stringEndsWith, EXCERPT + "END");
        
assertMatches(stringEndsWith, "START" + EXCERPT);
        
assertMatches(stringEndsWith, EXCERPT);
        
assertDoesNotMatch(stringEndsWith, EXCERPT.toLowerCase());
        
assertDoesNotMatch(stringEndsWith, "START" + EXCERPT + "END");
        
assertMatches(stringEndsWith, EXCERPT + EXCERPT);
        
assertDoesNotMatch(stringEndsWith, "EXCER");

        
assertMismatchDescription("was \"Something else\"", stringEndsWith, "Something else");
        
assertDescription("a string ending with \"EXCERPT\"", stringEndsWith);
    
}

    
public void testMatchesSubstringAtEndIngoringCase() {
        
final Matcher<String> ignoringCase = endsWithIgnoringCase("EXCERpt");
        
assertDoesNotMatch(ignoringCase, "eXCErpt" + "END");
        
assertMatches(ignoringCase, "START" + "EXceRpt");
        
assertMatches(ignoringCase, "EXcerPT");
        
assertDoesNotMatch(ignoringCase, "START" + "ExcERpt" + "END");
        
assertMatches(ignoringCase, "exCERpt" + "EXCerPt");
        
assertDoesNotMatch(ignoringCase, "ExcER");

        
assertMismatchDescription("was \"Something else\"", ignoringCase, "Something else");
        
assertDescription("a string ending with \"EXCERpt\" ignoring case", ignoringCase);
    
}

}