summaryrefslogtreecommitdiff
path: root/base/test/android/javatests/src/org/chromium/base/test/SetUpStatement.java
diff options
context:
space:
mode:
Diffstat (limited to 'base/test/android/javatests/src/org/chromium/base/test/SetUpStatement.java')
-rw-r--r--base/test/android/javatests/src/org/chromium/base/test/SetUpStatement.java35
1 files changed, 35 insertions, 0 deletions
diff --git a/base/test/android/javatests/src/org/chromium/base/test/SetUpStatement.java b/base/test/android/javatests/src/org/chromium/base/test/SetUpStatement.java
new file mode 100644
index 0000000000..30ac2b6c5c
--- /dev/null
+++ b/base/test/android/javatests/src/org/chromium/base/test/SetUpStatement.java
@@ -0,0 +1,35 @@
+// 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();
+ }
+}