blob: 6ffccad44bc64dbeb2071207d103f50da843b051 [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.Assert;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.MethodRule;
import org.junit.runner.RunWith;
import org.chromium.base.test.params.ParameterAnnotations.ClassParameter;
import org.chromium.base.test.params.ParameterAnnotations.UseMethodParameter;
import org.chromium.base.test.params.ParameterAnnotations.UseMethodParameterAfter;
import org.chromium.base.test.params.ParameterAnnotations.UseMethodParameterBefore;
import org.chromium.base.test.params.ParameterAnnotations.UseRunnerDelegate;
import java.util.Arrays;
import java.util.List;
/**
* Example test that uses ParameterizedRunner
*/
@RunWith(ParameterizedRunner.class)
@UseRunnerDelegate(BlockJUnit4RunnerDelegate.class)
public class ExampleParameterizedTest {
@ClassParameter
private static List<ParameterSet> sClassParams =
Arrays.asList(new ParameterSet().value("hello", "world").name("HelloWorld"),
new ParameterSet().value("Xxxx", "Yyyy").name("XxxxYyyy"),
new ParameterSet().value("aa", "yy").name("AaYy"));
public static class MethodParamsA implements ParameterProvider {
private static List<ParameterSet> sMethodParamA =
Arrays.asList(new ParameterSet().value(1, 2).name("OneTwo"),
new ParameterSet().value(2, 3).name("TwoThree"),
new ParameterSet().value(3, 4).name("ThreeFour"));
@Override
public List<ParameterSet> getParameters() {
return sMethodParamA;
}
}
public static class MethodParamsB implements ParameterProvider {
private static List<ParameterSet> sMethodParamB =
Arrays.asList(new ParameterSet().value("a", "b").name("Ab"),
new ParameterSet().value("b", "c").name("Bc"),
new ParameterSet().value("c", "d").name("Cd"),
new ParameterSet().value("d", "e").name("De"));
@Override
public List<ParameterSet> getParameters() {
return sMethodParamB;
}
}
private String mStringA;
private String mStringB;
public ExampleParameterizedTest(String a, String b) {
mStringA = a;
mStringB = b;
}
@Test
public void testSimple() {
Assert.assertEquals(
"A and B string length aren't equal", mStringA.length(), mStringB.length());
}
@Rule
public MethodRule mMethodParamAnnotationProcessor = new MethodParamAnnotationRule();
private Integer mSum;
@UseMethodParameterBefore(MethodParamsA.class)
public void setupWithOnlyA(int intA, int intB) {
mSum = intA + intB;
}
@Test
@UseMethodParameter(MethodParamsA.class)
public void testWithOnlyA(int intA, int intB) {
Assert.assertEquals(intA + 1, intB);
Assert.assertEquals(mSum, Integer.valueOf(intA + intB));
mSum = null;
}
private String mConcatenation;
@Test
@UseMethodParameter(MethodParamsB.class)
public void testWithOnlyB(String a, String b) {
Assert.assertTrue(!a.equals(b));
mConcatenation = a + b;
}
@UseMethodParameterAfter(MethodParamsB.class)
public void teardownWithOnlyB(String a, String b) {
Assert.assertEquals(mConcatenation, a + b);
mConcatenation = null;
}
}