package matchers.component;
import org.mockito.ArgumentMatcher;
import uk.ac.imperial.pipe.models.petrinet.PetriNetComponent;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
/**
* Class that can have multiple @link{Has} items for a Connectable type
*/
public class HasMultiple<T extends PetriNetComponent> extends ArgumentMatcher<T> {
List<Has<T>> has_items = new LinkedList<>();
public HasMultiple(Has<T>... items)
{
Collections.addAll(has_items, items);
}
@Override
public boolean matches(Object item) {
T connectable = (T) item;
for (Has<T> has : has_items)
{
if (!has.matches(connectable))
{
return false;
}
}
return true;
}
}