Home | History | Annotate | Download | only in doxygen
      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>(
      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(
     17             [](int v){printf("OnNext: %d\n", v);},
     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,
     27         [&](int v){
     28             printf("OnNext: %d\n", v);
     29             if (v == 2)
     30                 subscription.unsubscribe();
     31         },
     32         [](){
     33             printf("OnCompleted\n");
     34         });
     35     rxcpp::observable<>::create<int>(
     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,
     52         [&](int v){
     53             printf("OnNext: %d\n", v);
     54             if (v == 2)
     55                 subscription.unsubscribe();
     56         },
     57         [](){
     58             printf("OnCompleted\n");
     59         });
     60     rxcpp::observable<>::create<int>(
     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>(
     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(
     90             [](int v){
     91                 printf("OnNext: %d\n", v);
     92             },
     93             [](rxcpp::util::error_ptr ep){
     94                 printf("OnError: %s\n", rxcpp::util::what(ep).c_str());
     95             },
     96             [](){
     97                 printf("OnCompleted\n");
     98             });
     99     printf("//! [Create great code]\n");
    100 }
    101