aboutsummaryrefslogtreecommitdiff
path: root/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/sdk/AndroidJarLoaderTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/sdk/AndroidJarLoaderTest.java')
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/sdk/AndroidJarLoaderTest.java166
1 files changed, 0 insertions, 166 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/sdk/AndroidJarLoaderTest.java b/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/sdk/AndroidJarLoaderTest.java
deleted file mode 100644
index 5f7de429b..000000000
--- a/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/sdk/AndroidJarLoaderTest.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Eclipse Public License, Version 1.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.eclipse.org/org/documents/epl-v10.php
- *
- * 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.ide.eclipse.adt.internal.sdk;
-
-import com.android.ide.eclipse.adt.internal.sdk.AndroidJarLoader;
-import com.android.ide.eclipse.adt.internal.sdk.IAndroidClassLoader.IClassDescriptor;
-import com.android.ide.eclipse.tests.AdtTestData;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.HashMap;
-
-import junit.framework.TestCase;
-
-/**
- * Unit Test for {@link AndroidJarLoader}.
- *
- * Uses the classes jar.example.Class1/Class2 stored in tests/data/jar_example.jar.
- */
-public class AndroidJarLoaderTest extends TestCase {
-
- private AndroidJarLoader mFrameworkClassLoader;
-
- /** Creates an instance of {@link AndroidJarLoader} on our test data JAR */
- @Override
- public void setUp() throws Exception {
- String jarfilePath = AdtTestData.getInstance().getTestFilePath(
- "com/android/ide/eclipse/testdata/jar_example.jar"); //$NON-NLS-1$
- mFrameworkClassLoader = new AndroidJarLoader(jarfilePath);
- }
-
- @Override
- public void tearDown() throws Exception {
- mFrameworkClassLoader = null;
- System.gc();
- }
-
- /** Preloads classes. They should load just fine. */
- public final void testPreLoadClasses() throws Exception {
- mFrameworkClassLoader.preLoadClasses("jar.example.", null, null); //$NON-NLS-1$
- HashMap<String, Class<?>> map = getPrivateClassCache();
- assertEquals(0, map.size());
- HashMap<String,byte[]> data = getPrivateEntryCache();
- assertTrue(data.containsKey("jar.example.Class1")); //$NON-NLS-1$
- assertTrue(data.containsKey("jar.example.Class2")); //$NON-NLS-1$
- assertTrue(data.containsKey("jar.example.Class1$InnerStaticClass1")); //$NON-NLS-1$
- assertTrue(data.containsKey("jar.example.Class1$InnerClass2")); //$NON-NLS-1$
- assertEquals(4, data.size());
- }
-
- /** Preloads a class not in the JAR. Preloading does nothing in this case. */
- public final void testPreLoadClasses_classNotFound() throws Exception {
- mFrameworkClassLoader.preLoadClasses("not.a.package.", null, null); //$NON-NLS-1$
- HashMap<String, Class<?>> map = getPrivateClassCache();
- assertEquals(0, map.size());
- HashMap<String,byte[]> data = getPrivateEntryCache();
- assertEquals(0, data.size());
- }
-
- /** Finds a class we just preloaded. It should work. */
- public final void testFindClass_classFound() throws Exception {
- Class<?> c = _findClass(mFrameworkClassLoader, "jar.example.Class2"); //$NON-NLS-1$
- assertEquals("jar.example.Class2", c.getName()); //$NON-NLS-1$
- HashMap<String, Class<?>> map = getPrivateClassCache();
- assertTrue(map.containsKey("jar.example.Class1")); //$NON-NLS-1$
- assertTrue(map.containsKey("jar.example.Class2")); //$NON-NLS-1$
- assertEquals(2, map.size());
- }
-
- /** call the protected method findClass */
- private Class<?> _findClass(AndroidJarLoader jarLoader, String name) throws Exception {
- Method findClassMethod = AndroidJarLoader.class.getDeclaredMethod(
- "findClass", String.class); //$NON-NLS-1$
- findClassMethod.setAccessible(true);
- try {
- return (Class<?>)findClassMethod.invoke(jarLoader, name);
- }
- catch (InvocationTargetException e) {
- throw (Exception)e.getCause();
- }
- }
-
- /** Trying to find a class that we fail to preload should throw a CNFE. */
- public final void testFindClass_classNotFound() throws Exception {
- try {
- // Will throw ClassNotFoundException
- _findClass(mFrameworkClassLoader, "not.a.valid.ClassName"); //$NON-NLS-1$
- } catch (ClassNotFoundException e) {
- // check the message in the CNFE
- assertEquals("not.a.valid.ClassName", e.getMessage()); //$NON-NLS-1$
- return;
- }
- // Exception not thrown - this is a failure
- fail("Expected ClassNotFoundException not thrown");
- }
-
- public final void testFindClassesDerivingFrom() throws Exception {
- HashMap<String, ArrayList<IClassDescriptor>> found =
- mFrameworkClassLoader.findClassesDerivingFrom("jar.example.", new String[] { //$NON-NLS-1$
- "jar.example.Class1", //$NON-NLS-1$
- "jar.example.Class2" }); //$NON-NLS-1$
-
- assertTrue(found.containsKey("jar.example.Class1")); //$NON-NLS-1$
- assertTrue(found.containsKey("jar.example.Class2")); //$NON-NLS-1$
- assertEquals(2, found.size());
- // Only Class2 derives from Class1..
- // Class1 and Class1$InnerStaticClass1 derive from Object and are thus ignored.
- // Class1$InnerClass2 should never be seen either.
- assertEquals("jar.example.Class2", //$NON-NLS-1$
- found.get("jar.example.Class1").get(0).getFullClassName()); //$NON-NLS-1$
- assertEquals(1, found.get("jar.example.Class1").size()); //$NON-NLS-1$
- assertEquals(0, found.get("jar.example.Class2").size()); //$NON-NLS-1$
- }
-
- // --- Utilities ---
-
- /**
- * Retrieves the private mFrameworkClassLoader.mClassCache field using reflection.
- *
- * @throws NoSuchFieldException
- * @throws SecurityException
- * @throws IllegalAccessException
- * @throws IllegalArgumentException
- */
- @SuppressWarnings("unchecked")
- private HashMap<String, Class<?> > getPrivateClassCache()
- throws SecurityException, NoSuchFieldException,
- IllegalArgumentException, IllegalAccessException {
- Field field = AndroidJarLoader.class.getDeclaredField("mClassCache"); //$NON-NLS-1$
- field.setAccessible(true);
- return (HashMap<String, Class<?>>) field.get(mFrameworkClassLoader);
- }
-
- /**
- * Retrieves the private mFrameworkClassLoader.mEntryCache field using reflection.
- *
- * @throws NoSuchFieldException
- * @throws SecurityException
- * @throws IllegalAccessException
- * @throws IllegalArgumentException
- */
- @SuppressWarnings("unchecked")
- private HashMap<String,byte[]> getPrivateEntryCache()
- throws SecurityException, NoSuchFieldException,
- IllegalArgumentException, IllegalAccessException {
- Field field = AndroidJarLoader.class.getDeclaredField("mEntryCache"); //$NON-NLS-1$
- field.setAccessible(true);
- return (HashMap<String, byte[]>) field.get(mFrameworkClassLoader);
- }
-}