blob: 6545efe9a69308b6ca23c5f37fe71445256030be [file] [log] [blame]
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));
}
}