refactor: use package nodes in api and ui
This commit is contained in:
@@ -1,16 +0,0 @@
|
||||
package jadx.api;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import jadx.core.dex.nodes.ClassNode;
|
||||
|
||||
public class Factory {
|
||||
|
||||
public static JavaPackage newPackage(String name, List<JavaClass> classes) {
|
||||
return new JavaPackage(name, classes);
|
||||
}
|
||||
|
||||
public static JavaClass newClass(JadxDecompiler decompiler, ClassNode classNode) {
|
||||
return new JavaClass(classNode, decompiler);
|
||||
}
|
||||
}
|
||||
@@ -1,105 +0,0 @@
|
||||
package jadx.gui.treemodel;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import jadx.api.Factory;
|
||||
import jadx.api.JadxArgs;
|
||||
import jadx.api.JadxDecompiler;
|
||||
import jadx.api.JavaClass;
|
||||
import jadx.api.JavaPackage;
|
||||
import jadx.core.dex.nodes.ClassNode;
|
||||
import jadx.gui.JadxWrapper;
|
||||
|
||||
import static java.util.Arrays.asList;
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
import static org.hamcrest.Matchers.hasSize;
|
||||
import static org.hamcrest.Matchers.is;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
public class JSourcesTest {
|
||||
|
||||
private JSources sources;
|
||||
private JadxDecompiler decompiler;
|
||||
|
||||
@BeforeEach
|
||||
public void init() {
|
||||
JRoot root = mock(JRoot.class);
|
||||
when(root.isFlatPackages()).thenReturn(false);
|
||||
JadxWrapper wrapper = mock(JadxWrapper.class);
|
||||
sources = new JSources(root, wrapper);
|
||||
decompiler = new JadxDecompiler(new JadxArgs());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHierarchyPackages() {
|
||||
String pkgName = "a.b.c.d.e";
|
||||
|
||||
List<JavaPackage> packages = Collections.singletonList(newPkg(pkgName));
|
||||
List<JPackage> out = sources.getHierarchyPackages(packages);
|
||||
|
||||
assertThat(out, hasSize(1));
|
||||
JPackage jPkg = out.get(0);
|
||||
assertThat(jPkg.getName(), is(pkgName));
|
||||
assertThat(jPkg.getClasses(), hasSize(1));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHierarchyPackages2() {
|
||||
List<JavaPackage> packages = asList(
|
||||
newPkg("a.b"),
|
||||
newPkg("a.c"),
|
||||
newPkg("a.d"));
|
||||
List<JPackage> out = sources.getHierarchyPackages(packages);
|
||||
|
||||
assertThat(out, hasSize(1));
|
||||
JPackage jPkg = out.get(0);
|
||||
assertThat(jPkg.getName(), is("a"));
|
||||
assertThat(jPkg.getClasses(), hasSize(0));
|
||||
assertThat(jPkg.getInnerPackages(), hasSize(3));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHierarchyPackages3() {
|
||||
List<JavaPackage> packages = asList(
|
||||
newPkg("a.b.p1"),
|
||||
newPkg("a.b.p2"),
|
||||
newPkg("a.b.p3"));
|
||||
List<JPackage> out = sources.getHierarchyPackages(packages);
|
||||
|
||||
assertThat(out, hasSize(1));
|
||||
JPackage jPkg = out.get(0);
|
||||
assertThat(jPkg.getName(), is("a.b"));
|
||||
assertThat(jPkg.getClasses(), hasSize(0));
|
||||
assertThat(jPkg.getInnerPackages(), hasSize(3));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHierarchyPackages4() {
|
||||
List<JavaPackage> packages = asList(
|
||||
newPkg("a.p1"),
|
||||
newPkg("a.b.c.p2"),
|
||||
newPkg("a.b.c.p3"),
|
||||
newPkg("d.e"),
|
||||
newPkg("d.f.a"));
|
||||
List<JPackage> out = sources.getHierarchyPackages(packages);
|
||||
|
||||
assertThat(out, hasSize(2));
|
||||
assertThat(out.get(0).getName(), is("a"));
|
||||
assertThat(out.get(0).getInnerPackages(), hasSize(2));
|
||||
assertThat(out.get(1).getName(), is("d"));
|
||||
assertThat(out.get(1).getInnerPackages(), hasSize(2));
|
||||
}
|
||||
|
||||
private JavaPackage newPkg(String name) {
|
||||
return Factory.newPackage(name, Collections.singletonList(newClass()));
|
||||
}
|
||||
|
||||
private JavaClass newClass() {
|
||||
return Factory.newClass(decompiler, mock(ClassNode.class));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package jadx.gui.utils.pkgs;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
class TestJRenamePackage {
|
||||
|
||||
@Test
|
||||
void isValidName() {
|
||||
valid("foo");
|
||||
valid("foo.bar");
|
||||
valid("foo.bar.");
|
||||
|
||||
invalid("");
|
||||
invalid("0foo");
|
||||
invalid(".foo");
|
||||
invalid("do");
|
||||
invalid("foo.if");
|
||||
invalid("foo.if.bar");
|
||||
}
|
||||
|
||||
private void valid(String name) {
|
||||
assertThat(JRenamePackage.isValidPackageName(name))
|
||||
.as("expect valid: %s", name)
|
||||
.isEqualTo(true);
|
||||
}
|
||||
|
||||
private void invalid(String name) {
|
||||
assertThat(JRenamePackage.isValidPackageName(name))
|
||||
.as("expect invalid: %s", name)
|
||||
.isEqualTo(false);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user