use of org.jf.smalidea.psi.impl.SmaliInstruction in project smali by JesusFreke.
the class SmaliInstructionTest method testSingleInstruction.
public void testSingleInstruction() {
String text = ".class public Lmy/pkg/blah; .super Ljava/lang/Object;\n" + ".method blah(IJLjava/lang/String;)V\n" + " .locals 0\n" + " r<ref>eturn-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);
SmaliInstruction instructionElement = (SmaliInstruction) leafElement.getParent();
Assert.assertNotNull(instructionElement);
Assert.assertEquals(Opcode.RETURN_VOID, instructionElement.getOpcode());
Assert.assertEquals(0, instructionElement.getOffset());
}
use of org.jf.smalidea.psi.impl.SmaliInstruction in project smali by JesusFreke.
the class SmaliLabelReferenceTest method testLabelReference.
public void testLabelReference() throws Exception {
String text = ".class public Lmy/pkg/blah; .super Ljava/lang/Object;\n" + ".method public getRandomParentType(I)I\n" + " .registers 4\n" + " .param p1, \"edge\" # I\n" + "\n" + " .prologue\n" + " const/4 v1, 0x2\n" + "\n" + " .line 179\n" + " if-nez p1, :cond_5\n" + "\n" + " move v0, v1\n" + "\n" + " .line 185\n" + " :goto_4\n" + " return v0\n" + "\n" + " .line 182\n" + " :cond_5\n" + " if-ne p1, v1, :cond_f\n" + "\n" + " .line 183\n" + " sget-object v0, Lorg/jf/Penroser/PenroserApp;->random:Ljava/util/Random;\n" + "\n" + " const/4 v1, 0x3\n" + "\n" + " invoke-virtual {v0, v1}, Ljava/util/Random;->nextInt(I)I\n" + "\n" + " move-result v0\n" + "\n" + " goto :goto_4\n" + "\n" + " .line 185\n" + " :cond_f\n" + " sget-object v0, Lorg/jf/Penroser/PenroserApp;->random:Ljava/util/Random;\n" + "\n" + " invoke-virtual {v0, v1}, Ljava/util/Random;->nextInt(I)I\n" + "\n" + " move-result v0\n" + "\n" + " goto :go<ref>to_4\n" + ".end method";
;
SmaliLabelReference labelReference = (SmaliLabelReference) configureByFileText(text, "blah.smali");
Assert.assertNotNull(labelReference);
Assert.assertEquals("goto_4", labelReference.getName());
SmaliLabel resolvedLabel = labelReference.resolve();
Assert.assertNotNull(resolvedLabel);
Assert.assertEquals("goto_4", resolvedLabel.getName());
SmaliInstruction nextInstruction = resolvedLabel.findNextSiblingByClass(SmaliInstruction.class);
Assert.assertNotNull(nextInstruction);
Assert.assertEquals(8, nextInstruction.getOffset());
Assert.assertEquals(Opcode.RETURN, nextInstruction.getOpcode());
}
Aggregations