1 package csdl.jblanket.util; 2 3 import java.io.File ; 4 import java.util.Enumeration ; 5 import java.util.jar.JarEntry ; 6 import java.util.jar.JarFile ; 7 8 import junit.framework.TestCase; 9 import junit.framework.TestSuite; 10 import junit.textui.TestRunner; 11 12 import org.apache.tools.ant.DirectoryScanner; 13 14 24 public class TestJarFactory extends TestCase { 25 26 27 private String jarTestdataDir; 28 29 private String unjarTestdataDir; 30 31 32 private String testDir; 33 34 35 private final String testdataDirName = "testdata"; 36 37 private final String jarTestdataDirName = "jar"; 38 39 private final String unjarTestdataDirName = "unjar"; 40 41 private final String jarFileName = "stack.jar"; 42 43 44 private final String SLASH = File.separator; 45 46 47 private final String cvsGrammar = "**" + SLASH + "CVS" + SLASH + "**"; 48 49 private final String include1 = "edu" + SLASH + "**"; 50 51 private final String include2 = "META-INF"; 52 53 58 public TestJarFactory(String name) { 59 super(name); 60 } 61 62 65 public void setUp() { 66 67 this.testDir = System.getProperty("jblanket.testdir") + SLASH + "testjar"; 68 assertNotNull("Checking for presence of methodset_testdir.", this.testDir); 69 70 String testdataDir = System.getProperty("jblanket.data.dir"); 72 this.jarTestdataDir = testdataDir + SLASH + this.jarTestdataDirName; 73 this.unjarTestdataDir = testdataDir + SLASH + this.unjarTestdataDirName; 74 } 75 76 81 public void testJarFactory() throws Exception { 82 83 JarFactory factory = new JarFactory(this.testDir); 85 factory.unJar(new File (this.jarTestdataDir, this.jarFileName)); 86 87 DirectoryScanner knownScanner = new DirectoryScanner(); 89 knownScanner.setIncludes(new String [] {include1, include2}); 90 knownScanner.setExcludes(new String [] {cvsGrammar}); 91 knownScanner.setBasedir(new File (this.unjarTestdataDir)); 92 knownScanner.scan(); 93 String [] knownDirectories = knownScanner.getIncludedDirectories(); 94 String [] knownFiles = knownScanner.getIncludedFiles(); 95 96 DirectoryScanner factoryScanner = new DirectoryScanner(); 98 factoryScanner.setIncludes(new String [] {include1, include2}); 99 factoryScanner.setBasedir(new File (this.testDir)); 100 factoryScanner.scan(); 101 String [] factoryDirectories = factoryScanner.getIncludedDirectories(); 102 String [] factoryFiles = factoryScanner.getIncludedFiles(); 103 104 assertEquals("checking number of directories", knownDirectories.length, 106 factoryDirectories.length); 107 assertEquals("checking number of files", knownFiles.length, factoryFiles.length); 108 109 assertTrue("Checking at least one file is not empty", factoryFiles[0].length() > 0); 110 111 factory = new JarFactory(this.testDir); 113 File jarFile = new File (this.testDir, this.jarFileName); 115 if (jarFile.exists()) { 116 jarFile.delete(); 117 } 118 factory.jar(jarFile); 119 120 JarFile knownFile = new JarFile (new File (this.jarTestdataDir, this.jarFileName)); 122 Enumeration knownEnum = knownFile.entries(); 123 124 JarFile factoryFile = new JarFile (new File (this.testDir, this.jarFileName)); 126 Enumeration factoryEnum = factoryFile.entries(); 127 128 while (knownEnum.hasMoreElements() && factoryEnum.hasMoreElements()) { 130 assertEquals("checking JAR entries", ((JarEntry ) knownEnum.nextElement()).getName(), 131 ((JarEntry ) factoryEnum.nextElement()).getName()); 132 } 133 assertTrue("checking if all entries were included", !knownEnum.hasMoreElements()); 134 assertTrue("checking if extra entries were included", !factoryEnum.hasMoreElements()); 135 136 knownFile.close(); 137 factoryFile.close(); 138 } 139 140 145 public static void main(String [] args) { 146 147 System.out.println("JUnit testing JarFactory."); 148 TestRunner.run(new TestSuite(TestJarFactory.class)); 150 } 151 } 152 | Popular Tags |