package fr.openwide.core.test.wicket.more.model;
import java.util.Collection;
import java.util.Set;
import org.hamcrest.Description;
import org.hamcrest.Matcher;
import org.hamcrest.TypeSafeMatcher;
import com.google.common.base.Equivalence;
public abstract class AbstractTestCollectionModel<C extends Collection<?>>
extends AbstractTestModel<C> {
protected static final Equivalence<Set<?>> UNORDERED_SET_EQUIVALENCE = new Equivalence<Set<?>>() {
@Override
protected boolean doEquivalent(Set<?> a, Set<?> b) {
return a.size() == b.size() && b.containsAll(a); // No constraint on Set order
}
@Override
protected int doHash(Set<?> t) {
return t.hashCode();
}
@Override
public String toString() {
return "UNORDERED_SET_EQUIVALENCE";
}
};
public AbstractTestCollectionModel(Equivalence<? super C> equivalence) {
super(equivalence);
}
protected Matcher<C> isEmpty() {
return new TypeSafeMatcher<C>() {
@Override
public void describeTo(Description description) {
description.appendText("an empty collection");
}
@Override
protected boolean matchesSafely(C item) {
return item.isEmpty();
}
};
}
}