package flow.netbeans.markdown.matchers;
import flow.netbeans.markdown.highlighter.MarkdownToken;
import flow.netbeans.markdown.highlighter.MarkdownTokenId;
import java.util.Iterator;
import org.hamcrest.Description;
import org.junit.internal.matchers.TypeSafeMatcher;
/**
*
* @author Holger
*/
public class ContainsTokensWithId extends TypeSafeMatcher<Iterable<MarkdownToken>> {
private final MarkdownTokenId[] ids;
public ContainsTokensWithId(MarkdownTokenId... ids) {
this.ids = ids.clone();
}
@Override
public boolean matchesSafely(Iterable<MarkdownToken> item) {
Iterator<MarkdownToken> iterator = item.iterator();
boolean result = true;
int index;
for (index = 0; index < ids.length && iterator.hasNext() && result; ++index) {
MarkdownToken token = iterator.next();
if (!token.getId().equals(ids[index])) {
return false;
}
}
if (index < ids.length || iterator.hasNext()) {
return false;
}
return true;
}
@Override
public void describeTo(Description description) {
description.appendText("token ids not equal to ");
description.appendValueList("", ", ", "", ids);
}
}