diff options
| author | jeffhao <jeffhao@google.com> | 2011-09-29 17:41:15 -0700 |
|---|---|---|
| committer | jeffhao <jeffhao@google.com> | 2011-09-29 17:41:15 -0700 |
| commit | 5d1ac920fdaef5d4ec8f66bb734488cd9660b024 (patch) | |
| tree | dd372f306ab70f4c86759869b1f74eca62ff6f2b /test/004-annotations/src | |
| parent | c31664f3d82e6cd68275a529a8a73f067a52e8be (diff) | |
| download | art-5d1ac920fdaef5d4ec8f66bb734488cd9660b024.tar.gz art-5d1ac920fdaef5d4ec8f66bb734488cd9660b024.tar.bz2 art-5d1ac920fdaef5d4ec8f66bb734488cd9660b024.zip | |
Adding old unit tests to test suite.
These tests are copied straight over. They'll still run, but they're
using the old system.
Change-Id: If494519e52ddf858a9febfc55bdae830468cb3c8
Diffstat (limited to 'test/004-annotations/src')
25 files changed, 451 insertions, 0 deletions
diff --git a/test/004-annotations/src/Main.java b/test/004-annotations/src/Main.java new file mode 100644 index 0000000000..e44722fc42 --- /dev/null +++ b/test/004-annotations/src/Main.java @@ -0,0 +1,7 @@ +import android.test.anno.TestAnnotations; + +public class Main { + static public void main(String[] args) { + TestAnnotations.main(args); + } +} diff --git a/test/004-annotations/src/android/test/anno/AnnoArrayField.java b/test/004-annotations/src/android/test/anno/AnnoArrayField.java new file mode 100644 index 0000000000..681045c36c --- /dev/null +++ b/test/004-annotations/src/android/test/anno/AnnoArrayField.java @@ -0,0 +1,19 @@ +package android.test.anno; + +import java.lang.annotation.*; + +@Documented +@Inherited +@Target({ElementType.FIELD}) +@Retention(RetentionPolicy.RUNTIME) +public @interface AnnoArrayField { + boolean[] zz() default {}; + byte[] bb() default {}; + char[] cc() default {'a', 'b'}; + short[] ss() default {}; + int[] ii() default {}; + float[] ff() default {3.141592654f}; + long[] jj() default {}; + double[] dd() default {0.987654321}; + String[] str() default {}; +} diff --git a/test/004-annotations/src/android/test/anno/AnnoFancyConstructor.java b/test/004-annotations/src/android/test/anno/AnnoFancyConstructor.java new file mode 100644 index 0000000000..19dadecc95 --- /dev/null +++ b/test/004-annotations/src/android/test/anno/AnnoFancyConstructor.java @@ -0,0 +1,10 @@ +package android.test.anno; + +import java.lang.annotation.*; + +@Target(ElementType.CONSTRUCTOR) +@Retention(RetentionPolicy.RUNTIME) + +public @interface AnnoFancyConstructor { + public int numArgs() default 0; +} diff --git a/test/004-annotations/src/android/test/anno/AnnoFancyField.java b/test/004-annotations/src/android/test/anno/AnnoFancyField.java new file mode 100644 index 0000000000..855ba56146 --- /dev/null +++ b/test/004-annotations/src/android/test/anno/AnnoFancyField.java @@ -0,0 +1,12 @@ +package android.test.anno; + +import java.lang.annotation.*; + +@Target(ElementType.FIELD) +@Retention(RetentionPolicy.RUNTIME) +@Inherited // should have no effect +@Documented + +public @interface AnnoFancyField { + public String nombre() default "no se"; +} diff --git a/test/004-annotations/src/android/test/anno/AnnoFancyMethod.java b/test/004-annotations/src/android/test/anno/AnnoFancyMethod.java new file mode 100644 index 0000000000..3088866647 --- /dev/null +++ b/test/004-annotations/src/android/test/anno/AnnoFancyMethod.java @@ -0,0 +1,14 @@ +package android.test.anno; + +import java.lang.annotation.*; + +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) + +public @interface AnnoFancyMethod { + enum AnnoFancyMethodEnum { FOO, BAR }; + boolean callMe() default false; + boolean biteMe(); + AnnoFancyMethodEnum enumerated() default AnnoFancyMethodEnum.FOO; + Class someClass() default SomeClass.class; +} diff --git a/test/004-annotations/src/android/test/anno/AnnoFancyParameter.java b/test/004-annotations/src/android/test/anno/AnnoFancyParameter.java new file mode 100644 index 0000000000..bc2ba7c293 --- /dev/null +++ b/test/004-annotations/src/android/test/anno/AnnoFancyParameter.java @@ -0,0 +1,10 @@ +package android.test.anno; + +import java.lang.annotation.*; + +@Target(ElementType.PARAMETER) +@Retention(RetentionPolicy.RUNTIME) + +public @interface AnnoFancyParameter { + double factor(); +} diff --git a/test/004-annotations/src/android/test/anno/AnnoFancyType.java b/test/004-annotations/src/android/test/anno/AnnoFancyType.java new file mode 100644 index 0000000000..745f8386ad --- /dev/null +++ b/test/004-annotations/src/android/test/anno/AnnoFancyType.java @@ -0,0 +1,11 @@ +package android.test.anno; + +import java.lang.annotation.*; + +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) + +public @interface AnnoFancyType { + public int num(); + public String name() default "unknown"; +} diff --git a/test/004-annotations/src/android/test/anno/AnnoSimpleConstructor.java b/test/004-annotations/src/android/test/anno/AnnoSimpleConstructor.java new file mode 100644 index 0000000000..d66b9aef29 --- /dev/null +++ b/test/004-annotations/src/android/test/anno/AnnoSimpleConstructor.java @@ -0,0 +1,8 @@ +package android.test.anno; + +import java.lang.annotation.*; + +@Target(ElementType.CONSTRUCTOR) +@Retention(RetentionPolicy.RUNTIME) + +public @interface AnnoSimpleConstructor {} diff --git a/test/004-annotations/src/android/test/anno/AnnoSimpleField.java b/test/004-annotations/src/android/test/anno/AnnoSimpleField.java new file mode 100644 index 0000000000..04193d227c --- /dev/null +++ b/test/004-annotations/src/android/test/anno/AnnoSimpleField.java @@ -0,0 +1,8 @@ +package android.test.anno; + +import java.lang.annotation.*; + +@Target(ElementType.FIELD) +@Retention(RetentionPolicy.RUNTIME) + +public @interface AnnoSimpleField {} diff --git a/test/004-annotations/src/android/test/anno/AnnoSimpleLocalVariable.java b/test/004-annotations/src/android/test/anno/AnnoSimpleLocalVariable.java new file mode 100644 index 0000000000..a839fa22dd --- /dev/null +++ b/test/004-annotations/src/android/test/anno/AnnoSimpleLocalVariable.java @@ -0,0 +1,8 @@ +package android.test.anno; + +import java.lang.annotation.*; + +@Target(ElementType.LOCAL_VARIABLE) +@Retention(RetentionPolicy.RUNTIME) + +public @interface AnnoSimpleLocalVariable {} diff --git a/test/004-annotations/src/android/test/anno/AnnoSimpleMethod.java b/test/004-annotations/src/android/test/anno/AnnoSimpleMethod.java new file mode 100644 index 0000000000..fcd9c0f5f2 --- /dev/null +++ b/test/004-annotations/src/android/test/anno/AnnoSimpleMethod.java @@ -0,0 +1,8 @@ +package android.test.anno; + +import java.lang.annotation.*; + +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) + +public @interface AnnoSimpleMethod {} diff --git a/test/004-annotations/src/android/test/anno/AnnoSimplePackage.java b/test/004-annotations/src/android/test/anno/AnnoSimplePackage.java new file mode 100644 index 0000000000..4aadfe7bfb --- /dev/null +++ b/test/004-annotations/src/android/test/anno/AnnoSimplePackage.java @@ -0,0 +1,8 @@ +package android.test.anno; + +import java.lang.annotation.*; + +@Target(ElementType.PACKAGE) +@Retention(RetentionPolicy.RUNTIME) + +public @interface AnnoSimplePackage {} diff --git a/test/004-annotations/src/android/test/anno/AnnoSimpleParameter.java b/test/004-annotations/src/android/test/anno/AnnoSimpleParameter.java new file mode 100644 index 0000000000..6e26ca3a49 --- /dev/null +++ b/test/004-annotations/src/android/test/anno/AnnoSimpleParameter.java @@ -0,0 +1,8 @@ +package android.test.anno; + +import java.lang.annotation.*; + +@Target(ElementType.PARAMETER) +@Retention(RetentionPolicy.RUNTIME) + +public @interface AnnoSimpleParameter {} diff --git a/test/004-annotations/src/android/test/anno/AnnoSimpleType.java b/test/004-annotations/src/android/test/anno/AnnoSimpleType.java new file mode 100644 index 0000000000..3bba3dbfbf --- /dev/null +++ b/test/004-annotations/src/android/test/anno/AnnoSimpleType.java @@ -0,0 +1,9 @@ +package android.test.anno; + +import java.lang.annotation.*; + +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +@Inherited +@Documented +public @interface AnnoSimpleType {} diff --git a/test/004-annotations/src/android/test/anno/AnnoSimpleType2.java b/test/004-annotations/src/android/test/anno/AnnoSimpleType2.java new file mode 100644 index 0000000000..f74b291193 --- /dev/null +++ b/test/004-annotations/src/android/test/anno/AnnoSimpleType2.java @@ -0,0 +1,8 @@ +package android.test.anno; + +import java.lang.annotation.*; + +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +@Inherited +public @interface AnnoSimpleType2 {} diff --git a/test/004-annotations/src/android/test/anno/AnnoSimpleTypeInvis.java b/test/004-annotations/src/android/test/anno/AnnoSimpleTypeInvis.java new file mode 100644 index 0000000000..541d82eedb --- /dev/null +++ b/test/004-annotations/src/android/test/anno/AnnoSimpleTypeInvis.java @@ -0,0 +1,8 @@ +package android.test.anno; + +import java.lang.annotation.*; + +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.CLASS) + +public @interface AnnoSimpleTypeInvis {} diff --git a/test/004-annotations/src/android/test/anno/ExportedProperty.java b/test/004-annotations/src/android/test/anno/ExportedProperty.java new file mode 100644 index 0000000000..810d28f8fd --- /dev/null +++ b/test/004-annotations/src/android/test/anno/ExportedProperty.java @@ -0,0 +1,12 @@ +/* part of test for array problem */ +package android.test.anno; + +import java.lang.annotation.*; + +@Target({ ElementType.FIELD, ElementType.METHOD }) +@Retention(RetentionPolicy.RUNTIME) + +public @interface ExportedProperty { + boolean resolveId() default false; + IntToString[] mapping() default { @IntToString(from = -1, to = "-1") }; +} diff --git a/test/004-annotations/src/android/test/anno/FullyNoted.java b/test/004-annotations/src/android/test/anno/FullyNoted.java new file mode 100644 index 0000000000..76a7b0411d --- /dev/null +++ b/test/004-annotations/src/android/test/anno/FullyNoted.java @@ -0,0 +1,39 @@ + +package android.test.anno; + +import java.io.IOException; +import java.io.EOFException; + +@AnnoFancyType(num=5, name="full") +public class FullyNoted { + @AnnoFancyField(nombre="fubar") + int mBar; + + @AnnoFancyConstructor(numArgs=1) + FullyNoted(@AnnoFancyParameter(factor=0.5) int bar) + { + mBar = bar; + } + + @AnnoFancyMethod(callMe=true, biteMe=false) + public int bar( + @AnnoSimpleParameter int one, + @AnnoFancyParameter(factor=3.7879912899761) long two) + throws IOException, EOFException { + + return 0; + } + + @AnnoFancyMethod(biteMe=true, enumerated=AnnoFancyMethod.AnnoFancyMethodEnum.BAR) + public int bar1( + @AnnoSimpleParameter int one, + @AnnoFancyParameter(factor=3.7879912899761) long two) + throws IOException { + + return 0; + } + + public int notAnnotated() { + return 0; + } +} diff --git a/test/004-annotations/src/android/test/anno/INoted.java b/test/004-annotations/src/android/test/anno/INoted.java new file mode 100644 index 0000000000..b2cd007d94 --- /dev/null +++ b/test/004-annotations/src/android/test/anno/INoted.java @@ -0,0 +1,7 @@ +package android.test.anno; + +@AnnoSimpleType2 +public interface INoted { + @AnnoSimpleMethod + public int bar(); +} diff --git a/test/004-annotations/src/android/test/anno/IntToString.java b/test/004-annotations/src/android/test/anno/IntToString.java new file mode 100644 index 0000000000..e84fcfa3aa --- /dev/null +++ b/test/004-annotations/src/android/test/anno/IntToString.java @@ -0,0 +1,12 @@ +/* part of test for array problem */ +package android.test.anno; + +import java.lang.annotation.*; + +@Target({ ElementType.TYPE }) +@Retention(RetentionPolicy.RUNTIME) + +public @interface IntToString { + int from(); + String to(); +} diff --git a/test/004-annotations/src/android/test/anno/SimplyNoted.java b/test/004-annotations/src/android/test/anno/SimplyNoted.java new file mode 100644 index 0000000000..95a3d249a6 --- /dev/null +++ b/test/004-annotations/src/android/test/anno/SimplyNoted.java @@ -0,0 +1,30 @@ +package android.test.anno; + +@AnnoSimpleType +@AnnoSimpleType2 +@AnnoSimpleTypeInvis +public class SimplyNoted { + @AnnoSimpleField + public int mFoo; + + @AnnoSimpleField + public static int mOneFoo; + + @AnnoSimpleConstructor + SimplyNoted() { + mFoo = 0; + } + + @AnnoSimpleConstructor + SimplyNoted(@AnnoSimpleParameter int xyzzy) { + mFoo = xyzzy; + } + + @AnnoSimpleMethod + public int foo() { + @AnnoSimpleLocalVariable + int bar = 5; + + return bar; + } +} diff --git a/test/004-annotations/src/android/test/anno/SomeClass.java b/test/004-annotations/src/android/test/anno/SomeClass.java new file mode 100644 index 0000000000..c21d68dc5f --- /dev/null +++ b/test/004-annotations/src/android/test/anno/SomeClass.java @@ -0,0 +1,4 @@ +package android.test.anno; + +public class SomeClass { +} diff --git a/test/004-annotations/src/android/test/anno/SubNoted.java b/test/004-annotations/src/android/test/anno/SubNoted.java new file mode 100644 index 0000000000..2530346dcd --- /dev/null +++ b/test/004-annotations/src/android/test/anno/SubNoted.java @@ -0,0 +1,12 @@ +package android.test.anno; + +@AnnoFancyType(num=5) // first occurrence of AnnoFancyType + // we inherit @AnnoSimpleType +@AnnoSimpleType2 // AnnoSimpleType2 here *and* inherited from parent +public class SubNoted extends SimplyNoted implements INoted { + int mBar; + + public int bar() { + return 0; + } +} diff --git a/test/004-annotations/src/android/test/anno/TestAnnotations.java b/test/004-annotations/src/android/test/anno/TestAnnotations.java new file mode 100644 index 0000000000..4ad32d58ac --- /dev/null +++ b/test/004-annotations/src/android/test/anno/TestAnnotations.java @@ -0,0 +1,177 @@ +package android.test.anno; + +import java.lang.annotation.Annotation; +import java.lang.reflect.Constructor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.TreeMap; + +public class TestAnnotations { + /** + * Print the annotations in sorted order, so as to avoid + * any (legitimate) non-determinism with regard to the iteration order. + */ + static private void printAnnotationArray(String prefix, Annotation[] arr) { + TreeMap<String, Annotation> sorted = + new TreeMap<String, Annotation>(); + + for (Annotation a : arr) { + sorted.put(a.annotationType().getName(), a); + } + + for (Annotation a : sorted.values()) { + System.out.println(prefix + " " + a); + System.out.println(prefix + " " + a.annotationType()); + } + } + + static void printAnnotations(Class clazz) { + Annotation[] annos; + Annotation[][] parAnnos; + + annos = clazz.getAnnotations(); + System.out.println("annotations on TYPE " + clazz + + "(" + annos.length + "):"); + printAnnotationArray("", annos); + System.out.println(); + + for (Constructor c: clazz.getDeclaredConstructors()) { + annos = c.getDeclaredAnnotations(); + System.out.println(" annotations on CTOR " + c + ":"); + printAnnotationArray(" ", annos); + + System.out.println(" constructor parameter annotations:"); + for (Annotation[] pannos: c.getParameterAnnotations()) { + printAnnotationArray(" ", pannos); + } + } + + for (Method m: clazz.getDeclaredMethods()) { + annos = m.getDeclaredAnnotations(); + System.out.println(" annotations on METH " + m + ":"); + printAnnotationArray(" ", annos); + + System.out.println(" method parameter annotations:"); + for (Annotation[] pannos: m.getParameterAnnotations()) { + printAnnotationArray(" ", pannos); + } + } + + for (Field f: clazz.getDeclaredFields()) { + annos = f.getDeclaredAnnotations(); + System.out.println(" annotations on FIELD " + f + ":"); + printAnnotationArray(" ", annos); + + AnnoFancyField aff; + aff = (AnnoFancyField) f.getAnnotation(AnnoFancyField.class); + if (aff != null) { + System.out.println(" aff: " + aff + " / " + aff.getClass()); + System.out.println(" --> nombre is '" + aff.nombre() + "'"); + } + } + System.out.println(); + } + + + @ExportedProperty(mapping = { + @IntToString(from = 0, to = "NORMAL_FOCUS"), + @IntToString(from = 2, to = "WEAK_FOCUS") + }) + public int getFocusType() { + return 2; + } + + + @AnnoArrayField + String thing1; + + @AnnoArrayField( + zz = {true,false,true}, + bb = {-1,0,1}, + cc = {'Q'}, + ss = {12,13,14,15,16,17}, + ii = {1,2,3,4}, + ff = {1.1f,1.2f,1.3f}, + jj = {-5,0,5}, + dd = {0.3,0.6,0.9}, + str = {"hickory","dickory","dock"} + ) + String thing2; + + public static void testArrays() { + TestAnnotations ta = new TestAnnotations(); + Field field; + Annotation[] annotations; + + try { + field = TestAnnotations.class.getDeclaredField("thing1"); + annotations = field.getAnnotations(); + System.out.println(field + ": " + annotations[0].toString()); + + field = TestAnnotations.class.getDeclaredField("thing2"); + annotations = field.getAnnotations(); + System.out.println(field + ": " + annotations[0].toString()); + } catch (NoSuchFieldException nsfe) { + throw new RuntimeException(nsfe); + } + } + + public static void testArrayProblem() { + Method meth; + ExportedProperty property; + final IntToString[] mapping; + + try { + meth = TestAnnotations.class.getMethod("getFocusType", + (Class[])null); + } catch (NoSuchMethodException nsme) { + throw new RuntimeException(nsme); + } + property = meth.getAnnotation(ExportedProperty.class); + mapping = property.mapping(); + + System.out.println("mapping is " + mapping.getClass() + + "\n 0='" + mapping[0] + "'\n 1='" + mapping[1] + "'"); + + /* while we're here, check isAnnotationPresent on Method */ + System.out.println("present(getFocusType, ExportedProperty): " + + meth.isAnnotationPresent(ExportedProperty.class)); + System.out.println("present(getFocusType, AnnoSimpleType): " + + meth.isAnnotationPresent(AnnoSimpleType.class)); + + System.out.println(""); + } + + + + public static void main(String[] args) { + System.out.println("TestAnnotations..."); + + testArrays(); + testArrayProblem(); + //System.exit(0); + + System.out.println( + "AnnoSimpleField " + AnnoSimpleField.class.isAnnotation() + + ", SimplyNoted " + SimplyNoted.class.isAnnotation()); + + Class clazz; + clazz = SimplyNoted.class; + printAnnotations(clazz); + clazz = INoted.class; + printAnnotations(clazz); + clazz = SubNoted.class; + printAnnotations(clazz); + clazz = FullyNoted.class; + printAnnotations(clazz); + + Annotation anno; + + // this is expected to be non-null + anno = SimplyNoted.class.getAnnotation(AnnoSimpleType.class); + System.out.println("SimplyNoted.get(AnnoSimpleType) = " + anno); + // this is non-null if the @Inherited tag is present + anno = SubNoted.class.getAnnotation(AnnoSimpleType.class); + System.out.println("SubNoted.get(AnnoSimpleType) = " + anno); + } +} diff --git a/test/004-annotations/src/android/test/anno/package-info.java b/test/004-annotations/src/android/test/anno/package-info.java new file mode 100644 index 0000000000..74b11f99ad --- /dev/null +++ b/test/004-annotations/src/android/test/anno/package-info.java @@ -0,0 +1,2 @@ +@AnnoSimplePackage +package android.test.anno; |
