blob: 6652e85c5ec7eee2f2c27e4c8f7c400ae0aa788d [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010-present Sonatype, Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Stuart McCulloch (Sonatype, Inc.) - initial API and implementation
*******************************************************************************/
package org.eclipse.sisu.space;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Iterator;
import org.junit.Ignore;
import junit.framework.TestCase;
@Ignore( "Need to replace some test archives" )
public class ZipEntryIteratorTest
extends TestCase
{
public void testNonJar()
throws IOException
{
final Iterator<String> i = new ZipEntryIterator( new URL( "file:" ) );
assertFalse( i.hasNext() );
try
{
i.next();
fail( "Expected Exception" );
}
catch ( final Exception e )
{
}
}
public void testBlankZip()
{
final Iterator<String> i = new ZipEntryIterator( resource( "blank.zip" ) );
assertFalse( i.hasNext() );
try
{
i.next();
fail( "Expected Exception" );
}
catch ( final Exception e )
{
}
}
public void testEmptyZip()
{
final Iterator<String> i = new ZipEntryIterator( resource( "empty.zip" ) );
assertFalse( i.hasNext() );
try
{
i.next();
fail( "Expected Exception" );
}
catch ( final Exception e )
{
}
}
public void testEmptyJar()
{
final Iterator<String> i = new ZipEntryIterator( resource( "empty.jar" ) );
assertTrue( i.hasNext() );
assertEquals( "META-INF/MANIFEST.MF", i.next() );
assertFalse( i.hasNext() );
try
{
i.next();
fail( "Expected Exception" );
}
catch ( final Exception e )
{
}
}
public void testSimpleZip()
{
final Iterator<String> i = new ZipEntryIterator( resource( "simple.zip" ) );
assertEquals( "0", i.next() );
assertEquals( "a/1", i.next() );
assertEquals( "a/b/2", i.next() );
assertEquals( "a/b/c/3", i.next() );
assertEquals( "4", i.next() );
assertEquals( "x/5", i.next() );
assertEquals( "x/y/6", i.next() );
assertEquals( "7", i.next() );
try
{
i.next();
fail( "Expected Exception" );
}
catch ( final Exception e )
{
}
}
public void testSimpleJar()
{
final Iterator<String> i = new ZipEntryIterator( resource( "simple.jar" ) );
assertEquals( "META-INF/", i.next() );
assertEquals( "META-INF/MANIFEST.MF", i.next() );
assertEquals( "0", i.next() );
assertEquals( "a/", i.next() );
assertEquals( "a/1", i.next() );
assertEquals( "a/b/", i.next() );
assertEquals( "a/b/2", i.next() );
assertEquals( "a/b/c/", i.next() );
assertEquals( "a/b/c/3", i.next() );
assertEquals( "4", i.next() );
assertEquals( "x/", i.next() );
assertEquals( "x/5", i.next() );
assertEquals( "x/y/", i.next() );
assertEquals( "x/y/6", i.next() );
assertEquals( "7", i.next() );
try
{
i.next();
fail( "Expected Exception" );
}
catch ( final Exception e )
{
}
}
public void testEmbeddedZip()
throws MalformedURLException
{
final Iterator<String> i =
new ZipEntryIterator( new URL( "jar:" + resource( "embedded.zip" ) + "!/simple.zip" ) );
assertEquals( "0", i.next() );
assertEquals( "a/1", i.next() );
assertEquals( "a/b/2", i.next() );
assertEquals( "a/b/c/3", i.next() );
assertEquals( "4", i.next() );
assertEquals( "x/5", i.next() );
assertEquals( "x/y/6", i.next() );
assertEquals( "7", i.next() );
try
{
i.next();
fail( "Expected Exception" );
}
catch ( final Exception e )
{
}
}
public void testBrokenJar()
{
final Iterator<String> i = new ZipEntryIterator( resource( "broken.jar" ) );
try
{
i.next();
fail( "Expected Exception" );
}
catch ( final Exception e )
{
}
}
public void testRemoveNotSupported()
throws IOException
{
final Iterator<String> i = new ZipEntryIterator( new URL( "file:" ) );
try
{
i.remove();
fail( "Expected UnsupportedOperationException" );
}
catch ( final UnsupportedOperationException e )
{
}
}
private static URL resource( final String name )
{
return ZipEntryIteratorTest.class.getResource( name );
}
}