22
22
import co .paralleluniverse .strands .channels .Channels ;
23
23
import java .util .ArrayList ;
24
24
import java .util .Arrays ;
25
- import java .util .Collection ;
26
25
import java .util .Queue ;
27
26
import java .util .concurrent .ConcurrentLinkedQueue ;
28
27
import java .util .concurrent .atomic .AtomicBoolean ;
29
28
import static org .hamcrest .CoreMatchers .*;
30
29
import static org .junit .Assert .*;
31
30
import org .junit .Test ;
31
+ import rx .Observable ;
32
32
import rx .Observer ;
33
33
34
34
public class ChannelObservableTest {
35
- private static final int BUFFER_SIZE = 0 ;
36
- private static final Channels .OverflowPolicy OVERFLOW_POLICY = Channels .OverflowPolicy .BLOCK ;
37
-
38
35
@ Test
39
36
public void testObservableFromChannel () throws Exception {
40
- final Channel <String > c = Channels .newChannel (BUFFER_SIZE , OVERFLOW_POLICY );
37
+ final Channel <String > c = Channels .newChannel (0 );
38
+
39
+ System .out .println ("===== " + c );
41
40
42
41
final Queue <String > result = new ConcurrentLinkedQueue <String >();
43
42
final AtomicBoolean completed = new AtomicBoolean ();
44
-
45
- ChannelObservable .from (c ). subscribeOn ( NewFiberScheduler .getDefaultInstance ()).subscribe (new Observer <String >() {
43
+
44
+ ChannelObservable .from (c , NewFiberScheduler .getDefaultInstance ()).subscribe (new Observer <String >() {
46
45
@ Override
47
46
@ Suspendable
48
47
public void onNext (String t ) {
49
- // try {
48
+ try {
50
49
System .out .println ("GOT: " + t );
51
50
assertTrue (Strand .isCurrentFiber ());
52
- System .out .println ("GOT2: " + t );
53
- //Strand.sleep(100);
54
- System .out .println ("GOT3: " + t );
51
+ Strand .sleep (100 );
55
52
result .add (t );
56
- System .out .println ("GOT4: " + t );
57
- // } catch(InterruptedException e) {
58
- //
59
- // } catch (SuspendExecution e) {
60
- // System.err.println("WHA????? " + e);
61
- // throw new AssertionError(e);
62
- // }
53
+ } catch (InterruptedException e ) {
54
+ } catch (SuspendExecution e ) {
55
+ throw new AssertionError (e );
56
+ }
63
57
}
64
58
65
59
@ Override
@@ -69,18 +63,32 @@ public void onCompleted() {
69
63
70
64
@ Override
71
65
public void onError (Throwable e ) {
72
-
66
+
73
67
}
74
68
});
75
-
69
+
76
70
c .send ("a" );
77
71
c .send ("b" );
78
72
c .send ("c" );
79
73
c .close ();
80
-
74
+
81
75
Thread .sleep (500 );
82
-
76
+
83
77
assertThat (new ArrayList <String >(result ), equalTo (Arrays .asList ("a" , "b" , "c" )));
84
78
assertThat (completed .get (), is (true ));
85
79
}
80
+
81
+ @ Test
82
+ public void testObserverChannel () throws Exception {
83
+ final Channel <String > c = Channels .newChannel (10 ); // must use a buffer, otherwise will block on subscribe
84
+
85
+ System .out .println ("===== " + c );
86
+
87
+ Observable .from (Arrays .asList ("a" , "b" , "c" )).subscribe (ChannelObservable .to (c ));
88
+
89
+ assertThat (c .receive (), equalTo ("a" ));
90
+ assertThat (c .receive (), equalTo ("b" ));
91
+ assertThat (c .receive (), equalTo ("c" ));
92
+ assertThat (c .receive (), is (nullValue ()));
93
+ }
86
94
}
0 commit comments