am 6829daa4: Merge "Add tests about annotations and enum."

* commit '6829daa44a66333ef869dbcd655eac220c34561b':
  Add tests about annotations and enum.
This commit is contained in:
Yohann Roussel
2014-12-01 10:05:45 +00:00
committed by Android Git Automerger
8 changed files with 198 additions and 1 deletions

View File

@@ -31,7 +31,7 @@ public class Test extends ActivityInstrumentationTestCase2<MainActivity> {
assertEquals(3366, getActivity().getValue());
}
public void testAnnotation() {
public void testAnnotation() throws Exception {
assertEquals(ReferencedByAnnotation.B,
((AnnotationWithEnum) TestApplication.annotation).value());
assertEquals(ReferencedByAnnotation.B,
@@ -43,10 +43,25 @@ public class Test extends ActivityInstrumentationTestCase2<MainActivity> {
((AnnotationWithClass) TestApplication.annotation3).value());
// Just to verify that it doesn't crash
ReferencedByClassInAnnotation.A.get();
// Tests about bug https://code.google.com/p/android/issues/detail?id=78144
// Dalvik may throw IllegalAccessError when a class is in a different dex than an enum
// used in its annotations.
String annotationPackage = "com.android.multidexlegacytestapp.annotation.";
Class<?> clazz = Class.forName(annotationPackage + "Annotated");
// Just to verify that it doesn't crash
clazz.getAnnotations();
clazz = Class.forName(annotationPackage + "Annotated2");
// Just to verify that it doesn't crash
clazz.getAnnotations();
clazz = Class.forName(annotationPackage + "Annotated3");
// Just to verify that it doesn't crash
clazz.getAnnotations();
}
public void testInterface() {
assertEquals(InterfaceWithEnum.class,
TestApplication.interfaceClass);
}
}

View File

@@ -0,0 +1,26 @@
/*
* Copyright (C) 2014 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.multidexlegacytestapp.annotation;
@TestAnnotation(AnnotationValue.V1)
public class Annotated {
public void m() {
}
}

View File

@@ -0,0 +1,25 @@
/*
* Copyright (C) 2014 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.multidexlegacytestapp.annotation;
@TestAnnotation2(AnnotationValue.V1)
public class Annotated2 {
public void m() {
}
}

View File

@@ -0,0 +1,27 @@
/*
* Copyright (C) 2014 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.multidexlegacytestapp.annotation;
import com.android.multidexlegacytestapp.annotation.TestAnnotation3.Value;
@TestAnnotation3(Value.V1)
public class Annotated3 {
public void m() {
}
}

View File

@@ -0,0 +1,23 @@
/*
* Copyright (C) 2014 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.multidexlegacytestapp.annotation;
public enum AnnotationValue {
V1,
V2;
}

View File

@@ -0,0 +1,25 @@
/*
* Copyright (C) 2014 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.multidexlegacytestapp.annotation;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
public @interface TestAnnotation {
AnnotationValue value();
}

View File

@@ -0,0 +1,25 @@
/*
* Copyright (C) 2014 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.multidexlegacytestapp.annotation;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
public @interface TestAnnotation2 {
AnnotationValue value();
}

View File

@@ -0,0 +1,31 @@
/*
* Copyright (C) 2014 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.multidexlegacytestapp.annotation;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
public @interface TestAnnotation3 {
public enum Value {
V1,
V2;
}
Value value();
}