package com.netflix.eventbus.rx;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import org.junit.Assert;
import org.junit.Test;
import rx.Subscription;
import rx.functions.Action0;
import rx.functions.Action1;
import com.netflix.eventbus.impl.EventBusImpl;
import com.netflix.eventbus.spi.EventBus;
public class RxEventBusTest {
@Test
public void testStream() throws InterruptedException {
EventBus eventBus = new EventBusImpl();
RxEventBus rxEventBus = new RxEventBus(eventBus);
final CountDownLatch completion = new CountDownLatch(1);
final CountDownLatch counter = new CountDownLatch(10);
Subscription sub = rxEventBus.asObservable(Long.class)
.doOnCompleted(new Action0() {
@Override
public void call() {
System.out.println("Done");
completion.countDown();
}
})
.subscribe(new Action1<Long>() {
@Override
public void call(Long t1) {
System.out.println(t1);
counter.countDown();
}
});
for (long i = 0; i < 10; i++) {
eventBus.publish(i);
}
Assert.assertTrue(counter.await(1, TimeUnit.SECONDS));
sub.unsubscribe();
Assert.assertTrue(completion.await(1, TimeUnit.SECONDS));
}
}