1 9 package org.jboss.portal.test.common; 10 11 import junit.framework.TestCase; 12 13 import java.util.List ; 14 import java.util.ArrayList ; 15 import java.util.Iterator ; 16 import java.util.Arrays ; 17 import java.util.jar.JarOutputStream ; 18 import java.util.jar.JarEntry ; 19 import java.util.jar.JarInputStream ; 20 import java.io.ByteArrayOutputStream ; 21 import java.io.IOException ; 22 import java.io.ByteArrayInputStream ; 23 import java.io.File ; 24 import java.io.FileOutputStream ; 25 import java.io.FileInputStream ; 26 import java.io.InputStream ; 27 import java.net.URL ; 28 import java.net.URLConnection ; 29 30 import org.jboss.portal.common.util.Jar; 31 import org.jboss.portal.common.junit.ExtendedAssert; 32 33 37 public class JarTestCase extends TestCase 38 { 39 40 public JarTestCase(String name) 41 { 42 super(name); 43 } 44 45 public void testJarEntryInfo() 46 { 47 Jar.EntryInfo info1 = new Jar.EntryInfo(new JarEntry ("a")); 48 assertEquals(Arrays.asList(new String []{"a"}), info1.getAtoms()); 49 50 Jar.EntryInfo info2 = new Jar.EntryInfo(new JarEntry ("a/")); 51 assertEquals(Arrays.asList(new String []{"a"}), info2.getAtoms()); 52 53 Jar.EntryInfo info3 = new Jar.EntryInfo(new JarEntry ("/")); 54 assertEquals(Arrays.asList(new String []{}), info3.getAtoms()); 55 56 Jar.EntryInfo info4 = new Jar.EntryInfo(new JarEntry ("a/b")); 57 assertEquals(Arrays.asList(new String []{"a","b"}), info4.getAtoms()); 58 59 Jar.EntryInfo info5 = new Jar.EntryInfo(new JarEntry ("a/b/")); 60 assertEquals(Arrays.asList(new String []{"a","b"}), info5.getAtoms()); 61 62 Jar.EntryInfo info6 = new Jar.EntryInfo(new JarEntry ("/a")); 63 assertEquals(Arrays.asList(new String []{"a"}), info6.getAtoms()); 64 65 Jar.EntryInfo info7 = new Jar.EntryInfo(new JarEntry ("/a/")); 66 assertEquals(Arrays.asList(new String []{"a"}), info7.getAtoms()); 67 68 Jar.EntryInfo info8 = new Jar.EntryInfo(new JarEntry ("/a/b")); 69 assertEquals(Arrays.asList(new String []{"a","b"}), info8.getAtoms()); 70 71 Jar.EntryInfo info9 = new Jar.EntryInfo(new JarEntry ("/a/b/")); 72 assertEquals(Arrays.asList(new String []{"a","b"}), info9.getAtoms()); 73 } 74 75 public void testEntryComparator() throws IOException 76 { 77 File jarFile = File.createTempFile("test", ".jar"); 78 79 FileOutputStream out = new FileOutputStream (jarFile); 80 JarOutputStream jarOut = new JarOutputStream (out); 81 jarOut.putNextEntry(new JarEntry ("a/c")); 82 jarOut.closeEntry(); 83 jarOut.putNextEntry(new JarEntry ("c/d")); 84 jarOut.closeEntry(); 85 jarOut.putNextEntry(new JarEntry ("a")); 86 jarOut.closeEntry(); 87 jarOut.putNextEntry(new JarEntry ("b")); 88 jarOut.closeEntry(); 89 jarOut.putNextEntry(new JarEntry ("a/b")); 90 jarOut.closeEntry(); 91 jarOut.close(); 92 93 jarFile.deleteOnExit(); 94 95 JarInputStream jarIn = new JarInputStream (new FileInputStream (jarFile)); 96 Iterator i = Jar.iterator(jarIn); 97 while (i.hasNext()) 98 { 99 Object o = i.next(); 100 System.out.println("o = " + o); 101 } 102 jarIn.close(); 103 } 104 105 public void testIsChildOf() 106 { 107 assertFalse(new Jar.EntryInfo(new JarEntry ("a")).isChildOf(new Jar.EntryInfo(new JarEntry ("")))); 108 assertFalse(new Jar.EntryInfo(new JarEntry ("/a")).isChildOf(new Jar.EntryInfo(new JarEntry ("")))); 109 assertTrue(new Jar.EntryInfo(new JarEntry ("a")).isChildOf(new Jar.EntryInfo(new JarEntry ("/")))); 110 assertTrue(new Jar.EntryInfo(new JarEntry ("/a")).isChildOf(new Jar.EntryInfo(new JarEntry ("/")))); 111 assertFalse(new Jar.EntryInfo(new JarEntry ("a/b")).isChildOf(new Jar.EntryInfo(new JarEntry ("a")))); 112 assertFalse(new Jar.EntryInfo(new JarEntry ("/a/b")).isChildOf(new Jar.EntryInfo(new JarEntry ("a")))); 113 assertTrue(new Jar.EntryInfo(new JarEntry ("a/b")).isChildOf(new Jar.EntryInfo(new JarEntry ("a/")))); 114 assertTrue(new Jar.EntryInfo(new JarEntry ("/a/b")).isChildOf(new Jar.EntryInfo(new JarEntry ("a/")))); 115 } 116 117 } 118 | Popular Tags |