package com.android.documentsui.testing; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import java.util.function.Consumer; /** * Helper class for testing async processes. */ public class LatchedConsumer<T> implements Consumer<T> { private T value; private CountDownLatch latch; public LatchedConsumer(int expectedCount) { latch = new CountDownLatch(expectedCount); } public CountDownLatch getLatch() { return latch; } public T getValue() { return value; } @Override public void accept(T value) { this.value = value; latch.countDown(); } public void assertNotCalled(long timeout, TimeUnit unit) throws InterruptedException { assertFalse(latch.await(timeout, unit)); } public void assertCalled(long timeout, TimeUnit unit) throws InterruptedException { assertTrue(latch.await(timeout, unit)); } }