|
15 | 15 | */
|
16 | 16 | package rx;
|
17 | 17 |
|
| 18 | +import static org.junit.Assert.assertEquals; |
| 19 | + |
18 | 20 | import java.util.ArrayList;
|
19 | 21 | import java.util.Arrays;
|
20 | 22 | import java.util.LinkedHashSet;
|
|
26 | 28 | import rx.Observable.Transformer;
|
27 | 29 | import rx.functions.Func1;
|
28 | 30 | import rx.functions.Func2;
|
| 31 | +import rx.observables.GroupedObservable; |
| 32 | +import rx.observers.TestSubscriber; |
29 | 33 |
|
30 | 34 | /**
|
31 | 35 | * Test super/extends of generics.
|
@@ -63,7 +67,45 @@ public Integer call(Media t1, Media t2) {
|
63 | 67 | o2.toSortedList(SORT_FUNCTION);
|
64 | 68 | }
|
65 | 69 |
|
66 |
| - |
| 70 | + @Test |
| 71 | + public void testGroupByCompose() { |
| 72 | + Observable<Movie> movies = Observable.just(new HorrorMovie(), new ActionMovie(), new Movie()); |
| 73 | + TestSubscriber<String> ts = new TestSubscriber<String>(); |
| 74 | + movies.groupBy(new Func1<Movie, Class<? extends Movie>>() { |
| 75 | + |
| 76 | + @Override |
| 77 | + public Class<? extends Movie> call(Movie m) { |
| 78 | + return m.getClass(); |
| 79 | + } |
| 80 | + |
| 81 | + }).flatMap(new Func1<GroupedObservable<Class<? extends Movie>, Movie>, Observable<String>>() { |
| 82 | + |
| 83 | + @Override |
| 84 | + public Observable<String> call(GroupedObservable<Class<? extends Movie>, Movie> g) { |
| 85 | + return g.compose(new Transformer<Movie, Movie>() { |
| 86 | + |
| 87 | + @Override |
| 88 | + public Observable<? extends Movie> call(Observable<Movie> m) { |
| 89 | + return m.concatWith(Observable.just(new ActionMovie())); |
| 90 | + } |
| 91 | + |
| 92 | + }).map(new Func1<Movie, String>() { |
| 93 | + |
| 94 | + @Override |
| 95 | + public String call(Movie m) { |
| 96 | + return m.toString(); |
| 97 | + } |
| 98 | + |
| 99 | + }); |
| 100 | + } |
| 101 | + |
| 102 | + }).subscribe(ts); |
| 103 | + ts.assertTerminalEvent(); |
| 104 | + ts.assertNoErrors(); |
| 105 | + // System.out.println(ts.getOnNextEvents()); |
| 106 | + assertEquals(6, ts.getOnNextEvents().size()); |
| 107 | + } |
| 108 | + |
67 | 109 | @Test
|
68 | 110 | public void testCovarianceOfCompose() {
|
69 | 111 | Observable<HorrorMovie> movie = Observable.just(new HorrorMovie());
|
|
0 commit comments