package com.github.davidmoten.rx.internal.operators; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.util.Arrays; import java.util.List; import org.junit.FixMethodOrder; import org.junit.Test; import org.junit.runners.MethodSorters; import com.github.davidmoten.rx.Transformers; import rx.Observable; import rx.observers.TestSubscriber; @FixMethodOrder(MethodSorters.NAME_ASCENDING) public class OperatorWindowMinMaxTest { @Test public void testEmpty() { boolean empty = Observable.<Integer> empty().compose(Transformers.<Integer> windowMin(5)) .isEmpty().toBlocking().single(); assertTrue(empty); } @Test public void testIncreasing() { List<Integer> list = Observable.just(1, 2, 3, 4) .compose(Transformers.<Integer> windowMin(2)).toList().toBlocking().single(); assertEquals(Arrays.asList(1, 2, 3), list); } @Test public void testDecreasing() { List<Integer> list = Observable.just(4, 3, 2, 1) .compose(Transformers.<Integer> windowMin(2)).toList().toBlocking().single(); assertEquals(Arrays.asList(3, 2, 1), list); } @Test public void testWindowSizeBiggerThanAvailableProducesEmptyList() { List<Integer> list = Observable.just(4, 3, 2, 1) .compose(Transformers.<Integer> windowMin(10)).toList().toBlocking().single(); assertTrue(list.isEmpty()); } @Test public void testWindowMax() { List<Integer> list = Observable.just(4, 3, 2, 1) .compose(Transformers.<Integer> windowMax(2)).toList().toBlocking().single(); assertEquals(Arrays.asList(4, 3, 2), list); } @Test(expected = IllegalArgumentException.class) public void testWindowSizeNegativeThrowsIAE() { Observable.just(1).compose(Transformers.<Integer> windowMax(-2)); } @Test(expected = IllegalArgumentException.class) public void testWindowSizeZeroThrowsIAE() { Observable.just(1).compose(Transformers.<Integer> windowMax(0)); } @Test public void testErrorPropagated() { TestSubscriber<Integer> ts = TestSubscriber.create(); RuntimeException r = new RuntimeException(); Observable.<Integer> error(r).compose(Transformers.<Integer> windowMax(2)).subscribe(ts); ts.assertError(r); } }