/******************************************************************************* * 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 ); } }