15
15
*/
16
16
package rx .internal .operators ;
17
17
18
- import static org .junit .Assert .assertEquals ;
19
- import static org .junit .Assert .fail ;
18
+ import static org .junit .Assert .*;
20
19
21
- import java .util .ArrayList ;
22
- import java .util .List ;
20
+ import java .util .*;
23
21
import java .util .concurrent .TimeUnit ;
24
22
25
- import org .junit .Before ;
26
- import org .junit .Test ;
23
+ import org .junit .*;
27
24
25
+ import rx .*;
28
26
import rx .Observable ;
29
27
import rx .Observer ;
30
- import rx .Scheduler ;
31
- import rx .Subscriber ;
32
- import rx .functions .Action0 ;
33
- import rx .functions .Action1 ;
28
+ import rx .functions .*;
34
29
import rx .schedulers .TestScheduler ;
35
30
36
31
public class OperatorWindowWithTimeTest {
@@ -132,14 +127,14 @@ public void call() {
132
127
}, delay , TimeUnit .MILLISECONDS );
133
128
}
134
129
135
- private Action1 <Observable <String >> observeWindow (final List <String > list , final List <List <String >> lists ) {
136
- return new Action1 <Observable <String >>() {
130
+ private < T > Action1 <Observable <T >> observeWindow (final List <T > list , final List <List <T >> lists ) {
131
+ return new Action1 <Observable <T >>() {
137
132
@ Override
138
- public void call (Observable <String > stringObservable ) {
139
- stringObservable .subscribe (new Observer <String >() {
133
+ public void call (Observable <T > stringObservable ) {
134
+ stringObservable .subscribe (new Observer <T >() {
140
135
@ Override
141
136
public void onCompleted () {
142
- lists .add (new ArrayList <String >(list ));
137
+ lists .add (new ArrayList <T >(list ));
143
138
list .clear ();
144
139
}
145
140
@@ -149,11 +144,31 @@ public void onError(Throwable e) {
149
144
}
150
145
151
146
@ Override
152
- public void onNext (String args ) {
147
+ public void onNext (T args ) {
153
148
list .add (args );
154
149
}
155
150
});
156
151
}
157
152
};
158
153
}
159
- }
154
+ @ Test
155
+ public void testExactWindowSize () {
156
+ Observable <Observable <Integer >> source = Observable .range (1 , 10 ).window (1 , TimeUnit .MINUTES , 3 , scheduler );
157
+
158
+ final List <Integer > list = new ArrayList <Integer >();
159
+ final List <List <Integer >> lists = new ArrayList <List <Integer >>();
160
+
161
+ source .subscribe (observeWindow (list , lists ));
162
+
163
+ assertEquals (4 , lists .size ());
164
+ assertEquals (3 , lists .get (0 ).size ());
165
+ assertEquals (Arrays .asList (1 , 2 , 3 ), lists .get (0 ));
166
+ assertEquals (3 , lists .get (1 ).size ());
167
+ assertEquals (Arrays .asList (4 , 5 , 6 ), lists .get (1 ));
168
+ assertEquals (3 , lists .get (2 ).size ());
169
+ assertEquals (Arrays .asList (7 , 8 , 9 ), lists .get (2 ));
170
+ assertEquals (1 , lists .get (3 ).size ());
171
+ assertEquals (Arrays .asList (10 ), lists .get (3 ));
172
+ }
173
+
174
+ }
0 commit comments