summaryrefslogtreecommitdiff
path: root/Rx/v2/test/operators/ignore_elements.cpp
diff options
context:
space:
mode:
authorGrigoriy Chudnov <g.chudnov@gmail.com>2016-03-04 17:44:22 +0300
committerGrigoriy Chudnov <g.chudnov@gmail.com>2016-03-04 17:44:22 +0300
commitdccee6d3525fa2f5220a3e6fadd466888f37bbf0 (patch)
tree9460eab358aca367a447e80c7bf31998434789c3 /Rx/v2/test/operators/ignore_elements.cpp
parent8433dfe942088a572dba79518ba36427921d5b9f (diff)
downloadRxCpp-dccee6d3525fa2f5220a3e6fadd466888f37bbf0.tar.gz
add ignore_elements operator
Diffstat (limited to 'Rx/v2/test/operators/ignore_elements.cpp')
-rw-r--r--Rx/v2/test/operators/ignore_elements.cpp160
1 files changed, 160 insertions, 0 deletions
diff --git a/Rx/v2/test/operators/ignore_elements.cpp b/Rx/v2/test/operators/ignore_elements.cpp
new file mode 100644
index 0000000..7e495e9
--- /dev/null
+++ b/Rx/v2/test/operators/ignore_elements.cpp
@@ -0,0 +1,160 @@
+#include "../test.h"
+
+
+SCENARIO("ignore_elements - never", "[ignore_elements][operators]"){
+ GIVEN("a source"){
+ auto sc = rxsc::make_test();
+ auto w = sc.create_worker();
+ const rxsc::test::messages<int> on;
+
+ auto xs = sc.make_hot_observable({
+ on.next(150, 1)
+ });
+
+ WHEN("ignore_elements is applied"){
+
+ auto res = w.start(
+ [xs]() {
+ return xs.ignore_elements();
+ }
+ );
+
+ THEN("the output is empty"){
+ auto required = std::vector<rxsc::test::messages<int>::recorded_type>();
+ auto actual = res.get_observer().messages();
+ REQUIRE(required == actual);
+ }
+
+ THEN("there was 1 subscription/unsubscription to the source"){
+ auto required = rxu::to_vector({
+ on.subscribe(200, 1000)
+ });
+ auto actual = xs.subscriptions();
+ REQUIRE(required == actual);
+ }
+ }
+ }
+}
+
+SCENARIO("ignore_elements - empty", "[ignore_elements][operators]"){
+ GIVEN("a source"){
+ auto sc = rxsc::make_test();
+ auto w = sc.create_worker();
+ const rxsc::test::messages<int> on;
+
+ auto xs = sc.make_hot_observable({
+ on.next(150, 1),
+ on.completed(250)
+ });
+
+ WHEN("ignore_elements is applied"){
+
+ auto res = w.start(
+ [xs]() {
+ return xs.ignore_elements();
+ }
+ );
+
+ THEN("the output contains the completion message"){
+ auto required = rxu::to_vector({
+ on.completed(250)
+ });
+ auto actual = res.get_observer().messages();
+ REQUIRE(required == actual);
+ }
+
+ THEN("there was 1 subscription/unsubscription to the source"){
+ auto required = rxu::to_vector({
+ on.subscribe(200, 250)
+ });
+ auto actual = xs.subscriptions();
+ REQUIRE(required == actual);
+ }
+
+ }
+ }
+}
+
+SCENARIO("ignore_elements - throw", "[ignore_elements][operators]"){
+ GIVEN("a source"){
+ auto sc = rxsc::make_test();
+ auto w = sc.create_worker();
+ const rxsc::test::messages<int> on;
+
+ std::runtime_error ex("ignore_elements on_error from source");
+
+ auto xs = sc.make_hot_observable({
+ on.next(150, 1),
+ on.error(250, ex)
+ });
+
+ WHEN("ignore_elements is applied"){
+
+ auto res = w.start(
+ [xs]() {
+ return xs.ignore_elements();
+ }
+ );
+
+ THEN("the output contains an error"){
+ auto required = rxu::to_vector({
+ on.error(250, ex)
+ });
+ auto actual = res.get_observer().messages();
+ REQUIRE(required == actual);
+ }
+
+ THEN("there was 1 subscription/unsubscription to the source"){
+ auto required = rxu::to_vector({
+ on.subscribe(200, 250)
+ });
+ auto actual = xs.subscriptions();
+ REQUIRE(required == actual);
+ }
+
+ }
+ }
+}
+
+SCENARIO("ignore_elements - items", "[ignore_elements][operators]"){
+ GIVEN("a source"){
+ auto sc = rxsc::make_test();
+ auto w = sc.create_worker();
+ const rxsc::test::messages<int> on;
+
+ auto xs = sc.make_hot_observable({
+ on.next(150, 1),
+ on.next(210, 2),
+ on.next(220, 3),
+ on.next(230, 4),
+ on.next(240, 5),
+ on.completed(250)
+ });
+
+ WHEN("ignore_elements is applied"){
+
+ auto res = w.start(
+ [xs]() {
+ return xs.ignore_elements();
+ }
+ );
+
+ THEN("the output contains the completion message"){
+ auto required = rxu::to_vector({
+ on.completed(250)
+ });
+ auto actual = res.get_observer().messages();
+ REQUIRE(required == actual);
+ }
+
+ THEN("there was 1 subscription/unsubscription to the source"){
+ auto required = rxu::to_vector({
+ on.subscribe(200, 250)
+ });
+ auto actual = xs.subscriptions();
+ REQUIRE(required == actual);
+ }
+
+ }
+ }
+}