Skip to content

Commit 3ac0d0b

Browse files
author
jmhofer
committed
Added a unit test against the sample operator
1 parent 41793e3 commit 3ac0d0b

File tree

1 file changed

+76
-4
lines changed

1 file changed

+76
-4
lines changed

rxjava-core/src/main/java/rx/operators/OperationSample.java

Lines changed: 76 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,23 +15,24 @@
1515
*/
1616
package rx.operators;
1717

18-
import static org.junit.Assert.*;
1918
import static org.mockito.Matchers.*;
2019
import static org.mockito.Mockito.*;
21-
import static rx.operators.Tester.UnitTest.*;
2220

2321
import java.util.concurrent.Executors;
2422
import java.util.concurrent.TimeUnit;
2523
import java.util.concurrent.atomic.AtomicBoolean;
2624
import java.util.concurrent.atomic.AtomicReference;
2725

26+
import org.junit.Before;
2827
import org.junit.Test;
28+
import org.mockito.InOrder;
2929

3030
import rx.Observable;
3131
import rx.Observer;
3232
import rx.Scheduler;
3333
import rx.Subscription;
3434
import rx.concurrency.Schedulers;
35+
import rx.concurrency.TestScheduler;
3536
import rx.subscriptions.Subscriptions;
3637
import rx.util.functions.Action0;
3738
import rx.util.functions.Func1;
@@ -78,7 +79,7 @@ public Subscription call(final Observer<T> observer) {
7879
public void onCompleted() { /* the clock never completes */ }
7980

8081
@Override
81-
public void onError(Exception e) { /* the clock has no errors */ }
82+
public void onError(@SuppressWarnings("unused") Exception e) { /* the clock has no errors */ }
8283

8384
@Override
8485
public void onNext(@SuppressWarnings("unused") Long tick) {
@@ -119,6 +120,77 @@ public void call() {
119120
}
120121

121122
public static class UnitTest {
122-
// TODO
123+
private TestScheduler scheduler;
124+
private Observer<Long> observer;
125+
126+
@Before
127+
@SuppressWarnings("unchecked") // due to mocking
128+
public void before() {
129+
scheduler = new TestScheduler();
130+
observer = mock(Observer.class);
131+
}
132+
133+
@Test
134+
public void testSample() {
135+
Observable<Long> source = Observable.create(new Func1<Observer<Long>, Subscription>() {
136+
@Override
137+
public Subscription call(final Observer<Long> observer1) {
138+
scheduler.schedule(new Action0() {
139+
@Override
140+
public void call() {
141+
observer1.onNext(1L);
142+
}
143+
}, 1, TimeUnit.SECONDS);
144+
scheduler.schedule(new Action0() {
145+
@Override
146+
public void call() {
147+
observer1.onNext(2L);
148+
}
149+
}, 2, TimeUnit.SECONDS);
150+
scheduler.schedule(new Action0() {
151+
@Override
152+
public void call() {
153+
observer1.onCompleted();
154+
}
155+
}, 3, TimeUnit.SECONDS);
156+
157+
return Subscriptions.empty();
158+
}
159+
});
160+
161+
Observable<Long> sampled = Observable.create(OperationSample.sample(source, 400L, TimeUnit.MILLISECONDS, scheduler));
162+
sampled.subscribe(observer);
163+
164+
InOrder inOrder = inOrder(observer);
165+
166+
scheduler.advanceTimeTo(800L, TimeUnit.MILLISECONDS);
167+
verify(observer, never()).onNext(any(Long.class));
168+
verify(observer, never()).onCompleted();
169+
verify(observer, never()).onError(any(Exception.class));
170+
171+
scheduler.advanceTimeTo(1200L, TimeUnit.MILLISECONDS);
172+
inOrder.verify(observer, times(1)).onNext(1L);
173+
verify(observer, never()).onNext(2L);
174+
verify(observer, never()).onCompleted();
175+
verify(observer, never()).onError(any(Exception.class));
176+
177+
scheduler.advanceTimeTo(1600L, TimeUnit.MILLISECONDS);
178+
inOrder.verify(observer, times(1)).onNext(1L);
179+
verify(observer, never()).onNext(2L);
180+
verify(observer, never()).onCompleted();
181+
verify(observer, never()).onError(any(Exception.class));
182+
183+
scheduler.advanceTimeTo(2000L, TimeUnit.MILLISECONDS);
184+
inOrder.verify(observer, never()).onNext(1L);
185+
inOrder.verify(observer, times(1)).onNext(2L);
186+
verify(observer, never()).onCompleted();
187+
verify(observer, never()).onError(any(Exception.class));
188+
189+
scheduler.advanceTimeTo(3000L, TimeUnit.MILLISECONDS);
190+
inOrder.verify(observer, never()).onNext(1L);
191+
inOrder.verify(observer, times(2)).onNext(2L);
192+
verify(observer, times(1)).onCompleted();
193+
verify(observer, never()).onError(any(Exception.class));
194+
}
123195
}
124196
}

0 commit comments

Comments
 (0)