blob: 170ff69eafca706dc53bc026cc6d147e2207f568 [file] [log] [blame]
// 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.Test;
import org.junit.runner.RunWith;
import org.junit.runners.BlockJUnit4ClassRunner;
import org.chromium.base.test.params.ParameterAnnotations.ClassParameter;
import org.chromium.base.test.params.ParameterAnnotations.UseRunnerDelegate;
import org.chromium.base.test.params.ParameterizedRunner.IllegalParameterArgumentException;
import java.util.ArrayList;
import java.util.List;
/**
* Test for org.chromium.base.test.params.ParameterizedRunner
*/
@RunWith(BlockJUnit4ClassRunner.class)
public class ParameterizedRunnerTest {
@UseRunnerDelegate(BlockJUnit4RunnerDelegate.class)
public static class BadTestClassWithMoreThanOneConstructor {
@ClassParameter
static List<ParameterSet> sClassParams = new ArrayList<>();
public BadTestClassWithMoreThanOneConstructor() {}
public BadTestClassWithMoreThanOneConstructor(String x) {}
}
@UseRunnerDelegate(BlockJUnit4RunnerDelegate.class)
public static class BadTestClassWithNonListParameters {
@ClassParameter
static String[] sMethodParamA = {"1", "2"};
@Test
public void test() {}
}
@UseRunnerDelegate(BlockJUnit4RunnerDelegate.class)
public static class BadTestClassWithoutNeedForParameterization {
@Test
public void test() {}
}
@UseRunnerDelegate(BlockJUnit4RunnerDelegate.class)
public static class BadTestClassWithNonStaticParameterSetList {
@ClassParameter
public List<ParameterSet> mClassParams = new ArrayList<>();
@Test
public void test() {}
}
@UseRunnerDelegate(BlockJUnit4RunnerDelegate.class)
public static class BadTestClassWithMultipleClassParameter {
@ClassParameter
private static List<ParameterSet> sParamA = new ArrayList<>();
@ClassParameter
private static List<ParameterSet> sParamB = new ArrayList<>();
}
@Test(expected = ParameterizedRunner.IllegalParameterArgumentException.class)
public void testEmptyParameterSet() {
List<ParameterSet> paramList = new ArrayList<>();
paramList.add(new ParameterSet());
ParameterizedRunner.validateWidth(paramList);
}
@Test(expected = ParameterizedRunner.IllegalParameterArgumentException.class)
public void testUnequalWidthParameterSetList() {
List<ParameterSet> paramList = new ArrayList<>();
paramList.add(new ParameterSet().value(1, 2));
paramList.add(new ParameterSet().value(3, 4, 5));
ParameterizedRunner.validateWidth(paramList);
}
@Test(expected = ParameterizedRunner.IllegalParameterArgumentException.class)
public void testUnequalWidthParameterSetListWithNull() {
List<ParameterSet> paramList = new ArrayList<>();
paramList.add(new ParameterSet().value(null));
paramList.add(new ParameterSet().value(1, 2));
ParameterizedRunner.validateWidth(paramList);
}
@Test(expected = IllegalArgumentException.class)
public void testBadClassWithNonListParameters() throws Throwable {
new ParameterizedRunner(BadTestClassWithNonListParameters.class);
}
@Test(expected = IllegalParameterArgumentException.class)
public void testBadClassWithNonStaticParameterSetList() throws Throwable {
new ParameterizedRunner(BadTestClassWithNonStaticParameterSetList.class);
}
@Test(expected = IllegalArgumentException.class)
public void testBadClassWithoutNeedForParameterization() throws Throwable {
new ParameterizedRunner(BadTestClassWithoutNeedForParameterization.class);
}
@Test(expected = Exception.class)
public void testBadClassWithMoreThanOneConstructor() throws Throwable {
new ParameterizedRunner(BadTestClassWithMoreThanOneConstructor.class);
}
}