24
24
25
25
import java .util .Iterator ;
26
26
import java .util .concurrent .LinkedBlockingDeque ;
27
+ import java .util .concurrent .atomic .AtomicInteger ;
27
28
28
29
import static org .mockito .Matchers .any ;
29
30
import static org .mockito .Mockito .*;
@@ -135,6 +136,39 @@ public void testTakeLast2() {
135
136
verify (aObserver , times (1 )).onCompleted ();
136
137
}
137
138
139
+ @ Test
140
+ public void testTakeLastOrdering () {
141
+ Observable <String > w = Observable .toObservable ("one" , "two" , "three" );
142
+ Observable <String > take = Observable .create (takeLast (w , 2 ));
143
+
144
+ @ SuppressWarnings ("unchecked" )
145
+ Observer <String > aObserver = mock (Observer .class );
146
+ take .subscribe (countingWrapper (aObserver ));
147
+ verify (aObserver , times (1 )).onNext ("two_1" );
148
+ verify (aObserver , times (1 )).onNext ("three_2" );
149
+ }
150
+
151
+
152
+ private static Observer <String > countingWrapper (final Observer <String > underlying ) {
153
+ return new Observer <String >() {
154
+ private final AtomicInteger counter = new AtomicInteger ();
155
+ @ Override
156
+ public void onCompleted () {
157
+ underlying .onCompleted ();
158
+ }
159
+
160
+ @ Override
161
+ public void onError (Exception e ) {
162
+ underlying .onCompleted ();
163
+ }
164
+
165
+ @ Override
166
+ public void onNext (String args ) {
167
+ underlying .onNext (args + "_" + counter .incrementAndGet ());
168
+ }
169
+ };
170
+ }
171
+
138
172
}
139
173
140
174
}
0 commit comments