View Javadoc
1   package com.github.davidmoten.rx.testing;
2   
3   import java.util.List;
4   import java.util.concurrent.TimeUnit;
5   
6   import rx.Observable;
7   import rx.Producer;
8   import rx.Subscriber;
9   import rx.functions.Action0;
10  import rx.functions.Func1;
11  import rx.observers.TestSubscriber;
12  
13  public class TestSubscriber2<T> extends Subscriber<T> {
14  
15      private final TestSubscriber<T> ts;
16  
17      private TestSubscriber2(TestSubscriber<T> ts) {
18          this.ts = ts;
19      }
20  
21      public static <T> TestSubscriber2<T> createWithRequest(long initialRequest) {
22          TestSubscriber<T> t1 = new TestSubscriber<T>(initialRequest);
23          TestSubscriber2<T> t2 = new TestSubscriber2<T>(t1);
24          t2.add(t1);
25          return t2;
26      }
27  
28      static <T> Func1<Observable<T>, TestSubscriber2<T>> test() {
29          return testWithRequest(Long.MAX_VALUE);
30      }
31  
32      static <T> Func1<Observable<T>, TestSubscriber2<T>> testWithRequest(final long initialRequest) {
33          return new Func1<Observable<T>, TestSubscriber2<T>>() {
34  
35              @Override
36              public TestSubscriber2<T> call(Observable<T> o) {
37                  TestSubscriber2<T> ts2 = createWithRequest(initialRequest);
38                  o.subscribe(ts2.ts);
39                  return ts2;
40              }
41  
42          };
43      }
44  
45      public void onStart() {
46          ts.onStart();
47      }
48  
49      public void onCompleted() {
50          ts.onCompleted();
51      }
52  
53      public void setProducer(Producer p) {
54          ts.setProducer(p);
55      }
56  
57      public final int getCompletions() {
58          return ts.getCompletions();
59      }
60  
61      public void onError(Throwable e) {
62          ts.onError(e);
63      }
64  
65      public List<Throwable> getOnErrorEvents() {
66          return ts.getOnErrorEvents();
67      }
68  
69      public void onNext(T t) {
70          ts.onNext(t);
71      }
72  
73      public String toString() {
74          return ts.toString();
75      }
76  
77      public final int getValueCount() {
78          return ts.getValueCount();
79      }
80  
81      public TestSubscriber2<T> requestMore(long n) {
82          ts.requestMore(n);
83          return this;
84      }
85  
86      public List<T> getOnNextEvents() {
87          return ts.getOnNextEvents();
88      }
89  
90      public TestSubscriber2<T> assertReceivedOnNext(List<T> items) {
91          ts.assertReceivedOnNext(items);
92          return this;
93      }
94  
95      public final boolean awaitValueCount(int expected, long timeout, TimeUnit unit) {
96          return ts.awaitValueCount(expected, timeout, unit);
97      }
98  
99      public TestSubscriber2<T> assertTerminalEvent() {
100         ts.assertTerminalEvent();
101         return this;
102     }
103 
104     public TestSubscriber2<T> assertUnsubscribed() {
105         ts.assertUnsubscribed();
106         return this;
107     }
108 
109     public TestSubscriber2<T> assertNoErrors() {
110         ts.assertNoErrors();
111         return this;
112     }
113 
114     public TestSubscriber2<T> awaitTerminalEvent() {
115         ts.awaitTerminalEvent();
116         return this;
117     }
118 
119     public TestSubscriber2<T> awaitTerminalEvent(long timeout, TimeUnit unit) {
120         ts.awaitTerminalEvent(timeout, unit);
121         return this;
122     }
123 
124     public TestSubscriber2<T> awaitTerminalEventAndUnsubscribeOnTimeout(long timeout,
125             TimeUnit unit) {
126         ts.awaitTerminalEventAndUnsubscribeOnTimeout(timeout, unit);
127         return this;
128     }
129 
130     public Thread getLastSeenThread() {
131         return ts.getLastSeenThread();
132     }
133 
134     public TestSubscriber2<T> assertCompleted() {
135         ts.assertCompleted();
136         return this;
137     }
138 
139     public TestSubscriber2<T> assertNotCompleted() {
140         ts.assertNotCompleted();
141         return this;
142     }
143 
144     public TestSubscriber2<T> assertError(Class<? extends Throwable> clazz) {
145         ts.assertError(clazz);
146         return this;
147     }
148 
149     public TestSubscriber2<T> assertError(Throwable throwable) {
150         ts.assertError(throwable);
151         return this;
152     }
153 
154     public TestSubscriber2<T> assertNoTerminalEvent() {
155         ts.assertNoTerminalEvent();
156         return this;
157     }
158 
159     public TestSubscriber2<T> assertNoValues() {
160         ts.assertNoValues();
161         return this;
162     }
163 
164     public TestSubscriber2<T> assertValueCount(int count) {
165         ts.assertValueCount(count);
166         return this;
167     }
168 
169     public TestSubscriber2<T> assertValues(T... values) {
170         ts.assertValues(values);
171         return this;
172     }
173 
174     public TestSubscriber2<T> assertValue(T value) {
175         ts.assertValue(value);
176         return this;
177     }
178 
179     public final TestSubscriber2<T> assertValuesAndClear(T expectedFirstValue,
180             T... expectedRestValues) {
181         ts.assertValuesAndClear(expectedFirstValue, expectedRestValues);
182         return this;
183     }
184 
185     public final TestSubscriber2<T> perform(Action0 action) {
186         action.call();
187         return this;
188     }
189 
190 }