From a19f85124e4deff0432565183a53efef81b2ca9c Mon Sep 17 00:00:00 2001 From: Chalard Jean Date: Wed, 4 Aug 2021 21:56:45 +0900 Subject: [PATCH] Add Function3 ...and rename ExceptionUtils to FunctionalUtils as the old name would no longer be appropriate. Test: FrameworksNetTests Change-Id: I2affd69fb84d7f250b4a45497eec6c052bf6ec50 --- .../android/testutils/TestPermissionUtil.kt | 4 ++-- .../com/android/testutils/Cleanup.kt | 4 ++-- ...ceptionUtils.java => FunctionalUtils.java} | 19 ++++++++++++++++++- .../com/android/testutils/MiscAsserts.kt | 2 +- 4 files changed, 23 insertions(+), 6 deletions(-) rename staticlibs/testutils/hostdevice/com/android/testutils/{ExceptionUtils.java => FunctionalUtils.java} (74%) diff --git a/staticlibs/testutils/devicetests/com/android/testutils/TestPermissionUtil.kt b/staticlibs/testutils/devicetests/com/android/testutils/TestPermissionUtil.kt index a4dbd9ada9..f571f64fe7 100644 --- a/staticlibs/testutils/devicetests/com/android/testutils/TestPermissionUtil.kt +++ b/staticlibs/testutils/devicetests/com/android/testutils/TestPermissionUtil.kt @@ -20,8 +20,8 @@ package com.android.testutils import androidx.test.platform.app.InstrumentationRegistry import com.android.modules.utils.build.SdkLevel -import com.android.testutils.ExceptionUtils.ThrowingRunnable -import com.android.testutils.ExceptionUtils.ThrowingSupplier +import com.android.testutils.FunctionalUtils.ThrowingRunnable +import com.android.testutils.FunctionalUtils.ThrowingSupplier /** * Run the specified [task] with the specified [permissions] obtained through shell diff --git a/staticlibs/testutils/hostdevice/com/android/testutils/Cleanup.kt b/staticlibs/testutils/hostdevice/com/android/testutils/Cleanup.kt index 3db357b565..9f282347f5 100644 --- a/staticlibs/testutils/hostdevice/com/android/testutils/Cleanup.kt +++ b/staticlibs/testutils/hostdevice/com/android/testutils/Cleanup.kt @@ -18,8 +18,8 @@ package com.android.testutils -import com.android.testutils.ExceptionUtils.ThrowingRunnable -import com.android.testutils.ExceptionUtils.ThrowingSupplier +import com.android.testutils.FunctionalUtils.ThrowingRunnable +import com.android.testutils.FunctionalUtils.ThrowingSupplier import javax.annotation.CheckReturnValue /** diff --git a/staticlibs/testutils/hostdevice/com/android/testutils/ExceptionUtils.java b/staticlibs/testutils/hostdevice/com/android/testutils/FunctionalUtils.java similarity index 74% rename from staticlibs/testutils/hostdevice/com/android/testutils/ExceptionUtils.java rename to staticlibs/testutils/hostdevice/com/android/testutils/FunctionalUtils.java index d3bda98cb0..da36e4de2b 100644 --- a/staticlibs/testutils/hostdevice/com/android/testutils/ExceptionUtils.java +++ b/staticlibs/testutils/hostdevice/com/android/testutils/FunctionalUtils.java @@ -21,7 +21,7 @@ import java.util.function.Supplier; /** * A class grouping some utilities to deal with exceptions. */ -public class ExceptionUtils { +public class FunctionalUtils { /** * Like a Consumer, but declared to throw an exception. * @param @@ -79,4 +79,21 @@ public class ExceptionUtils { } }; } + + // Java has Function and BiFunction but nothing for higher-arity functions. + // Function3 is what Kotlin and Scala use (they also have higher-arity variants, with + // FunctionN taking N arguments, as the JVM does not have variadic formal parameters) + /** + * A function with three arguments. + * @param Type of the first argument + * @param Type of the second argument + * @param Type of the third argument + * @param Type of the return value + */ + public interface Function3 { + /** + * Apply the function to the arguments + */ + TResult apply(TArg1 a1, TArg2 a2, TArg3 a3); + } } diff --git a/staticlibs/testutils/hostdevice/com/android/testutils/MiscAsserts.kt b/staticlibs/testutils/hostdevice/com/android/testutils/MiscAsserts.kt index efd9402d8f..1883387c62 100644 --- a/staticlibs/testutils/hostdevice/com/android/testutils/MiscAsserts.kt +++ b/staticlibs/testutils/hostdevice/com/android/testutils/MiscAsserts.kt @@ -18,7 +18,7 @@ package com.android.testutils -import com.android.testutils.ExceptionUtils.ThrowingRunnable +import com.android.testutils.FunctionalUtils.ThrowingRunnable import java.lang.reflect.Modifier import kotlin.system.measureTimeMillis import kotlin.test.assertEquals