summaryrefslogtreecommitdiff
path: root/Rx/v2/examples/doxygen/blocking_observable.cpp
blob: 1e7dd56462afee83e07c57809f9104fb01fb83db (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
#include "rxcpp/rx.hpp"

#include "rxcpp/rx-test.hpp"
#include "catch.hpp"

SCENARIO("blocking first sample"){
    printf("//! [blocking first sample]\n");
    auto values = rxcpp::observable<>::range(1, 3).as_blocking();
    auto first = values.first();
    printf("first = %d\n", first);
    printf("//! [blocking first sample]\n");
}

SCENARIO("blocking first empty sample"){
    printf("//! [blocking first empty sample]\n");
    auto values = rxcpp::observable<>::empty<int>().as_blocking();
    try {
        auto first = values.first();
        printf("first = %d\n", first);
    } catch (const rxcpp::empty_error& ex) {
        printf("Exception: %s\n", ex.what());
    }
    printf("//! [blocking first empty sample]\n");
}

SCENARIO("blocking first error sample"){
    printf("//! [blocking first error sample]\n");
    auto values = rxcpp::observable<>::error<int>(std::runtime_error("Error from source")).
        as_blocking();
    try {
        auto first = values.first();
        printf("first = %d\n", first);
    } catch (const std::exception& ex) {
        printf("Exception: %s\n", ex.what());
    }
    printf("//! [blocking first error sample]\n");
}

SCENARIO("blocking last sample"){
    printf("//! [blocking last sample]\n");
    auto values = rxcpp::observable<>::range(1, 3).as_blocking();
    auto last = values.last();
    printf("last = %d\n", last);
    printf("//! [blocking last sample]\n");
}

SCENARIO("blocking last empty sample"){
    printf("//! [blocking last empty sample]\n");
    auto values = rxcpp::observable<>::empty<int>().as_blocking();
    try {
        auto last = values.last();
        printf("last = %d\n", last);
    } catch (const rxcpp::empty_error& ex) {
        printf("Exception: %s\n", ex.what());
    }
    printf("//! [blocking last empty sample]\n");
}

SCENARIO("blocking last error sample"){
    printf("//! [blocking last error sample]\n");
    auto values = rxcpp::observable<>::range(1, 3).
        concat(rxcpp::observable<>::error<int>(std::runtime_error("Error from source"))).
        as_blocking();
    try {
        auto last = values.last();
        printf("last = %d\n", last);
    } catch (const std::exception& ex) {
        printf("Exception: %s\n", ex.what());
    }
    printf("//! [blocking last error sample]\n");
}

SCENARIO("blocking count sample"){
    printf("//! [blocking count sample]\n");
    auto values = rxcpp::observable<>::range(1, 3).as_blocking();
    auto count = values.count();
    printf("count = %d\n", count);
    printf("//! [blocking count sample]\n");
}

SCENARIO("blocking count error sample"){
    printf("//! [blocking count error sample]\n");
    auto values = rxcpp::observable<>::range(1, 3).
        concat(rxcpp::observable<>::error<int>(std::runtime_error("Error from source"))).
        as_blocking();
    try {
        auto count = values.count();
        printf("count = %d\n", count);
    } catch (const std::exception& ex) {
        printf("Exception: %s\n", ex.what());
    }
    printf("//! [blocking count error sample]\n");
}

SCENARIO("blocking sum sample"){
    printf("//! [blocking sum sample]\n");
    auto values = rxcpp::observable<>::range(1, 3).as_blocking();
    auto sum = values.sum();
    printf("sum = %d\n", sum);
    printf("//! [blocking sum sample]\n");
}

SCENARIO("blocking sum empty sample"){
    printf("//! [blocking sum empty sample]\n");
    auto values = rxcpp::observable<>::empty<int>().as_blocking();
    try {
        auto sum = values.sum();
        printf("sum = %d\n", sum);
    } catch (const rxcpp::empty_error& ex) {
        printf("Exception: %s\n", ex.what());
    }
    printf("//! [blocking sum empty sample]\n");
}

SCENARIO("blocking sum error sample"){
    printf("//! [blocking sum error sample]\n");
    auto values = rxcpp::observable<>::range(1, 3).
        concat(rxcpp::observable<>::error<int>(std::runtime_error("Error from source"))).
        as_blocking();
    try {
        auto sum = values.sum();
        printf("sum = %d\n", sum);
    } catch (const std::exception& ex) {
        printf("Exception: %s\n", ex.what());
    }
    printf("//! [blocking sum error sample]\n");
}

SCENARIO("blocking average sample"){
    printf("//! [blocking average sample]\n");
    auto values = rxcpp::observable<>::range(1, 4).as_blocking();
    auto average = values.average();
    printf("average = %lf\n", average);
    printf("//! [blocking average sample]\n");
}

SCENARIO("blocking average empty sample"){
    printf("//! [blocking average empty sample]\n");
    auto values = rxcpp::observable<>::empty<int>().as_blocking();
    try {
        auto average = values.average();
        printf("average = %lf\n", average);
    } catch (const rxcpp::empty_error& ex) {
        printf("Exception: %s\n", ex.what());
    }
    printf("//! [blocking average empty sample]\n");
}

SCENARIO("blocking average error sample"){
    printf("//! [blocking average error sample]\n");
    auto values = rxcpp::observable<>::range(1, 4).
        concat(rxcpp::observable<>::error<int>(std::runtime_error("Error from source"))).
        as_blocking();
    try {
        auto average = values.average();
        printf("average = %lf\n", average);
    } catch (const std::exception& ex) {
        printf("Exception: %s\n", ex.what());
    }
    printf("//! [blocking average error sample]\n");
}