blob: 7d35c1222a3f393a23bc8dd4cc4f77573d9c2da7 [file] [log] [blame]
package org.eclipse.epp.sfx.archive.tests;
import java.io.File;
import java.io.InputStream;
import java.net.URL;
import java.util.Iterator;
import junit.framework.TestCase;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.epp.installer.internal.archive.sfx.XSEArchive;
import org.eclipse.epp.installer.internal.archive.sfx.XSEArchiveEntry;
import org.osgi.framework.Bundle;
public class EntryTest extends TestCase {
public void testEntries() throws Exception {
Bundle bundle = TestsActivator.plugin.getBundle();
URL url = FileLocator.toFileURL(bundle.getEntry("test-install.exe"));
File file = new File(url.getFile());
XSEArchive archive = new XSEArchive(file);
Iterator i = archive.entries();
int items;
assertTrue(archive.getFlags() == 0);
assertEquals("foo $#launcher# bar", archive.getExecutableArgs());
assertTrue(archive.getExecutablePath().equals("showcmdline.exe"));
XSEArchiveEntry dirEntry = (XSEArchiveEntry) archive.getEntry("emptyDir\\");
assertTrue(dirEntry != null);
assertTrue(dirEntry.getSize() == 0);
assertTrue(dirEntry.isDirectory());
assertFalse(dirEntry.isRequired());
XSEArchiveEntry placeholderEntry = (XSEArchiveEntry) archive.getEntry("placeholder");
assertTrue(placeholderEntry != null);
assertTrue(placeholderEntry.getSize() == 11);
InputStream placeholderStream = archive.getInputStream(placeholderEntry);
byte[] data = new byte[11];
int dataRead = placeholderStream.read(data);
assertTrue(dataRead == 11);
assertTrue("placeholder".equals(new String(data)));
assertTrue(placeholderStream.read() == -1);
assertFalse(placeholderEntry.isDirectory());
assertFalse(placeholderEntry.isRequired());
XSEArchiveEntry executable = (XSEArchiveEntry) archive.getEntry("showcmdline.exe");
assertTrue(executable != null);
assertTrue(executable.getSize() == 24576);
assertFalse(executable.isDirectory());
assertTrue(executable.isRequired());
assertTrue(i.hasNext());
i.next();
i.next();
i.next(); //3 items
assertFalse(i.hasNext());
}
}