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