// This product is provided under the terms of EPL (Eclipse Public License) // version 1.0. // // The full license text can be read from: http://www.eclipse.org/org/documents/epl-v10.php package org.dtangler.javaengine.jarfileparser; import static org.junit.Assert.assertEquals; import java.io.File; import java.io.IOException; import java.util.Arrays; import java.util.Collections; import java.util.HashSet; import java.util.Set; import org.dtangler.core.filefinder.FullPathWildCardFileFilter; import org.dtangler.core.filefinder.RecursiveFileFinder; import org.dtangler.core.testutil.ClassPathEntryFinder; import org.dtangler.javaengine.classfileparser.ClassFileParser; import org.dtangler.javaengine.jarfileparser.JarFileParser; import org.dtangler.javaengine.types.JavaClass; import org.junit.Test; public class JarFileParserTest { @Test public void testClassesFromJarFileEqualClassesFromClassFiles() throws IOException { String corePath = ClassPathEntryFinder.getPathContaining("core"); String jarPath = corePath + "/org/dtangler/javaengine/jarfileparser/testdata/testdata.jar"; String expectedClasses = corePath + "/org/dtangler/javaengine/classfileparser/testdata"; Set<JavaClass> jarClasses = new JarFileParser() .parse(new File(jarPath)); Set<JavaClass> classClasses = getExpectedClasses(expectedClasses); assertEquals(classClasses, jarClasses); } private Set<JavaClass> getExpectedClasses(String path) { RecursiveFileFinder fileFinder = new RecursiveFileFinder(); Set<JavaClass> classes = new HashSet(); ClassFileParser parser = new ClassFileParser(); fileFinder.setFilter(new FullPathWildCardFileFilter(Arrays .asList(".class"), Collections.EMPTY_LIST)); fileFinder.findFiles(path); for (File file : fileFinder.getFiles()) { classes.add(parser.parse(file)); } return classes; } }