Skip to content

Instantly share code, notes, and snippets.

@gjesse
Created April 21, 2015 22:08
Show Gist options
  • Save gjesse/4cc47faec0689f5389f1 to your computer and use it in GitHub Desktop.
Save gjesse/4cc47faec0689f5389f1 to your computer and use it in GitHub Desktop.
@Test
public void testWindowClosingQuickly() {
Observable<Integer> event = Observable.just(1, 2);
Observable<Integer> closing = event.share().throttleLast(30, TimeUnit.MILLISECONDS);
List<Integer> events = event
.window(closing).flatMap(window -> window.toList()).toBlocking().first();
assertEquals(2, events.size());
assertEquals(1, events.get(0).intValue());
assertEquals(2, events.get(1).intValue());
}
@Test
public void testWindowClosingWithDelay() {
Observable<Integer> event = Observable.just(1).mergeWith(Observable.just(2).delay(40, TimeUnit.MILLISECONDS)); // stay open for at least one window
Observable<Integer> closing = event.share().throttleLast(30, TimeUnit.MILLISECONDS);
BlockingObservable<List<Integer>> events = event
.window(closing).flatMap(window -> window.toList()).toBlocking();
List<Integer> first = events.first();
List<Integer> last = events.last();
assertEquals(1, Iterables.getOnlyElement(first).intValue());
assertEquals(2 ,Iterables.getOnlyElement(last).intValue());
}
@Test
public void testBufferClosingQuickly() {
Observable<Integer> event = Observable.just(1, 2);
Observable<Integer> closing = event.share().throttleLast(30, TimeUnit.MILLISECONDS);
List<Integer> events = event
.buffer(closing).toBlocking().first();
assertEquals(2, events.size());
assertEquals(1, events.get(0).intValue());
assertEquals(2, events.get(1).intValue());
}
@Test
public void testBufferClosingWithDelay() {
Observable<Integer> event = Observable.just(1).mergeWith(Observable.just(2).delay(40, TimeUnit.MILLISECONDS)); // stay open for at least one window
Observable<Integer> closing = event.share().throttleLast(30, TimeUnit.MILLISECONDS);
BlockingObservable<List<Integer>> events = event
.buffer(closing).toBlocking();
List<Integer> first = events.first();
List<Integer> last = events.last();
assertEquals(1, Iterables.getOnlyElement(first).intValue());
assertEquals(2 ,Iterables.getOnlyElement(last).intValue());
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment