gui: fix missed nodes in hierarchical packages tree
This commit is contained in:
@@ -8,10 +8,10 @@ import jadx.api.JavaPackage;
|
||||
import jadx.core.dex.nodes.ClassNode;
|
||||
import jadx.gui.JadxWrapper;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
@@ -19,19 +19,20 @@ import static org.mockito.Mockito.mock;
|
||||
|
||||
public class JRootTest {
|
||||
|
||||
private JRoot root;
|
||||
private Decompiler decompiler;
|
||||
|
||||
@Before
|
||||
public void init() {
|
||||
root = new JRoot(mock(JadxWrapper.class));
|
||||
decompiler = new Decompiler(mock(IJadxArgs.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHierarchyPackages() {
|
||||
String pkgName = "a.b.c.d.e";
|
||||
|
||||
JadxWrapper wrapper = mock(JadxWrapper.class);
|
||||
JRoot root = new JRoot(wrapper);
|
||||
|
||||
JavaClass cls = Factory.newClass(new Decompiler(mock(IJadxArgs.class)), mock(ClassNode.class));
|
||||
JavaPackage pkg = Factory.newPackage(pkgName, Arrays.asList(cls));
|
||||
|
||||
List<JavaPackage> packages = new ArrayList<JavaPackage>();
|
||||
packages.add(pkg);
|
||||
|
||||
List<JavaPackage> packages = Arrays.asList(newPkg(pkgName));
|
||||
List<JPackage> out = root.getHierarchyPackages(packages);
|
||||
|
||||
assertEquals(out.size(), 1);
|
||||
@@ -40,4 +41,62 @@ public class JRootTest {
|
||||
assertEquals(jpkg.getClasses().size(), 1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHierarchyPackages2() {
|
||||
List<JavaPackage> packages = Arrays.asList(
|
||||
newPkg("a.b"),
|
||||
newPkg("a.c"),
|
||||
newPkg("a.d")
|
||||
);
|
||||
List<JPackage> out = root.getHierarchyPackages(packages);
|
||||
|
||||
assertEquals(out.size(), 1);
|
||||
JPackage jpkg = out.get(0);
|
||||
assertEquals(jpkg.getName(), "a");
|
||||
assertEquals(jpkg.getClasses().size(), 0);
|
||||
assertEquals(jpkg.getInnerPackages().size(), 3);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHierarchyPackages3() {
|
||||
List<JavaPackage> packages = Arrays.asList(
|
||||
newPkg("a.b.p1"),
|
||||
newPkg("a.b.p2"),
|
||||
newPkg("a.b.p3")
|
||||
);
|
||||
List<JPackage> out = root.getHierarchyPackages(packages);
|
||||
|
||||
assertEquals(out.size(), 1);
|
||||
JPackage jpkg = out.get(0);
|
||||
assertEquals(jpkg.getName(), "a.b");
|
||||
assertEquals(jpkg.getClasses().size(), 0);
|
||||
assertEquals(jpkg.getInnerPackages().size(), 3);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHierarchyPackages4() {
|
||||
List<JavaPackage> packages = Arrays.asList(
|
||||
newPkg("a.p1"),
|
||||
newPkg("a.b.c.p2"),
|
||||
newPkg("a.b.c.p3"),
|
||||
newPkg("d.e"),
|
||||
newPkg("d.f.a")
|
||||
);
|
||||
List<JPackage> out = root.getHierarchyPackages(packages);
|
||||
|
||||
assertEquals(out.size(), 2);
|
||||
assertEquals(out.get(0).getName(), "a");
|
||||
assertEquals(out.get(0).getInnerPackages().size(), 2);
|
||||
assertEquals(out.get(1).getName(), "d");
|
||||
assertEquals(out.get(1).getInnerPackages().size(), 2);
|
||||
}
|
||||
|
||||
private JavaPackage newPkg(String name) {
|
||||
return Factory.newPackage(name, Arrays.asList(newClass()));
|
||||
}
|
||||
|
||||
private JavaClass newClass() {
|
||||
return Factory.newClass(decompiler, mock(ClassNode.class));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user