Add map and apply to the testing builders.
Change-Id: Ic748a7a00c1c4d6e1860995dea6a54375a539ef3
diff --git a/src/test/java/com/android/tools/r8/TestBaseResult.java b/src/test/java/com/android/tools/r8/TestBaseResult.java
index e7623a3..390e017 100644
--- a/src/test/java/com/android/tools/r8/TestBaseResult.java
+++ b/src/test/java/com/android/tools/r8/TestBaseResult.java
@@ -4,6 +4,9 @@
package com.android.tools.r8;
+import java.util.function.Consumer;
+import java.util.function.Function;
+
public abstract class TestBaseResult<CR extends TestBaseResult<CR, RR>, RR extends TestRunResult> {
final TestState state;
@@ -12,4 +15,13 @@
}
public abstract CR self();
+
+ public <S> S map(Function<CR, S> fn) {
+ return fn.apply(self());
+ }
+
+ public CR apply(Consumer<CR> fn) {
+ fn.accept(self());
+ return self();
+ }
}
diff --git a/src/test/java/com/android/tools/r8/TestBuilder.java b/src/test/java/com/android/tools/r8/TestBuilder.java
index c67c05c..9ba822d 100644
--- a/src/test/java/com/android/tools/r8/TestBuilder.java
+++ b/src/test/java/com/android/tools/r8/TestBuilder.java
@@ -9,6 +9,8 @@
import java.nio.file.Path;
import java.util.Arrays;
import java.util.Collection;
+import java.util.function.Consumer;
+import java.util.function.Function;
public abstract class TestBuilder<RR extends TestRunResult, T extends TestBuilder<RR, T>> {
@@ -24,6 +26,15 @@
abstract T self();
+ public <S> S map(Function<T, S> fn) {
+ return fn.apply(self());
+ }
+
+ public T apply(Consumer<T> fn) {
+ fn.accept(self());
+ return self();
+ }
+
public abstract RR run(String mainClass)
throws IOException, CompilationFailedException;
diff --git a/src/test/java/com/android/tools/r8/TestRunResult.java b/src/test/java/com/android/tools/r8/TestRunResult.java
index 89d0fff..e2f4239 100644
--- a/src/test/java/com/android/tools/r8/TestRunResult.java
+++ b/src/test/java/com/android/tools/r8/TestRunResult.java
@@ -9,12 +9,12 @@
import static org.junit.Assert.assertThat;
import com.android.tools.r8.ToolHelper.ProcessResult;
-import com.android.tools.r8.graph.invokesuper.Consumer;
import com.android.tools.r8.utils.AndroidApp;
import com.android.tools.r8.utils.codeinspector.CodeInspector;
import java.io.IOException;
import java.io.PrintStream;
import java.util.concurrent.ExecutionException;
+import java.util.function.Consumer;
import java.util.function.Function;
import org.hamcrest.Matcher;
@@ -29,6 +29,15 @@
abstract RR self();
+ public <S> S map(Function<RR, S> fn) {
+ return fn.apply(self());
+ }
+
+ public RR apply(Consumer<RR> fn) {
+ fn.accept(self());
+ return self();
+ }
+
public AndroidApp app() {
return app;
}
@@ -74,10 +83,6 @@
return self();
}
- public <R> R map(Function<RR, R> mapper) {
- return mapper.apply(self());
- }
-
public CodeInspector inspector() throws IOException, ExecutionException {
// Inspection post run implies success. If inspection of an invalid program is needed it should
// be done on the compilation result or on the input.