aboutsummaryrefslogtreecommitdiff
path: root/smalidea/src/test/java/org/jf/smalidea/findUsages/ClassUsageTypeTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'smalidea/src/test/java/org/jf/smalidea/findUsages/ClassUsageTypeTest.java')
-rw-r--r--smalidea/src/test/java/org/jf/smalidea/findUsages/ClassUsageTypeTest.java74
1 files changed, 74 insertions, 0 deletions
diff --git a/smalidea/src/test/java/org/jf/smalidea/findUsages/ClassUsageTypeTest.java b/smalidea/src/test/java/org/jf/smalidea/findUsages/ClassUsageTypeTest.java
new file mode 100644
index 00000000..18a61941
--- /dev/null
+++ b/smalidea/src/test/java/org/jf/smalidea/findUsages/ClassUsageTypeTest.java
@@ -0,0 +1,74 @@
+package org.jf.smalidea.findUsages;
+
+import com.intellij.usages.impl.rules.UsageType;
+
+public class ClassUsageTypeTest extends UsageTypeTest {
+ public ClassUsageTypeTest() {
+ super(new SmaliUsageTypeProvider());
+ }
+
+ public void testClassUsageTypes() throws Exception {
+ doTest("blah.smali", "" +
+ ".class public Lbl<ref:1>ah;\n" +
+ ".super Lbl<ref:2>ah;\n" +
+ ".implements Lbl<ref:3>ah;\n" +
+ "\n" +
+ ".annotation build Lbl<ref:22>ah;\n" +
+ " value = .subannotation Lbl<ref:23>ah;\n" +
+ " value = Lbl<ref:24>ah;\n" +
+ " .end subannotation\n" +
+ ".end annotation\n" +
+ "\n" +
+ ".field static public blah:Lbl<ref:4>ah; = Lbl<ref:25>ah;\n" +
+ "\n" +
+ ".method public blah(Lbl<ref:5>ah;)Lbl<ref:6>ah;\n" +
+ " .registers 2\n" +
+ " .local p0, \"this\":Lbl<ref:7>ah;\n" +
+ "\n" +
+ " :start\n" +
+ " iget-object v0, v0, Lbl<ref:8>ah;->blah:Lbl<ref:9>ah;\n" +
+ "\n" +
+ " invoke-virtual {v0}, Lbl<ref:10>ah;->blah(Lbl<ref:11>ah;)Lbl<ref:12>ah;\n" +
+ "\n" +
+ " instance-of v0, v0, Lbl<ref:13>ah;\n" +
+ " check-cast v0, Lbl<ref:14>ah;\n" +
+ " new-instance v0, Lbl<ref:15>ah;\n" +
+ " const-class v0, Lbl<ref:16>ah;\n" +
+ " throw-verification-error generic-error, Lbl<ref:17>ah;\n" +
+ "\n" +
+ " filled-new-array {v0, v0, v0, v0, v0}, Lbl<ref:18>ah;\n" +
+ " new-array v0, v0, Lbl<ref:19>ah;\n" +
+ " filled-new-array/range {v0}, Lbl<ref:20>ah;\n" +
+ " :end\n" +
+ "\n" +
+ " .catch Lbl<ref:21>ah; { :start .. :end } :handler\n" +
+ " :handler\n" +
+ " return-void\n" +
+ ".end method",
+ 1, SmaliUsageTypeProvider.CLASS_DECLARATION,
+ 2, UsageType.CLASS_EXTENDS_IMPLEMENTS_LIST,
+ 3, UsageType.CLASS_EXTENDS_IMPLEMENTS_LIST,
+ 4, UsageType.CLASS_FIELD_DECLARATION,
+ 5, UsageType.CLASS_METHOD_PARAMETER_DECLARATION,
+ 6, UsageType.CLASS_METHOD_RETURN_TYPE,
+ 7, UsageType.CLASS_LOCAL_VAR_DECLARATION,
+ 8, SmaliUsageTypeProvider.FIELD_DECLARING_TYPE_REFERENCE,
+ 9, SmaliUsageTypeProvider.FIELD_TYPE_REFERENCE,
+ 10, SmaliUsageTypeProvider.METHOD_DECLARING_TYPE_REFERENCE,
+ 11, SmaliUsageTypeProvider.METHOD_PARAM_REFERENCE,
+ 12, SmaliUsageTypeProvider.METHOD_RETURN_TYPE_REFERENCE,
+ 13, UsageType.CLASS_INSTANCE_OF,
+ 14, UsageType.CLASS_CAST_TO,
+ 15, UsageType.CLASS_NEW_OPERATOR,
+ 16, UsageType.CLASS_CLASS_OBJECT_ACCESS,
+ 17, SmaliUsageTypeProvider.VERIFICATION_ERROR,
+ 18, UsageType.CLASS_NEW_ARRAY,
+ 19, UsageType.CLASS_NEW_ARRAY,
+ 20, UsageType.CLASS_NEW_ARRAY,
+ 21, UsageType.CLASS_CATCH_CLAUSE_PARAMETER_DECLARATION,
+ 22, UsageType.ANNOTATION,
+ 23, UsageType.ANNOTATION,
+ 24, SmaliUsageTypeProvider.LITERAL,
+ 25, SmaliUsageTypeProvider.LITERAL);
+ }
+}