blob: 30ac2b6c5cb666427cd17646919e73d2f08eddfb [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;
import org.junit.rules.TestRule;
import org.junit.runners.model.Statement;
/**
* Custom Statement for SetUpTestRules.
*
* Calls {@link SetUpTestRule#setUp} before evaluating {@link SetUpTestRule#base} if
* {@link SetUpTestRule#shouldSetUp} is true
*/
public class SetUpStatement extends Statement {
private final Statement mBase;
private final SetUpTestRule<? extends TestRule> mSetUpTestRule;
private final boolean mShouldSetUp;
public SetUpStatement(
final Statement base, SetUpTestRule<? extends TestRule> callback, boolean shouldSetUp) {
mBase = base;
mSetUpTestRule = callback;
mShouldSetUp = shouldSetUp;
}
@Override
public void evaluate() throws Throwable {
if (mShouldSetUp) {
mSetUpTestRule.setUp();
}
mBase.evaluate();
}
}