Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c9b602d7 authored by Chalard Jean's avatar Chalard Jean Committed by android-build-merger
Browse files

Upgrade and reinforce ThrowingConsumer

am: 74c651f8

Change-Id: Id3463354e234bc42131b4da7264f43926e4afb6c
parents 1c27e603 74c651f8
Loading
Loading
Loading
Loading
+67 −0
Original line number Diff line number Diff line
@@ -16,11 +16,52 @@

package com.android.testutils;

import java.util.function.Supplier;

public class ExceptionUtils {
    /**
 * Like a consumer, but throws an exception.
     * Like a Consumer, but declared to throw an exception.
     * @param <T>
     */
    @FunctionalInterface
    public interface ThrowingConsumer<T> {
        void accept(T t) throws Exception;
    }

    /**
     * Like a Supplier, but declared to throw an exception.
     * @param <T>
     */
    @FunctionalInterface
    public interface ThrowingSupplier<T> {
        T get() throws Exception;
    }

    /**
     * Like a Runnable, but declared to throw an exception.
     */
    @FunctionalInterface
    public interface ThrowingRunnable {
        void run() throws Exception;
    }


    public static <T> Supplier<T> ignoreExceptions(ThrowingSupplier<T> func) {
        return () -> {
            try {
                return func.get();
            } catch (Exception e) {
                return null;
            }
        };
    }

    public static Runnable ignoreExceptions(ThrowingRunnable r) {
        return () -> {
            try {
                r.run();
            } catch (Exception e) {
            }
        };
    }
}
+6 −6
Original line number Diff line number Diff line
@@ -27,16 +27,16 @@ import kotlin.test.assertTrue
private const val TAG = "Connectivity unit test"

fun <T> assertEmpty(ts: Array<T>) = ts.size.let { len ->
    assertEquals(0, len, "Expected empty array, but length was ${len}")
    assertEquals(0, len, "Expected empty array, but length was $len")
}

fun <T> assertLength(expected: Int, got: Array<T>) = got.size.let { len ->
    assertEquals(expected, len, "Expected array of length ${expected}, but was ${len} for ${got}")
    assertEquals(expected, len, "Expected array of length $expected, but was $len for $got")
}

// Bridge method to help write this in Java. If you're writing Kotlin, consider using native
// kotlin.test.assertFailsWith instead, as that method is reified and inlined.
fun <T: Exception> assertThrows(expected: Class<T>, block: Runnable): T {
fun <T : Exception> assertThrows(expected: Class<T>, block: ExceptionUtils.ThrowingRunnable): T {
    return assertFailsWith(expected.kotlin) { block.run() }
}

@@ -51,13 +51,13 @@ fun <T> assertNotEqualEitherWay(o1: T, o2: T) {
}

fun assertStringContains(got: String, want: String) {
    assertTrue(got.contains(want), "${got} did not contain \"${want}\"")
    assertTrue(got.contains(want), "$got did not contain \"${want}\"")
}

fun assertContainsExactly(actual: IntArray, vararg expected: Int) {
    // IntArray#sorted() returns a list, so it's fine to test with equals()
    assertEquals(actual.sorted(), expected.sorted(),
            "${actual} does not contain exactly ${expected}")
            "$actual does not contain exactly $expected")
}

fun <T> assertContainsAll(list: Collection<T>, vararg elems: T) {
@@ -65,7 +65,7 @@ fun <T> assertContainsAll(list: Collection<T>, vararg elems: T) {
}

fun <T> assertContainsAll(list: Collection<T>, elems: Collection<T>) {
    elems.forEach { assertTrue(list.contains(it), "${it} not in list") }
    elems.forEach { assertTrue(list.contains(it), "$it not in list") }
}

fun assertRunsInAtMost(descr: String, timeLimit: Long, fn: Runnable) {