/* * 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; import android.test.ActivityInstrumentationTestCase2; /** * Run the tests with: adb shell am instrument -w com.android.multidexlegacytestapp/android.test.InstrumentationTestRunner */ public class Test extends ActivityInstrumentationTestCase2 { public Test() { super(MainActivity.class); } public void testAllClassesAvailable() { assertEquals(3366, getActivity().getValue()); } public void testAnnotation() throws Exception { assertEquals(ReferencedByAnnotation.B, ((AnnotationWithEnum) TestApplication.annotation).value()); assertEquals(ReferencedByAnnotation.B, ((AnnotationWithEnum) TestApplication.getAnnotationWithEnum()).value()); // Just to verify that it doesn't crash getActivity().getAnnotation2Value(); assertEquals(ReferencedByClassInAnnotation.class, ((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); } }