001: package com.mockrunner.test.gen;
002:
003: import java.util.ArrayList;
004: import java.util.List;
005: import java.util.Map;
006: import java.util.Set;
007:
008: import junit.framework.TestCase;
009:
010: import com.kirkk.analyzer.framework.Jar;
011: import com.kirkk.analyzer.framework.bcelbundle.JarImpl;
012: import com.mockrunner.gen.jar.JarFileExtractor;
013:
014: public class JarFileExtractorTest extends TestCase {
015: private JarFileExtractor getJarFileExtractor(List mainJars,
016: List exceptionJars) {
017: return new JarFileExtractor(mainJars, exceptionJars);
018: }
019:
020: private List getMainJars() {
021: List jars = new ArrayList();
022: jars.add("test1.jar");
023: jars.add("test2.jar");
024: jars.add("test3.jar");
025: return jars;
026: }
027:
028: private List getExceptionJars() {
029: List jars = new ArrayList();
030: jars.add("nested1.jar");
031: return jars;
032: }
033:
034: private JarImpl createEmptyJar(String name) {
035: return new JarImpl(name);
036: }
037:
038: private JarImpl createJarWithDependencies(String name,
039: String[] dependencies) {
040: JarImpl jar = createEmptyJar(name);
041: for (int ii = 0; ii < dependencies.length; ii++) {
042: jar.addOutgoingDependency(createEmptyJar(dependencies[ii]));
043: }
044: return jar;
045: }
046:
047: public void testFilter() {
048: JarFileExtractor extractor = getJarFileExtractor(getMainJars(),
049: new ArrayList());
050: Jar[] jars = new Jar[5];
051: jars[0] = createEmptyJar("test1.jar");
052: jars[1] = createEmptyJar("test2.jar");
053: jars[2] = createEmptyJar("test3.jar");
054: jars[3] = createEmptyJar("test4.jar");
055: jars[4] = createEmptyJar("test5.jar");
056: jars = extractor.filter(jars);
057: assertEquals(3, jars.length);
058: assertTrue(jars[0].getJarFileName().equals("test1.jar"));
059: assertTrue(jars[1].getJarFileName().equals("test2.jar"));
060: assertTrue(jars[2].getJarFileName().equals("test3.jar"));
061: }
062:
063: public void testEmpty() {
064: JarFileExtractor extractor = getJarFileExtractor(getMainJars(),
065: new ArrayList());
066: Map dependencies = extractor.createDependencies(new Jar[0]);
067: assertEquals(0, dependencies.size());
068: }
069:
070: public void testNoDependencies() {
071: JarFileExtractor extractor = getJarFileExtractor(getMainJars(),
072: new ArrayList());
073: Jar[] jars = new Jar[3];
074: jars[0] = createEmptyJar("test1.jar");
075: jars[1] = createEmptyJar("test2.jar");
076: jars[2] = createEmptyJar("test3.jar");
077: Map dependencies = extractor.createDependencies(jars);
078: assertEquals(3, dependencies.size());
079: assertTrue(((Set) dependencies.get("test1.jar")).isEmpty());
080: assertTrue(((Set) dependencies.get("test2.jar")).isEmpty());
081: assertTrue(((Set) dependencies.get("test3.jar")).isEmpty());
082: }
083:
084: public void testDependencies() {
085: JarFileExtractor extractor = getJarFileExtractor(getMainJars(),
086: new ArrayList());
087: Jar[] jars = new Jar[1];
088: jars[0] = createJarWithDependencies("test1.jar", new String[] {
089: "1", "2", "3" });
090: Map dependencies = extractor.createDependencies(jars);
091: assertEquals(1, dependencies.size());
092: Set jarSet = (Set) dependencies.get("test1.jar");
093: assertEquals(3, jarSet.size());
094: assertTrue(jarSet.contains("1"));
095: assertTrue(jarSet.contains("2"));
096: assertTrue(jarSet.contains("3"));
097: }
098:
099: public void testRecursiveDependencies() {
100: JarFileExtractor extractor = getJarFileExtractor(getMainJars(),
101: new ArrayList());
102: JarImpl jar1 = createEmptyJar("test1.jar");
103: JarImpl nested1 = createJarWithDependencies("nested1.jar",
104: new String[] { "1", "2", "3" });
105: JarImpl nested2 = createJarWithDependencies("nested2.jar",
106: new String[] { "4", "5", "6" });
107: jar1.addOutgoingDependency(nested1);
108: jar1.addOutgoingDependency(nested2);
109: JarImpl jar2 = createJarWithDependencies("test2.jar",
110: new String[] { "7", "8", "9" });
111: Jar[] jars = new Jar[] { jar1, jar2 };
112: Map dependencies = extractor.createDependencies(jars);
113: assertEquals(2, dependencies.size());
114: Set jars1 = (Set) dependencies.get("test1.jar");
115: assertEquals(8, jars1.size());
116: assertTrue(jars1.contains("1"));
117: assertTrue(jars1.contains("2"));
118: assertTrue(jars1.contains("3"));
119: assertTrue(jars1.contains("4"));
120: assertTrue(jars1.contains("5"));
121: assertTrue(jars1.contains("6"));
122: assertTrue(jars1.contains("nested1.jar"));
123: assertTrue(jars1.contains("nested2.jar"));
124: Set jars2 = (Set) dependencies.get("test2.jar");
125: assertEquals(3, jars2.size());
126: assertTrue(jars2.contains("7"));
127: assertTrue(jars2.contains("8"));
128: assertTrue(jars2.contains("9"));
129: extractor = getJarFileExtractor(getMainJars(),
130: getExceptionJars());
131: dependencies = extractor.createDependencies(jars);
132: assertEquals(2, dependencies.size());
133: jars1 = (Set) dependencies.get("test1.jar");
134: assertEquals(5, jars1.size());
135: assertTrue(jars1.contains("4"));
136: assertTrue(jars1.contains("5"));
137: assertTrue(jars1.contains("6"));
138: assertTrue(jars1.contains("nested1.jar"));
139: assertTrue(jars1.contains("nested2.jar"));
140: jars2 = (Set) dependencies.get("test2.jar");
141: assertEquals(3, jars2.size());
142: assertTrue(jars2.contains("7"));
143: assertTrue(jars2.contains("8"));
144: assertTrue(jars2.contains("9"));
145: }
146: }
|