@@ -40,7 +40,6 @@ public static <T> Func1<Observer<List<T>>, Subscription> toObservableList(Observ
40
40
private static class ToObservableList <T > implements Func1 <Observer <List <T >>, Subscription > {
41
41
42
42
private final Observable <T > that ;
43
- final ConcurrentLinkedQueue <T > list = new ConcurrentLinkedQueue <T >();
44
43
45
44
public ToObservableList (Observable <T > that ) {
46
45
this .that = that ;
@@ -49,6 +48,7 @@ public ToObservableList(Observable<T> that) {
49
48
public Subscription call (final Observer <List <T >> observer ) {
50
49
51
50
return that .subscribe (new Observer <T >() {
51
+ final ConcurrentLinkedQueue <T > list = new ConcurrentLinkedQueue <T >();
52
52
public void onNext (T value ) {
53
53
// onNext can be concurrently executed so list must be thread-safe
54
54
list .add (value );
@@ -94,5 +94,28 @@ public void testList() {
94
94
verify (aObserver , Mockito .never ()).onError (any (Exception .class ));
95
95
verify (aObserver , times (1 )).onCompleted ();
96
96
}
97
+
98
+ @ Test
99
+ public void testListMultipleObservers () {
100
+ Observable <String > w = Observable .toObservable ("one" , "two" , "three" );
101
+ Observable <List <String >> observable = Observable .create (toObservableList (w ));
102
+
103
+ @ SuppressWarnings ("unchecked" )
104
+ Observer <List <String >> o1 = mock (Observer .class );
105
+ observable .subscribe (o1 );
106
+
107
+ Observer <List <String >> o2 = mock (Observer .class );
108
+ observable .subscribe (o2 );
109
+
110
+ List <String > expected = Arrays .asList ("one" , "two" , "three" );
111
+
112
+ verify (o1 , times (1 )).onNext (expected );
113
+ verify (o1 , Mockito .never ()).onError (any (Exception .class ));
114
+ verify (o1 , times (1 )).onCompleted ();
115
+
116
+ verify (o2 , times (1 )).onNext (expected );
117
+ verify (o2 , Mockito .never ()).onError (any (Exception .class ));
118
+ verify (o2 , times (1 )).onCompleted ();
119
+ }
97
120
}
98
121
}
0 commit comments