~ubuntu-branches/ubuntu/saucy/libhamcrest1.2-java/saucy

« back to all changes in this revision

Viewing changes to hamcrest-library/src/main/java/org/hamcrest/text/StringContainsInOrder.java

  • Committer: Package Import Robot
  • Author(s): Brian Thomason
  • Date: 2011-12-02 17:55:55 UTC
  • Revision ID: package-import@ubuntu.com-20111202175555-xuj86jbpi8mehr1o
Tags: upstream-1.2
ImportĀ upstreamĀ versionĀ 1.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
package org.hamcrest.text;
 
2
 
 
3
import org.hamcrest.Description;
 
4
import org.hamcrest.Factory;
 
5
import org.hamcrest.Matcher;
 
6
import org.hamcrest.TypeSafeMatcher;
 
7
 
 
8
public class StringContainsInOrder extends TypeSafeMatcher<String> {
 
9
    private final Iterable<String> substrings;
 
10
 
 
11
    public StringContainsInOrder(Iterable<String> substrings) {
 
12
        this.substrings = substrings;
 
13
    }
 
14
    
 
15
    @Override
 
16
    public boolean matchesSafely(String s) {
 
17
        int fromIndex = 0;
 
18
        
 
19
        for (String substring : substrings) {
 
20
            fromIndex = s.indexOf(substring, fromIndex);
 
21
            if (fromIndex == -1) {
 
22
                return false;
 
23
            }
 
24
        }
 
25
        
 
26
        return true;
 
27
    }
 
28
    
 
29
    @Override
 
30
    public void describeMismatchSafely(String item, Description mismatchDescription) {
 
31
        mismatchDescription.appendText("was \"").appendText(item).appendText("\"");
 
32
    }
 
33
    
 
34
    public void describeTo(Description description) {
 
35
        description.appendText("a string containing ")
 
36
                   .appendValueList("", ", ", "", substrings)
 
37
                   .appendText(" in order");
 
38
    }
 
39
    
 
40
    @Factory
 
41
    public static Matcher<String> stringContainsInOrder(Iterable<String> substrings) {
 
42
        return new StringContainsInOrder(substrings);
 
43
    }
 
44
}