aboutsummaryrefslogtreecommitdiff
path: root/smali-integration-tests
diff options
context:
space:
mode:
authorJesusFreke@JesusFreke.com <JesusFreke@JesusFreke.com@55b6fa8a-2a1e-11de-a435-ffa8d773f76a>2010-04-17 07:02:43 +0000
committerJesusFreke@JesusFreke.com <JesusFreke@JesusFreke.com@55b6fa8a-2a1e-11de-a435-ffa8d773f76a>2010-04-17 07:02:43 +0000
commitf2370e3a2ecf8f84e72b0b6a3eed56cf118a76fe (patch)
tree2fe379ef7c736deecfd536ecfe4e30025ec9fa5f /smali-integration-tests
parentec643e65207ac61c164be5989173f0076211611d (diff)
downloadsmali-f2370e3a2ecf8f84e72b0b6a3eed56cf118a76fe.tar.gz
Add tests for the various types of annotations
git-svn-id: https://smali.googlecode.com/svn/trunk@713 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
Diffstat (limited to 'smali-integration-tests')
-rw-r--r--smali-integration-tests/src/test/smali/junit-tests/AnnotationTests/AnnotationTests.smali162
-rw-r--r--smali-integration-tests/src/test/smali/junit-tests/AnnotationTests/TestAnnotationClass.smali12
-rw-r--r--smali-integration-tests/src/test/smali/junit-tests/TestSuite.smali3
3 files changed, 176 insertions, 1 deletions
diff --git a/smali-integration-tests/src/test/smali/junit-tests/AnnotationTests/AnnotationTests.smali b/smali-integration-tests/src/test/smali/junit-tests/AnnotationTests/AnnotationTests.smali
new file mode 100644
index 00000000..80e66438
--- /dev/null
+++ b/smali-integration-tests/src/test/smali/junit-tests/AnnotationTests/AnnotationTests.smali
@@ -0,0 +1,162 @@
+.class public LAnnotationTests;
+.super Ljava/lang/Object;
+.source "AnnotationTests.smali"
+
+.method public constructor <init>()V
+ .registers 1
+ invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+ return-void
+.end method
+
+.annotation runtime LTestAnnotationClass;
+ stringValue = "Class Annotation Test"
+.end annotation
+
+
+.field public testField:I
+ .annotation runtime LTestAnnotationClass;
+ stringValue = "Field Annotation Test"
+ .end annotation
+.end field
+
+.method public testClassAnnotation()V
+ .registers 2
+
+ .annotation runtime Lorg/junit/Test;
+ .end annotation
+
+ const-class v0, LAnnotationTests;
+ const-class v1, LTestAnnotationClass;
+
+ invoke-virtual {v0, v1}, Ljava/lang/Class;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
+ move-result-object v0
+
+ check-cast v0, LTestAnnotationClass;
+
+ invoke-interface {v0}, LTestAnnotationClass;->stringValue()Ljava/lang/String;
+ move-result-object v0
+
+ const-string v1, "Class Annotation Test"
+
+ invoke-static {v0, v1}, Lorg/junit/Assert;->assertEquals(Ljava/lang/Object;Ljava/lang/Object;)V
+
+ return-void
+.end method
+
+.method public testFieldAnnotation()V
+ .registers 4
+
+ .annotation runtime Lorg/junit/Test;
+ .end annotation
+
+ const-class v0, LAnnotationTests;
+ const-class v1, LTestAnnotationClass;
+ const-string v2, "testField"
+
+ invoke-virtual {v0, v2}, Ljava/lang/Class;->getField(Ljava/lang/String;)Ljava/lang/reflect/Field;
+ move-result-object v3
+
+ invoke-virtual {v3, v1}, Ljava/lang/reflect/Field;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
+ move-result-object v0
+
+ check-cast v0, LTestAnnotationClass;
+
+ invoke-interface {v0}, LTestAnnotationClass;->stringValue()Ljava/lang/String;
+ move-result-object v0
+
+ const-string v1, "Field Annotation Test"
+
+ invoke-static {v0, v1}, Lorg/junit/Assert;->assertEquals(Ljava/lang/Object;Ljava/lang/Object;)V
+
+ return-void
+.end method
+
+.method public testMethodAnnotation()V
+ .registers 4
+
+ .annotation runtime Lorg/junit/Test;
+ .end annotation
+
+ .annotation runtime LTestAnnotationClass;
+ stringValue = "Method Annotation Test"
+ .end annotation
+
+
+ const-class v0, LAnnotationTests;
+ const-class v1, LTestAnnotationClass;
+ const-string v2, "testMethodAnnotation"
+
+ const v3, 0
+ new-array v3, v3, [Ljava/lang/Class;
+
+ invoke-virtual {v0, v2, v3}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
+ move-result-object v3
+
+ invoke-virtual {v3, v1}, Ljava/lang/reflect/Method;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
+ move-result-object v0
+
+ check-cast v0, LTestAnnotationClass;
+
+ invoke-interface {v0}, LTestAnnotationClass;->stringValue()Ljava/lang/String;
+ move-result-object v0
+
+ const-string v1, "Method Annotation Test"
+
+ invoke-static {v0, v1}, Lorg/junit/Assert;->assertEquals(Ljava/lang/Object;Ljava/lang/Object;)V
+
+ return-void
+.end method
+
+.method public testMethodWithParameterAnnotation(Ljava/lang/String;)V
+ .registers 2
+
+ .parameter "test"
+ .annotation runtime LTestAnnotationClass;
+ stringValue = "Parameter Annotation Test"
+ .end annotation
+ .end parameter
+
+ return-void
+.end method
+
+.method public testParameterAnnotation()V
+ .registers 6
+
+ .annotation runtime Lorg/junit/Test;
+ .end annotation
+
+ const-class v0, LAnnotationTests;
+ const-class v1, LTestAnnotationClass;
+ const-string v2, "testMethodWithParameterAnnotation"
+
+ const v3, 1
+ new-array v3, v3, [Ljava/lang/Class;
+
+ const v4, 0
+
+ const-class v5, Ljava/lang/String;
+
+ aput-object v5, v3, v4
+
+ invoke-virtual {v0, v2, v3}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
+ move-result-object v3
+
+ invoke-virtual {v3}, Ljava/lang/reflect/Method;->getParameterAnnotations()[[Ljava/lang/annotation/Annotation;
+ move-result-object v0
+
+ const v1, 0
+
+ aget-object v2, v0, v1
+ aget-object v0, v2, v1
+
+ check-cast v0, LTestAnnotationClass;
+
+ invoke-interface {v0}, LTestAnnotationClass;->stringValue()Ljava/lang/String;
+ move-result-object v0
+
+ const-string v1, "Parameter Annotation Test"
+
+ invoke-static {v0, v1}, Lorg/junit/Assert;->assertEquals(Ljava/lang/Object;Ljava/lang/Object;)V
+
+ return-void
+.end method \ No newline at end of file
diff --git a/smali-integration-tests/src/test/smali/junit-tests/AnnotationTests/TestAnnotationClass.smali b/smali-integration-tests/src/test/smali/junit-tests/AnnotationTests/TestAnnotationClass.smali
new file mode 100644
index 00000000..eb2b2456
--- /dev/null
+++ b/smali-integration-tests/src/test/smali/junit-tests/AnnotationTests/TestAnnotationClass.smali
@@ -0,0 +1,12 @@
+.class public abstract interface annotation LTestAnnotationClass;
+.super Ljava/lang/Object;
+.implements Ljava/lang/annotation/Annotation;
+
+.method public abstract stringValue()Ljava/lang/String;
+.end method
+
+.annotation system Ldalvik/annotation/AnnotationDefault;
+ value = .subannotation LAnnotationWithValues;
+ stringValue = "Test Annotation String Value"
+ .end subannotation
+.end annotation \ No newline at end of file
diff --git a/smali-integration-tests/src/test/smali/junit-tests/TestSuite.smali b/smali-integration-tests/src/test/smali/junit-tests/TestSuite.smali
index 057bc0e7..b1ad5785 100644
--- a/smali-integration-tests/src/test/smali/junit-tests/TestSuite.smali
+++ b/smali-integration-tests/src/test/smali/junit-tests/TestSuite.smali
@@ -48,6 +48,7 @@
LFormat35c;,
LFormat3rc;,
LFormat51l;,
- LGotoTest;
+ LGotoTest;,
+ LAnnotationTests;
}
.end annotation \ No newline at end of file