Index: content/public/android/javatests/src/org/chromium/content/browser/DownloadInfoTest.java |
diff --git a/content/public/android/javatests/src/org/chromium/content/browser/DownloadInfoTest.java b/content/public/android/javatests/src/org/chromium/content/browser/DownloadInfoTest.java |
deleted file mode 100644 |
index a76a1f39dd11ed07d3419efb2f5952e16d52ef26..0000000000000000000000000000000000000000 |
--- a/content/public/android/javatests/src/org/chromium/content/browser/DownloadInfoTest.java |
+++ /dev/null |
@@ -1,217 +0,0 @@ |
-// Copyright 2013 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-package org.chromium.content.browser; |
- |
-import android.test.InstrumentationTestCase; |
-import android.test.suitebuilder.annotation.SmallTest; |
- |
-import org.chromium.base.test.util.Feature; |
-import org.chromium.content.browser.DownloadInfo.Builder; |
- |
-import java.lang.reflect.InvocationTargetException; |
-import java.lang.reflect.Method; |
-import java.util.HashMap; |
-import java.util.Random; |
- |
-/** |
- * Tests for (@link DownloadInfo}. |
- */ |
-public class DownloadInfoTest extends InstrumentationTestCase { |
- /** |
- * Class to store getter/setter information. Stores the method name of a getter and setter |
- * without prefix, so "int getFoo()" and "void setFoo(int)" both have same AccessorSignature |
- * {"Foo", int}. |
- */ |
- static class AccessorSignature { |
- final String mMethodNameWithoutPrefix; |
- final Class<?> mReturnTypeOrParam; |
- |
- AccessorSignature(String methodNameWithoutPrefix, Class<?> returnTypeOrParam) { |
- mMethodNameWithoutPrefix = methodNameWithoutPrefix; |
- mReturnTypeOrParam = returnTypeOrParam; |
- } |
- |
- @Override |
- public int hashCode() { |
- return mMethodNameWithoutPrefix.hashCode() * 31 |
- + mReturnTypeOrParam.hashCode(); |
- } |
- |
- @Override |
- public boolean equals(Object obj) { |
- if (obj == this) { |
- return true; |
- } |
- if (obj instanceof AccessorSignature) { |
- AccessorSignature other = (AccessorSignature) obj; |
- return other.mReturnTypeOrParam == mReturnTypeOrParam |
- && other.mMethodNameWithoutPrefix.equals(mMethodNameWithoutPrefix); |
- } |
- return false; |
- } |
- |
- @Override |
- public String toString() { |
- return "{ " + mMethodNameWithoutPrefix + ", " + mReturnTypeOrParam.getName() + "}"; |
- } |
- } |
- |
- /** |
- * Returns an AccessorInfo object for the method if it is a getter. A getter for the class has |
- * signature: Type getFoo(), where Type is a String or a primitive type other than boolean. |
- * Boolean getters are an exception and have special prefixes. In case of a boolean getter, the |
- * signature is 'boolean isFoo()' or 'boolean hasFoo', i.e. boolean getters start with "is" or |
- * "has". |
- * @param method the method that is a getter |
- * @return AccessorInfo for the method if it is a getter, null otherwise. |
- */ |
- AccessorSignature getGetterInfo(Method method) { |
- // A getter is of format Type getFoo(): i.e. 0 params and one |
- // return type. |
- if (method.getParameterTypes().length == 0) { |
- // Based on return type extract the name of the getter. |
- Class<?> returnType = method.getReturnType(); |
- if (returnType.isPrimitive() || returnType == String.class) { |
- String methodName = method.getName(); |
- if (returnType.equals(Boolean.TYPE)) { |
- if (methodName.matches("(is|has).*")) { |
- return new AccessorSignature(methodName.replaceFirst("is|has", ""), |
- returnType); |
- } |
- } else { |
- if (methodName.startsWith("get")) { |
- return new AccessorSignature(methodName.substring(3), returnType); |
- } |
- } |
- } |
- } |
- return null; |
- } |
- |
- /** |
- * Returns an AccessorInfo object for the method if it is a setter. A setter for the class has |
- * signature: Type setFoo(), where Type is a String or a primitive type. |
- * @param method the method that is a getter |
- * @return AccessorInfo for the method if it is a getter, null otherwise. |
- */ |
- AccessorSignature getSetterInfo(Method method) { |
- if (method.getParameterTypes().length == 1) { |
- Class<?> parameter = method.getParameterTypes()[0]; |
- String methodName = method.getName(); |
- if (methodName.startsWith("set")) { |
- if (parameter.equals(Boolean.TYPE)) { |
- // Boolean setters are of form setIsFoo or setHasFoo. |
- return new AccessorSignature( |
- methodName.replaceFirst("set(Is|Has)", ""), |
- parameter); |
- } else { |
- return new AccessorSignature(methodName.substring(3), parameter); |
- } |
- } |
- } |
- return null; |
- } |
- |
- /** |
- * Invoke a method via reflection and rethrow the exception. Makes findbugs happy. |
- * @param method Method to invoke. |
- * @param instance class instance on which method should be invoked. |
- * @return return value of invocation. |
- */ |
- Object invokeMethod(Method method, Object instance, Object... args) throws Exception { |
- try { |
- return method.invoke(instance, args); |
- } catch (IllegalArgumentException e) { |
- throw e; |
- } catch (IllegalAccessException e) { |
- throw e; |
- } catch (InvocationTargetException e) { |
- throw e; |
- } |
- } |
- |
- @SmallTest |
- @Feature({"Downloads"}) |
- public void testBuilderHasCorrectSetters() { |
- HashMap<AccessorSignature, Method> downloadInfoGetters = |
- new HashMap<AccessorSignature, Method>(); |
- HashMap<AccessorSignature, Method> builderSetters = |
- new HashMap<AccessorSignature, Method>(); |
- for (Method m : DownloadInfo.class.getMethods()) { |
- AccessorSignature info = getGetterInfo(m); |
- if (info != null) { |
- downloadInfoGetters.put(info, m); |
- } |
- } |
- assertTrue("There should be at least one getter.", |
- downloadInfoGetters.size() > 0); |
- for (Method m : Builder.class.getMethods()) { |
- AccessorSignature info = getSetterInfo(m); |
- if (info != null) { |
- builderSetters.put(info, m); |
- } |
- } |
- |
- // Make sure we have a setter for each getter and vice versa. |
- assertEquals("Mismatch between getters and setters.", |
- downloadInfoGetters.keySet(), builderSetters.keySet()); |
- |
- // Generate specific values for fields and verify that they are correctly set. For boolean |
- // fields set them all to true. For integers generate random numbers. |
- Random random = new Random(); |
- HashMap<AccessorSignature, Object> valuesForBuilder = |
- new HashMap<DownloadInfoTest.AccessorSignature, Object>(); |
- for (AccessorSignature signature : builderSetters.keySet()) { |
- if (signature.mReturnTypeOrParam.equals(String.class)) { |
- String value = signature.mMethodNameWithoutPrefix |
- + Integer.toString(random.nextInt()); |
- valuesForBuilder.put(signature, value); |
- } else if (signature.mReturnTypeOrParam.equals(Boolean.TYPE)) { |
- valuesForBuilder.put(signature, Boolean.TRUE); |
- } else { |
- // This is a primitive type that is not boolean, probably an integer. |
- valuesForBuilder.put(signature, Integer.valueOf(random.nextInt(100))); |
- } |
- } |
- |
- Builder builder = new Builder(); |
- // Create a DownloadInfo object with these values. |
- for (AccessorSignature signature : builderSetters.keySet()) { |
- Method setter = builderSetters.get(signature); |
- try { |
- invokeMethod(setter, builder, valuesForBuilder.get(signature)); |
- } catch (Exception e) { |
- fail("Exception while setting value in the setter. Signature: " + signature |
- + " value:" + valuesForBuilder.get(signature) + ":" + e); |
- } |
- } |
- DownloadInfo downloadInfo = builder.build(); |
- for (AccessorSignature signature : downloadInfoGetters.keySet()) { |
- Method getter = downloadInfoGetters.get(signature); |
- try { |
- Object returnValue = invokeMethod(getter, downloadInfo); |
- assertEquals(signature.toString(), |
- valuesForBuilder.get(signature).toString(), returnValue.toString()); |
- } catch (Exception e) { |
- fail("Exception while getting value from getter. Signature: " + signature |
- + " value:" + valuesForBuilder.get(signature)); |
- } |
- } |
- |
- // Test DownloadInfo.fromDownloadInfo copies all fields. |
- DownloadInfo newDownloadInfo = Builder.fromDownloadInfo(downloadInfo).build(); |
- for (AccessorSignature signature : downloadInfoGetters.keySet()) { |
- Method getter = downloadInfoGetters.get(signature); |
- try { |
- Object returnValue1 = invokeMethod(getter, downloadInfo); |
- Object returnValue2 = invokeMethod(getter, newDownloadInfo); |
- assertEquals(signature.toString(), returnValue1, returnValue2); |
- } catch (Exception e) { |
- fail("Exception while getting value from getter. Signature: " + signature |
- + " value:" + valuesForBuilder.get(signature) + ":" + e); |
- } |
- } |
- } |
-} |