package org.hamcrest.collection;

import org.hamcrest.AbstractMatcherTest;
import org.hamcrest.Matcher;

import java.util.ArrayList;
import java.util.Collection;

import static java.util.Arrays.asList;
import static org.hamcrest.collection.IsEmptyCollection.empty;
import static org.hamcrest.core.Is.is;

public class IsEmptyCollectionTest extends AbstractMatcherTest {

    
@Override
    
protected Matcher<Collection<?>> createMatcher() {
        
return empty();
    
}

    
public void testMatchesAnEmptyCollection() {
        
assertMatches("empty collection", createMatcher(), emptyCollection());
    
}

    
public void testDoesNotMatchACollectionWithAnItem() {
        
assertMismatchDescription("<[one, three]>", is(createMatcher()), collectionOfValues());
    
}

    
public void testHasAReadableDescription() {
        
assertDescription("an empty collection", createMatcher());
    
}

    
public void testCompiles() {
        
needs(IsEmptyCollection.emptyCollectionOf(String.class));
    
}

    
private void needs(@SuppressWarnings("unused") Matcher<Collection<String>> bar) { }
    

    
private static Collection<String> collectionOfValues() {
        
return new ArrayList<String>(asList("one", "three"));
    
}

    
private static Collection<Integer> emptyCollection() {
        
return new ArrayList<Integer>();
    
}
}