blob: 9f2864bad82197b21b83f8df56f9a446ba07e40f [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package libcore.java.util.zip;
import tests.support.Support_PlatformFile;
import tests.support.resource.Support_Resources;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FilePermission;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.security.Permission;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipException;
import java.util.zip.ZipFile;
public class OldZipFileTest extends junit.framework.TestCase {
public byte[] getAllBytesFromStream(InputStream is) throws IOException {
ByteArrayOutputStream bs = new ByteArrayOutputStream();
byte[] buf = new byte[512];
int iRead;
while ((iRead = is.read(buf, 0, buf.length)) != -1) {
bs.write(buf, 0, iRead);
}
return bs.toByteArray();
}
public void test_size() throws IOException {
zfile.close();
try {
zfile.size();
fail("IllegalStateException expected");
} catch (IllegalStateException expected) {
}
}
public void test_getEntryLjava_lang_String_AndroidOnly() throws IOException {
java.util.zip.ZipEntry zentry = zfile.getEntry("File1.txt");
assertNotNull("Could not obtain ZipEntry", zentry);
int r;
InputStream in;
zentry = zfile.getEntry("testdir1");
assertNotNull("Must be able to obtain ZipEntry: testdir1", zentry);
in = zfile.getInputStream(zentry);
/*
* Android delivers empty InputStream, RI no InputStream at all. The
* spec doesn't clarify this, so we need to deal with both situations.
*/
int data = -1;
if (in != null) {
data = in.read();
in.close();
}
assertEquals("Must not be able to read directory data", -1, data);
}
// the file hyts_zipFile.zip in setup must be included as a resource
private String tempFileName;
private ZipFile zfile;
/**
* @throws IOException
* java.util.zip.ZipFile#close()
*/
public void test_close() throws IOException {
// Test for method void java.util.zip.ZipFile.close()
File fl = new File(tempFileName);
ZipFile zf = new ZipFile(fl);
InputStream is1 = zf.getInputStream(zf.getEntry("File1.txt"));
InputStream is2 = zf.getInputStream(zf.getEntry("File2.txt"));
is1.read();
is2.read();
zf.close();
try {
is1.read();
fail("IOException expected");
} catch (IOException ee) {
// expected
}
try {
is2.read();
fail("IOException expected");
} catch (IOException ee) {
// expected
}
}
public void test_getEntryLjava_lang_String_Ex() throws IOException {
java.util.zip.ZipEntry zentry = zfile.getEntry("File1.txt");
assertNotNull("Could not obtain ZipEntry", zentry);
zfile.close();
try {
zfile.getEntry("File2.txt");
fail("IllegalStateException expected");
} catch (IllegalStateException ee) {
}
}
/**
* @throws IOException
* java.util.zip.ZipFile#getInputStream(java.util.zip.ZipEntry)
*/
public void test_getInputStreamLjava_util_zip_ZipEntry() throws IOException {
// Test for method java.io.InputStream
// java.util.zip.ZipFile.getInputStream(java.util.zip.ZipEntry)
ZipEntry zentry = null;
InputStream is = null;
zentry = zfile.getEntry("File2.txt");
zfile.close();
try {
is = zfile.getInputStream(zentry);
fail("IllegalStateException expected");
} catch (IllegalStateException ee) {
// expected
}
}
/**
* Sets up the fixture, for example, open a network connection. This method
* is called before a test is executed.
*/
@Override
protected void setUp() throws IOException {
// Create a local copy of the file since some tests want to alter information.
tempFileName = System.getProperty("java.io.tmpdir");
String separator = System.getProperty("file.separator");
if (tempFileName.charAt(tempFileName.length() - 1) == separator.charAt(0)) {
tempFileName = Support_PlatformFile.getNewPlatformFile(tempFileName, "gabba.zip");
} else {
tempFileName = Support_PlatformFile.getNewPlatformFile(
tempFileName + separator, "gabba.zip");
}
File f = new File(tempFileName);
f.delete();
InputStream is = Support_Resources.getStream("hyts_ZipFile.zip");
FileOutputStream fos = new FileOutputStream(f);
byte[] rbuf = getAllBytesFromStream(is);
fos.write(rbuf, 0, rbuf.length);
is.close();
fos.close();
zfile = new ZipFile(f);
}
/**
* Tears down the fixture, for example, close a network connection. This
* method is called after a test is executed.
*/
@Override
protected void tearDown() throws IOException {
// Note zfile is a user-defined zip file used by other tests and
// should not be deleted
zfile.close();
tempFileName = System.getProperty("java.io.tmpdir");
String separator = System.getProperty("file.separator");
if (tempFileName.charAt(tempFileName.length() - 1) == separator
.charAt(0)) {
tempFileName = Support_PlatformFile.getNewPlatformFile(
tempFileName, "gabba.zip");
} else {
tempFileName = Support_PlatformFile.getNewPlatformFile(
tempFileName + separator, "gabba.zip");
}
File f = new File(tempFileName);
f.delete();
}
}