Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(31)

Unified Diff: content/public/android/javatests/src/org/chromium/content/browser/DownloadInfoTest.java

Issue 141533006: [Android] Move the java content/ package to content_public/ to start the split. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Small fixes and findbugs line update Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
- }
- }
- }
-}

Powered by Google App Engine
This is Rietveld 408576698