001: package jdepend.framework;
002:
003: import java.io.File;
004: import java.io.IOException;
005: import java.util.Collection;
006:
007: /**
008: * @author <b>Mike Clark</b>
009: * @author Clarkware Consulting, Inc.
010: */
011:
012: public class JarFileParserTest extends JDependTestCase {
013:
014: private File jarFile;
015: private File zipFile;
016:
017: public JarFileParserTest(String name) {
018: super (name);
019: }
020:
021: protected void setUp() {
022: super .setUp();
023:
024: jarFile = new File(getTestDataDir() + "test.jar");
025: zipFile = new File(getTestDataDir() + "test.zip");
026: }
027:
028: protected void tearDown() {
029: super .tearDown();
030: }
031:
032: public void testInvalidJarFile() throws IOException {
033:
034: JavaClassBuilder builder = new JavaClassBuilder();
035: File bogusFile = new File(getTestDataDir() + "bogus.jar");
036:
037: try {
038:
039: builder.buildClasses(bogusFile);
040: fail("Should raise IOException");
041:
042: } catch (IOException expected) {
043: assertTrue(true);
044: }
045: }
046:
047: public void testInvalidZipFile() throws IOException {
048:
049: JavaClassBuilder builder = new JavaClassBuilder();
050: File bogusFile = new File(getTestDataDir() + "bogus.zip");
051:
052: try {
053:
054: builder.buildClasses(bogusFile);
055: fail("Should raise IOException");
056:
057: } catch (IOException expected) {
058: assertTrue(true);
059: }
060: }
061:
062: public void testJarFile() throws IOException {
063:
064: JavaClassBuilder builder = new JavaClassBuilder();
065:
066: Collection classes = builder.buildClasses(jarFile);
067: assertEquals(5, classes.size());
068:
069: assertClassesExist(classes);
070: assertInnerClassesExist(classes);
071: }
072:
073: public void testJarFileWithoutInnerClasses() throws IOException {
074:
075: FileManager fm = new FileManager();
076: fm.acceptInnerClasses(false);
077:
078: JavaClassBuilder builder = new JavaClassBuilder(fm);
079:
080: Collection classes = builder.buildClasses(jarFile);
081: assertEquals(4, classes.size());
082:
083: assertClassesExist(classes);
084: }
085:
086: public void testZipFile() throws IOException {
087:
088: JavaClassBuilder builder = new JavaClassBuilder();
089:
090: Collection classes = builder.buildClasses(zipFile);
091: assertEquals(5, classes.size());
092:
093: assertClassesExist(classes);
094: assertInnerClassesExist(classes);
095: }
096:
097: public void testZipFileWithoutInnerClasses() throws IOException {
098:
099: FileManager fm = new FileManager();
100: fm.acceptInnerClasses(false);
101:
102: JavaClassBuilder builder = new JavaClassBuilder(fm);
103:
104: Collection classes = builder.buildClasses(zipFile);
105: assertEquals(4, classes.size());
106:
107: assertClassesExist(classes);
108: }
109:
110: public void testCountClasses() throws IOException {
111:
112: JDepend jdepend = new JDepend();
113: jdepend.addDirectory(getTestDataDir());
114:
115: jdepend.analyzeInnerClasses(true);
116: assertEquals(10, jdepend.countClasses());
117:
118: jdepend.analyzeInnerClasses(false);
119: assertEquals(8, jdepend.countClasses());
120: }
121:
122: private void assertClassesExist(Collection classes) {
123: assertTrue(classes.contains(new JavaClass(
124: "jdepend.framework.ExampleAbstractClass")));
125: assertTrue(classes.contains(new JavaClass(
126: "jdepend.framework.ExampleInterface")));
127: assertTrue(classes.contains(new JavaClass(
128: "jdepend.framework.ExampleConcreteClass")));
129: }
130:
131: private void assertInnerClassesExist(Collection classes) {
132: assertTrue(classes
133: .contains(new JavaClass(
134: "jdepend.framework.ExampleConcreteClass$ExampleInnerClass")));
135: }
136: }
|