use of org.jf.smalidea.psi.impl.SmaliFile in project smali by JesusFreke.
the class SmaliFileTest method testFile.
public void testFile() {
SmaliFile file = (SmaliFile) myFixture.addFileToProject("my/pkg/blah.smali", ".class public Lmy/pkg/blah; .super Ljava/lang/Object;");
Assert.assertEquals(SmaliFileType.INSTANCE, file.getFileType());
SmaliClass smaliClass = file.getPsiClass();
Assert.assertNotNull(smaliClass);
SmaliClass[] smaliClasses = file.getClasses();
Assert.assertNotNull(smaliClasses);
Assert.assertEquals(1, smaliClasses.length);
Assert.assertEquals(smaliClass, smaliClasses[0]);
String packageName = file.getPackageName();
Assert.assertEquals("my.pkg", packageName);
}
use of org.jf.smalidea.psi.impl.SmaliFile in project smali by JesusFreke.
the class SmaliImplementsExtendsTest method testNormalClass.
public void testNormalClass() {
myFixture.addFileToProject("my/pkg/base.smali", ".class public Lmy/pkg/base; .super Ljava/lang/Object;");
myFixture.addFileToProject("my/pkg/iface.smali", ".class public Lmy/pkg/iface; .super Ljava/lang/Object;");
myFixture.addFileToProject("my/pkg/iface2.smali", ".class public Lmy/pkg/iface2; .super Ljava/lang/Object;");
SmaliFile file = (SmaliFile) myFixture.addFileToProject("my/pkg/blah.smali", ".class public Lmy/pkg/blah; .implements Lmy/pkg/iface; .super Lmy/pkg/base; " + ".implements Lmy/pkg/iface2;");
SmaliClass smaliClass = file.getPsiClass();
SmaliExtendsList extendsList = smaliClass.getExtendsList();
Assert.assertEquals(1, extendsList.getReferencedTypes().length);
Assert.assertEquals("my.pkg.base", extendsList.getReferencedTypes()[0].getCanonicalText());
Assert.assertEquals(1, extendsList.getReferenceNames().length);
Assert.assertEquals("my.pkg.base", extendsList.getReferenceNames()[0]);
Assert.assertEquals(1, smaliClass.getExtendsListTypes().length);
Assert.assertEquals("my.pkg.base", smaliClass.getExtendsListTypes()[0].getCanonicalText());
PsiClass resolvedSuper = extendsList.getReferencedTypes()[0].resolve();
Assert.assertNotNull(resolvedSuper);
Assert.assertEquals("my.pkg.base", resolvedSuper.getQualifiedName());
SmaliImplementsList implementsList = smaliClass.getImplementsList();
Assert.assertEquals(2, implementsList.getReferencedTypes().length);
Assert.assertEquals("my.pkg.iface", implementsList.getReferencedTypes()[0].getCanonicalText());
Assert.assertEquals("my.pkg.iface2", implementsList.getReferencedTypes()[1].getCanonicalText());
Assert.assertEquals(2, implementsList.getReferenceNames().length);
Assert.assertEquals("my.pkg.iface", implementsList.getReferenceNames()[0]);
Assert.assertEquals("my.pkg.iface2", implementsList.getReferenceNames()[1]);
Assert.assertEquals(2, smaliClass.getImplementsListTypes().length);
Assert.assertEquals("my.pkg.iface", smaliClass.getImplementsListTypes()[0].getCanonicalText());
Assert.assertEquals("my.pkg.iface2", smaliClass.getImplementsListTypes()[1].getCanonicalText());
PsiClass resolvedInterface = implementsList.getReferencedTypes()[0].resolve();
Assert.assertNotNull(resolvedInterface);
Assert.assertEquals("my.pkg.iface", resolvedInterface.getQualifiedName());
resolvedInterface = implementsList.getReferencedTypes()[1].resolve();
Assert.assertNotNull(resolvedInterface);
Assert.assertEquals("my.pkg.iface2", resolvedInterface.getQualifiedName());
}
use of org.jf.smalidea.psi.impl.SmaliFile in project smali by JesusFreke.
the class SmaliImplementsExtendsTest method testInterface.
public void testInterface() {
myFixture.addFileToProject("my/pkg/iface.smali", ".class public Lmy/pkg/iface; .super Ljava/lang/Object;");
myFixture.addFileToProject("my/pkg/iface2.smali", ".class public Lmy/pkg/iface2; .super Ljava/lang/Object;");
SmaliFile file = (SmaliFile) myFixture.addFileToProject("my/pkg/blah.smali", ".class public interface Lmy/pkg/blah; .implements Lmy/pkg/iface; .super Ljava/lang/Object; " + ".implements Lmy/pkg/iface2;");
SmaliClass smaliClass = file.getPsiClass();
SmaliExtendsList extendsList = smaliClass.getExtendsList();
Assert.assertEquals(2, extendsList.getReferencedTypes().length);
Assert.assertEquals("my.pkg.iface", extendsList.getReferencedTypes()[0].getCanonicalText());
Assert.assertEquals("my.pkg.iface2", extendsList.getReferencedTypes()[1].getCanonicalText());
Assert.assertEquals(2, extendsList.getReferenceNames().length);
Assert.assertEquals("my.pkg.iface", extendsList.getReferenceNames()[0]);
Assert.assertEquals("my.pkg.iface2", extendsList.getReferenceNames()[1]);
Assert.assertEquals(2, smaliClass.getExtendsListTypes().length);
Assert.assertEquals("my.pkg.iface", smaliClass.getExtendsListTypes()[0].getCanonicalText());
Assert.assertEquals("my.pkg.iface2", smaliClass.getExtendsListTypes()[1].getCanonicalText());
PsiClass resolvedInterface = extendsList.getReferencedTypes()[0].resolve();
Assert.assertNotNull(resolvedInterface);
Assert.assertEquals("my.pkg.iface", resolvedInterface.getQualifiedName());
resolvedInterface = extendsList.getReferencedTypes()[1].resolve();
Assert.assertNotNull(resolvedInterface);
Assert.assertEquals("my.pkg.iface2", resolvedInterface.getQualifiedName());
SmaliImplementsList implementsList = smaliClass.getImplementsList();
Assert.assertEquals(0, implementsList.getReferencedTypes().length);
Assert.assertEquals(0, implementsList.getReferenceNames().length);
Assert.assertEquals(0, smaliClass.getImplementsListTypes().length);
}
use of org.jf.smalidea.psi.impl.SmaliFile in project smali by JesusFreke.
the class SmaliInstructionTest method testMultipleInstructions.
public void testMultipleInstructions() {
String text = ".class public Lmy/pkg/blah; .super Ljava/lang/Object;\n" + ".method blah(IJLjava/lang/String;)I\n" + " .locals 1\n" + " const v0, 1234\n" + " r<ref>eturn v0\n" + ".end method";
SmaliFile file = (SmaliFile) myFixture.addFileToProject("my/pkg/blah.smali", text.replace("<ref>", ""));
PsiElement leafElement = file.findElementAt(text.indexOf("<ref>"));
Assert.assertNotNull(leafElement);
SmaliInstruction instructionElement = (SmaliInstruction) leafElement.getParent();
Assert.assertNotNull(instructionElement);
Assert.assertEquals(Opcode.RETURN, instructionElement.getOpcode());
Assert.assertEquals(6, instructionElement.getOffset());
}
use of org.jf.smalidea.psi.impl.SmaliFile in project smali by JesusFreke.
the class SmaliLiteralTest method doTest.
private void doTest(long expectedValue, String literalValue) {
String text = ".class public Lmy/pkg/blah; .super Ljava/lang/Object;\n" + ".method blah()V\n" + " .registers <ref>" + literalValue + "\n" + " return-void\n" + ".end method";
SmaliFile file = (SmaliFile) myFixture.addFileToProject("my/pkg/blah.smali", text.replace("<ref>", ""));
PsiElement leafElement = file.findElementAt(text.indexOf("<ref>"));
Assert.assertNotNull(leafElement);
SmaliLiteral literalElement = (SmaliLiteral) leafElement.getParent();
Assert.assertNotNull(literalElement);
Assert.assertEquals(expectedValue, literalElement.getIntegralValue());
}
Aggregations