| Index: base/test/android/javatests/src/org/chromium/base/test/params/ParameterizedFrameworkMethod.java
|
| diff --git a/base/test/android/javatests/src/org/chromium/base/test/params/ParameterizedFrameworkMethod.java b/base/test/android/javatests/src/org/chromium/base/test/params/ParameterizedFrameworkMethod.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..f3333b5720dfe4e6830f5c6679f45d2ef81fc522
|
| --- /dev/null
|
| +++ b/base/test/android/javatests/src/org/chromium/base/test/params/ParameterizedFrameworkMethod.java
|
| @@ -0,0 +1,94 @@
|
| +// Copyright 2017 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.base.test.params;
|
| +
|
| +import org.junit.runners.model.FrameworkMethod;
|
| +
|
| +import java.lang.annotation.Annotation;
|
| +import java.lang.reflect.Method;
|
| +import java.util.ArrayList;
|
| +import java.util.Collection;
|
| +import java.util.List;
|
| +
|
| +/**
|
| + * Custom FrameworkMethod that includes a {@code ParameterSet} that
|
| + * represents the parameters for this test method
|
| + */
|
| +public class ParameterizedFrameworkMethod extends FrameworkMethod {
|
| + private ParameterSet mParameterSet;
|
| + private String mName;
|
| +
|
| + public ParameterizedFrameworkMethod(
|
| + Method method, ParameterSet parameterSet, String classParameterSetName) {
|
| + super(method);
|
| + mParameterSet = parameterSet;
|
| + String postFix = "";
|
| + if (classParameterSetName != null && !classParameterSetName.isEmpty()) {
|
| + postFix += "_" + classParameterSetName;
|
| + }
|
| + if (parameterSet != null && !parameterSet.getName().isEmpty()) {
|
| + postFix += "_" + parameterSet.getName();
|
| + }
|
| + mName = postFix.isEmpty() ? method.getName() : method.getName() + "_" + postFix;
|
| + }
|
| +
|
| + @Override
|
| + public String getName() {
|
| + return mName;
|
| + }
|
| +
|
| + @Override
|
| + public Object invokeExplosively(Object target, Object... params) throws Throwable {
|
| + if (mParameterSet != null) {
|
| + return super.invokeExplosively(target, mParameterSet.getValues().toArray());
|
| + }
|
| + return super.invokeExplosively(target, params);
|
| + }
|
| +
|
| + static List<FrameworkMethod> wrapAllFrameworkMethods(
|
| + Collection<FrameworkMethod> frameworkMethods, String classParameterSetName) {
|
| + List<FrameworkMethod> results = new ArrayList<>();
|
| + for (FrameworkMethod frameworkMethod : frameworkMethods) {
|
| + results.add(new ParameterizedFrameworkMethod(
|
| + frameworkMethod.getMethod(), null, classParameterSetName));
|
| + }
|
| + return results;
|
| + }
|
| +
|
| + @Override
|
| + public boolean equals(Object obj) {
|
| + if (obj instanceof ParameterizedFrameworkMethod) {
|
| + ParameterizedFrameworkMethod method = (ParameterizedFrameworkMethod) obj;
|
| + return super.equals(obj) && method.getParameterSet().equals(getParameterSet())
|
| + && method.getName().equals(getName());
|
| + }
|
| + return false;
|
| + }
|
| +
|
| + /**
|
| + * Override hashCode method to distinguish two ParameterizedFrameworkmethod with same
|
| + * Method object.
|
| + */
|
| + @Override
|
| + public int hashCode() {
|
| + int result = 17;
|
| + result = 31 * result + super.hashCode();
|
| + result = 31 * result + getName().hashCode();
|
| + if (getParameterSet() != null) {
|
| + result = 31 * result + getParameterSet().hashCode();
|
| + }
|
| + return result;
|
| + }
|
| +
|
| + Annotation[] getTestAnnotations() {
|
| + // TODO(yolandyan): add annotation from the ParameterSet, enable
|
| + // test writing to add SkipCheck for an individual parameter
|
| + return getMethod().getAnnotations();
|
| + }
|
| +
|
| + public ParameterSet getParameterSet() {
|
| + return mParameterSet;
|
| + }
|
| +}
|
|
|