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

Unified Diff: base/test/android/javatests/src/org/chromium/base/test/util/parameter/Parameter.java

Issue 2963683002: Simplify CommandLine parameterizing J3 Instrumentation Tests (Closed)
Patch Set: address comments Created 3 years, 5 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: base/test/android/javatests/src/org/chromium/base/test/util/parameter/Parameter.java
diff --git a/base/test/android/javatests/src/org/chromium/base/test/util/parameter/Parameter.java b/base/test/android/javatests/src/org/chromium/base/test/util/parameter/Parameter.java
deleted file mode 100644
index 0d122d20b2d863e2731b4aed58df1f125be2de72..0000000000000000000000000000000000000000
--- a/base/test/android/javatests/src/org/chromium/base/test/util/parameter/Parameter.java
+++ /dev/null
@@ -1,199 +0,0 @@
-// Copyright 2015 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.util.parameter;
-
-import junit.framework.TestCase;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.AnnotatedElement;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * The annotation for an individual parameter in a {@link ParameterizedTest}.
- *
- * Contains all annotations required to run tests ParameterizedTests.
- */
-public @interface Parameter {
- String tag();
- Argument[] arguments() default {};
-
- /**
- * The annotation for an individual argument in a {@link Parameter}.
- */
- @interface Argument {
- String name();
- String stringVar() default Parameter.ArgumentDefault.STRING;
- String[] stringArray() default {};
- int intVar() default Parameter.ArgumentDefault.INT;
- int[] intArray() default {};
- }
-
- /**
- * Default values for {@link Parameter.Argument}s.
- *
- * TODO (crbug.com/520232): Move to within {@link Parameter.Argument} and rename to Default
- * when fixed.
- */
- final class ArgumentDefault {
- public static final String STRING = "";
- public static final int INT = 0;
- }
-
- /**
- * The tool to read Parameter related annotations.
- */
- class Reader {
- private Class mAnnotatedTestClass;
- private AnnotatedElement mAnnotatedTestMethod;
- private ParameterizedTest mParameterizedTest;
-
- public Reader(TestCase testCase) {
- try {
- mAnnotatedTestClass = testCase.getClass();
- mAnnotatedTestMethod = testCase.getClass().getMethod(testCase.getName());
- } catch (NoSuchMethodException e) {
- // ignore
- }
- }
-
- /**
- * Gets the {@link ParameterizedTest}s for the current test.
- *
- * @return a list of all the {@link ParameterizedTest}s for the current test.
- */
- public List<ParameterizedTest> getParameterizedTests() {
- return new ArrayList<ParameterizedTest>(getParameterizedTestsImpl());
- }
-
- /**
- * Gets the {@link ParameterizedTest}s for the current test as immutable list.
- *
- * @return a list of all the {@link ParameterizedTest}s for the current test.
- */
- private List<ParameterizedTest> getParameterizedTestsImpl() {
- // Note: this must be aligned with Python code in
- // instrumentation_test_instance.ParseCommandLineFlagParameters (regarding priority of
- // ParameterizedTest.Set vs. ParameterizedTest) and in test_jar._GetProguardData
- // (regarding composition of method annotations with class and superclasses
- // annotations). Composition precedes selecting the annotation to process.
- if (mAnnotatedTestMethod.isAnnotationPresent(ParameterizedTest.Set.class)) {
- return Arrays.asList(getParameterizedTestSet(mAnnotatedTestMethod).tests());
- }
- AnnotatedElement classWithAnnotation = findClassWithAnnotation(
- mAnnotatedTestClass, ParameterizedTest.Set.class);
- if (classWithAnnotation != null) {
- return Arrays.asList(getParameterizedTestSet(classWithAnnotation).tests());
- }
- if (mAnnotatedTestMethod.isAnnotationPresent(ParameterizedTest.class)) {
- return Collections.singletonList(getParameterizedTest(mAnnotatedTestMethod));
- }
- classWithAnnotation = findClassWithAnnotation(
- mAnnotatedTestClass, ParameterizedTest.class);
- if (classWithAnnotation != null) {
- return Collections.singletonList(getParameterizedTest(classWithAnnotation));
- }
- return Collections.emptyList();
- }
-
- /**
- * Finds a class with the given annotation class starting from the given clazz.
- *
- * @return the class as {@link AnnotatedElement} or null if the class is not found.
- */
- private AnnotatedElement findClassWithAnnotation(
- Class<?> clazz, Class<? extends Annotation> annotationClass) {
- if (clazz == null || clazz.isAnnotationPresent(annotationClass)) {
- return clazz;
- } else {
- return findClassWithAnnotation(clazz.getSuperclass(), annotationClass);
- }
- }
-
- /**
- * Gets the {@link ParameterizedTest} annotation of the current test.
- *
- * @return a {@link ParameterizedTest} of the current test's parameters.
- */
- private ParameterizedTest getParameterizedTest(AnnotatedElement element) {
- return element.getAnnotation(ParameterizedTest.class);
- }
-
- /**
- * Gets the {@link ParameterizedTest.Set} annotation of the current test.
- *
- * @return a {@link ParameterizedTest.Set} of the current test's parameters.
- */
- private ParameterizedTest.Set getParameterizedTestSet(AnnotatedElement element) {
- return element.getAnnotation(ParameterizedTest.Set.class);
- }
-
- public boolean isParameterizedTest() {
- return mAnnotatedTestMethod.isAnnotationPresent(ParameterizedTest.Set.class)
- || mAnnotatedTestMethod.isAnnotationPresent(ParameterizedTest.class)
- || findClassWithAnnotation(
- mAnnotatedTestClass, ParameterizedTest.Set.class) != null
- || findClassWithAnnotation(
- mAnnotatedTestClass, ParameterizedTest.class) != null;
- }
-
- public void setCurrentParameterizedTest(ParameterizedTest parameterizedTest) {
- mParameterizedTest = parameterizedTest;
- }
-
- /**
- * Gets a {@link Parameter} object for a given target parameter.
- *
- * @param targetParameter the name of the {@link Parameter} to get in the current
- * parameterized test.
- * @return the {@link Parameter} for a given {@link ParameterizedTest} with the
- * targetParameter as its tag if it exists, otherwise returns null.
- */
- public Parameter getParameter(String targetParameter) {
- if (mParameterizedTest == null || targetParameter == null) {
- return null;
- }
- for (Parameter parameter : mParameterizedTest.parameters()) {
- if (targetParameter.equals(parameter.tag())) {
- return parameter;
- }
- }
- return null;
- }
-
- /**
- * Gets the {@link Parameter.Argument} for a given {@link Parameter}.
- *
- * @param targetParameter the name of the {@link Parameter} to search for when looking for
- * a {@link Parameter.Argument}.
- * @param targetArgument the name of the {@link Parameter.Argument} to look for in the
- * target {@link Parameter}.
- * @return the {@link Parameter.Argument} for a given {@link ParameterizedTest} for the
- * {@link Parameter} with the tag matching targetParameter and the argument name being
- * targetArgument if it exists, otherwise returns null.
- */
- public Parameter.Argument getParameterArgument(String targetParameter,
- String targetArgument) {
- Parameter parameter = getParameter(targetParameter);
- return (parameter == null) ? null : getParameterArgument(parameter, targetArgument);
- }
-
- public static Parameter.Argument getParameterArgument(Parameter parameter,
- String targetArgument) {
- if (targetArgument == null) {
- return null;
- }
- for (Parameter.Argument argument : parameter.arguments()) {
- if (targetArgument.equals(argument.name())) {
- return argument;
- }
- }
- return null;
- }
- }
-}
-

Powered by Google App Engine
This is Rietveld 408576698