package com.github.davidmoten.rx.internal.operators;
import static org.junit.Assert.assertEquals;
import java.util.concurrent.atomic.AtomicInteger;
import org.junit.Test;
import com.github.davidmoten.rx.Actions;
import com.github.davidmoten.rx.Obs;
import com.github.davidmoten.rx.observables.CachedObservable;
import rx.Observable;
public class OnSubscribeCacheResetableTest {
@Test
public void test() {
final AtomicInteger completedCount = new AtomicInteger();
final AtomicInteger emissionCount = new AtomicInteger();
CachedObservable<Integer> cached = Obs
.cache(Observable.just(1).doOnCompleted(Actions.increment0(completedCount)));
Observable<Integer> o = cached.doOnNext(Actions.increment1(emissionCount));
o.subscribe();
assertEquals(1, completedCount.get());
assertEquals(1, emissionCount.get());
o.subscribe();
assertEquals(1, completedCount.get());
assertEquals(2, emissionCount.get());
cached.reset();
o.subscribe();
assertEquals(2, completedCount.get());
assertEquals(3, emissionCount.get());
}
}