test_class.file: rxjava/src/test/java/io/reactivex/internal/operators/observable/ObservableCacheTest.java
test_class.identifier: ObservableCacheTest
test_case.body: @Test
      public void testAsyncComeAndGo() {
          Observable<Long> source = Observable.interval(1, 1, TimeUnit.MILLISECONDS)
                  .take(1000)
                  .subscribeOn(Schedulers.io());
          ObservableCache<Long> cached = (ObservableCache<Long>)ObservableCache.from(source);
  
          Observable<Long> output = cached.observeOn(Schedulers.computation());
  
          List<TestObserver<Long>> list = new ArrayList<TestObserver<Long>>(100);
          for (int i = 0; i < 100; i++) {
              TestObserver<Long> to = new TestObserver<Long>();
              list.add(to);
              output.skip(i * 10).take(10).subscribe(to);
          }
  
          List<Long> expected = new ArrayList<Long>();
          for (int i = 0; i < 10; i++) {
              expected.add((long)(i - 10));
          }
          int j = 0;
          for (TestObserver<Long> to : list) {
              to.awaitTerminalEvent(3, TimeUnit.SECONDS);
              to.assertNoErrors();
              to.assertComplete();
  
              for (int i = j * 10; i < j * 10 + 10; i++) {
                  expected.set(i - j * 10, (long)i);
              }
  
              to.assertValueSequence(expected);
  
              j++;
          }
      }
test_case.class_method_signature: ObservableCacheTest.testAsyncComeAndGo()
test_case.full_signature: @Test public void testAsyncComeAndGo()
test_case.identifier: testAsyncComeAndGo
test_case.invocations: subscribeOn take interval io from observeOn computation add subscribe take skip add awaitTerminalEvent assertNoErrors assertComplete set assertValueSequence
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testAsyncComeAndGo()
focal_class.declarator: state
focal_class.modifier: final
focal_class.original_string: final CacheState<T> state;
focal_class.type: CacheState<T>
focal_class.var_name: state
focal_class.declarator: once
focal_class.modifier: final
focal_class.original_string: final AtomicBoolean once;
focal_class.type: AtomicBoolean
focal_class.var_name: once
focal_class.file: rxjava/src/main/java/io/reactivex/internal/operators/observable/ObservableCache.java
focal_class.identifier: ObservableCache
focal_class.class_method_signature: ObservableCache.from(Observable<T> source)
focal_class.full_signature: public static Observable<T> from(Observable<T> source)
focal_class.identifier: from
focal_class.modifiers: public static
focal_class.parameters: (Observable<T> source)
focal_class.return: Observable<T>
focal_class.signature: Observable<T> from(Observable<T> source)
focal_class.class_method_signature: ObservableCache.from(Observable<T> source, int capacityHint)
focal_class.full_signature: public static Observable<T> from(Observable<T> source, int capacityHint)
focal_class.identifier: from
focal_class.modifiers: public static
focal_class.parameters: (Observable<T> source, int capacityHint)
focal_class.return: Observable<T>
focal_class.signature: Observable<T> from(Observable<T> source, int capacityHint)
focal_class.class_method_signature: ObservableCache.ObservableCache(Observable<T> source, CacheState<T> state)
focal_class.full_signature: private  ObservableCache(Observable<T> source, CacheState<T> state)
focal_class.identifier: ObservableCache
focal_class.modifiers: private
focal_class.parameters: (Observable<T> source, CacheState<T> state)
focal_class.signature:  ObservableCache(Observable<T> source, CacheState<T> state)
focal_class.class_method_signature: ObservableCache.subscribeActual(Observer<? super T> t)
focal_class.full_signature: @Override protected void subscribeActual(Observer<? super T> t)
focal_class.identifier: subscribeActual
focal_class.modifiers: @Override protected
focal_class.parameters: (Observer<? super T> t)
focal_class.return: void
focal_class.signature: void subscribeActual(Observer<? super T> t)
focal_class.class_method_signature: ObservableCache.isConnected()
focal_class.full_signature:  boolean isConnected()
focal_class.identifier: isConnected
focal_class.parameters: ()
focal_class.return: boolean
focal_class.signature: boolean isConnected()
focal_class.class_method_signature: ObservableCache.hasObservers()
focal_class.full_signature:  boolean hasObservers()
focal_class.identifier: hasObservers
focal_class.parameters: ()
focal_class.return: boolean
focal_class.signature: boolean hasObservers()
focal_class.class_method_signature: ObservableCache.cachedEventCount()
focal_class.full_signature:  int cachedEventCount()
focal_class.identifier: cachedEventCount
focal_class.parameters: ()
focal_class.return: int
focal_class.signature: int cachedEventCount()
focal_class.superclass: extends AbstractObservableWithUpstream<T, T>
focal_method.body: public static <T> Observable<T> from(Observable<T> source) {
          return from(source, 16);
      }
focal_method.class_method_signature: ObservableCache.from(Observable<T> source)
focal_method.full_signature: public static Observable<T> from(Observable<T> source)
focal_method.identifier: from
focal_method.invocations: from
focal_method.modifiers: public static
focal_method.parameters: (Observable<T> source)
focal_method.return: Observable<T>
focal_method.signature: Observable<T> from(Observable<T> source)