001/*  Copyright (c) 2000-2006 hamcrest.org
002 */
003package org.hamcrest.core;
004
005import org.hamcrest.Factory;
006import org.hamcrest.Matcher;
007
008/**
009 * Tests if the argument is a string that contains a substring.
010 */
011public class StringEndsWith extends SubstringMatcher {
012    public StringEndsWith(String substring) {
013        super(substring);
014    }
015
016    @Override
017    protected boolean evalSubstringOf(String s) {
018        return s.endsWith(substring);
019    }
020
021    @Override
022    protected String relationship() {
023        return "ending with";
024    }
025
026    /**
027     * Creates a matcher that matches if the examined {@link String} ends with the specified
028     * {@link String}.
029     * <p/>
030     * For example:
031     * <pre>assertThat("myStringOfNote", endsWith("Note"))</pre>
032     * 
033     * @param suffix
034     *      the substring that the returned matcher will expect at the end of any examined string
035     */
036    @Factory
037    public static Matcher<String> endsWith(String suffix) {
038        return new StringEndsWith(suffix);
039    }
040
041}