package org.codehaus.plexus.components.io.resources;
import junit.framework.TestCase;
import org.codehaus.plexus.components.io.functions.InputStreamTransformer;
import javax.annotation.Nonnull;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Arrays;
import java.util.Iterator;
/**
* @author Kristian Rosenvold
*/
public class AbstractPlexusIoResourceCollectionTest
extends TestCase
{
@SuppressWarnings( "ResultOfMethodCallIgnored" ) public void testGetIncludes()
throws Exception
{
AbstractPlexusIoResourceCollection sut = new AbstractPlexusIoResourceCollection()
{
public Iterator<PlexusIoResource> getResources()
throws IOException
{
return Arrays.asList(getResource( "r1" ), getResource( "r2" )).iterator();
}
public Stream stream()
{
throw new UnsupportedOperationException();
}
};
sut.setStreamTransformer( new InputStreamTransformer()
{
@Nonnull
public InputStream transform( @Nonnull PlexusIoResource resource, @Nonnull final InputStream inputStream )
throws IOException
{
final byte[] buf = new byte[2];
buf[0] = (byte) inputStream.read();
buf[1] = (byte) inputStream.read();
return new ByteArrayInputStream( buf );
}
} );
final PlexusIoResource next = sut.getResources().next();
final InputStream inputStream = sut.getInputStream( next );
inputStream.read();
inputStream.read();
assertEquals( -1, inputStream.read());
inputStream.close();
}
private static PlexusIoResource getResource( final String r1 )
{
return new AbstractPlexusIoResource( r1, 0, 0, true, false, true )
{
@Nonnull
public InputStream getContents()
throws IOException
{
return new ByteArrayInputStream( (r1 + "Payload").getBytes() );
}
public URL getURL()
throws IOException
{
throw new IllegalStateException( "Not implemented" );
}
};
}
}