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

Commit bbe19e5e authored by Chalard Jean's avatar Chalard Jean Committed by Gerrit Code Review
Browse files

Merge "Upgrade and reinforce ThrowingConsumer"

parents 6c22b3fd 4e9dbbfa
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) {