• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #include "rxcpp/rx.hpp"
2 
3 #include "rxcpp/rx-test.hpp"
4 #include "catch.hpp"
5 
6 SCENARIO("Create sample"){
7     printf("//! [Create sample]\n");
8     auto ints = rxcpp::observable<>::create<int>(
__anon37f8ac850102(rxcpp::subscriber<int> s)9         [](rxcpp::subscriber<int> s){
10             s.on_next(1);
11             s.on_next(2);
12             s.on_completed();
13     });
14 
15     ints.
16         subscribe(
__anon37f8ac850202(int v)17             [](int v){printf("OnNext: %d\n", v);},
__anon37f8ac850302()18             [](){printf("OnCompleted\n");});
19     printf("//! [Create sample]\n");
20 }
21 
22 SCENARIO("Create bad code"){
23     printf("//! [Create bad code]\n");
24     auto subscription = rxcpp::composite_subscription();
25     auto subscriber = rxcpp::make_subscriber<int>(
26         subscription,
__anon37f8ac850402(int v)27         [&](int v){
28             printf("OnNext: %d\n", v);
29             if (v == 2)
30                 subscription.unsubscribe();
31         },
__anon37f8ac850502()32         [](){
33             printf("OnCompleted\n");
34         });
35     rxcpp::observable<>::create<int>(
__anon37f8ac850602(rxcpp::subscriber<int> s)36         [](rxcpp::subscriber<int> s){
37             for (int i = 0; i < 5; ++i) {
38                 s.on_next(i);
39                 printf("Just sent: OnNext(%d)\n", i);
40             }
41             s.on_completed();
42             printf("Just sent: OnCompleted()\n");
43     }).subscribe(subscriber);
44     printf("//! [Create bad code]\n");
45 }
46 
47 SCENARIO("Create good code"){
48     printf("//! [Create good code]\n");
49     auto subscription = rxcpp::composite_subscription();
50     auto subscriber = rxcpp::make_subscriber<int>(
51         subscription,
__anon37f8ac850702(int v)52         [&](int v){
53             printf("OnNext: %d\n", v);
54             if (v == 2)
55                 subscription.unsubscribe();
56         },
__anon37f8ac850802()57         [](){
58             printf("OnCompleted\n");
59         });
60     rxcpp::observable<>::create<int>(
__anon37f8ac850902(rxcpp::subscriber<int> s)61         [](rxcpp::subscriber<int> s){
62             for (int i = 0; i < 5; ++i) {
63                 if (!s.is_subscribed()) // Stop emitting if nobody is listening
64                     break;
65                 s.on_next(i);
66                 printf("Just sent: OnNext(%d)\n", i);
67             }
68             s.on_completed();
69             printf("Just sent: OnCompleted()\n");
70     }).subscribe(subscriber);
71     printf("//! [Create good code]\n");
72 }
73 
74 SCENARIO("Create great code"){
75     printf("//! [Create great code]\n");
76     auto ints = rxcpp::observable<>::create<int>(
__anon37f8ac850a02(rxcpp::subscriber<int> s)77         [](rxcpp::subscriber<int> s){
78             for (int i = 0; i < 5; ++i) {
79                 if (!s.is_subscribed()) // Stop emitting if nobody is listening
80                     break;
81                 s.on_next(i);
82                 printf("Just sent: OnNext(%d)\n", i);
83             }
84             s.on_completed();
85             printf("Just sent: OnCompleted()\n");
86     });
87     ints.
88         take(2).
89         subscribe(
__anon37f8ac850b02(int v)90             [](int v){
91                 printf("OnNext: %d\n", v);
92             },
__anon37f8ac850c02(rxcpp::util::error_ptr ep)93             [](rxcpp::util::error_ptr ep){
94                 printf("OnError: %s\n", rxcpp::util::what(ep).c_str());
95             },
__anon37f8ac850d02()96             [](){
97                 printf("OnCompleted\n");
98             });
99     printf("//! [Create great code]\n");
100 }
101