package org.whole.lang.tests.junit;
import org.hamcrest.Factory;
import org.hamcrest.Matcher;
import org.whole.lang.bindings.IBindingManager;
import org.whole.lang.matchers.GenericMatcherFactory;
import org.whole.lang.model.IEntity;
import org.whole.lang.reflect.EntityKinds;
import org.whole.lang.tests.matchers.TestsMatcherFactory;
import org.whole.lang.visitors.IVisitor;
/**
* @author Enrico Persiani
*/
public class EntityMatchers {
@Factory
public static <T> Matcher<IEntity> equalToEntity(final IEntity toEntity) {
return new VisitorMatcher(TestsMatcherFactory.instance.equals(toEntity));
}
@Factory
public static <T> Matcher<IEntity> sameAsEntity(final IEntity asEntity) {
return new VisitorMatcher(TestsMatcherFactory.instance.same(asEntity));
}
@Factory
public static <T> Matcher<IEntity> defined(IBindingManager bindings) {
IVisitor v = TestsMatcherFactory.instance.defined();
v.setBindings(bindings);
return new VisitorMatcher(v);
}
@Factory
public static <T> Matcher<IEntity> equalToValue(final Object toValue) {
return new VisitorMatcher(TestsMatcherFactory.instance.equalsValue(toValue));
}
@Factory
public static <T> Matcher<IEntity> isNull() {
return new VisitorMatcher(TestsMatcherFactory.instance.isNull());
}
@Factory
public static <T> Matcher<IEntity> matches(final IEntity pattern) {
return new VisitorMatcher(GenericMatcherFactory.instance.match(pattern));
}
@Factory
public static <T> Matcher<IEntity> assignableTo(final String edName) {
return new VisitorMatcher(GenericMatcherFactory.instance.isPlatformSubtypeOfMatcher(edName));
}
@Factory
public static <T> Matcher<IEntity> hasType(final String edName) {
return new VisitorMatcher(GenericMatcherFactory.instance.hasTypeMatcher(edName));
}
@Factory
public static <T> Matcher<IEntity> hasKind(final EntityKinds kind) {
return new VisitorMatcher(GenericMatcherFactory.instance.hasKindMatcher(kind));
}
}