From 07c17e3d9fbd474c18cc75dfc04d02696b348f7d Mon Sep 17 00:00:00 2001 From: Aleksey Loginov Date: Sat, 2 Nov 2024 22:02:28 +0300 Subject: [PATCH] add dynamic connectable --- .../rpp/observables/dynamic_observable.hpp | 4 ++++ src/tests/rpp/test_connectable_observable.cpp | 22 ++++++++++++------- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/rpp/rpp/observables/dynamic_observable.hpp b/src/rpp/rpp/observables/dynamic_observable.hpp index db0b2a201..046d8ed85 100644 --- a/src/rpp/rpp/observables/dynamic_observable.hpp +++ b/src/rpp/rpp/observables/dynamic_observable.hpp @@ -10,6 +10,7 @@ #pragma once #include +#include #include #include @@ -101,4 +102,7 @@ namespace rpp { } }; + + template + using dynamic_connectable_observable = connectable_observable>, Subject>; } // namespace rpp diff --git a/src/tests/rpp/test_connectable_observable.cpp b/src/tests/rpp/test_connectable_observable.cpp index e7371939d..f93c58bd0 100644 --- a/src/tests/rpp/test_connectable_observable.cpp +++ b/src/tests/rpp/test_connectable_observable.cpp @@ -11,9 +11,11 @@ #include #include +#include #include #include #include +#include #include #include @@ -78,6 +80,8 @@ TEST_CASE("connectable observable") }; SUBCASE("connectable created manually") test(rpp::connectable_observable{source, rpp::subjects::publish_subject{}}); + SUBCASE("dynamic_connectable created manually") + test(rpp::dynamic_connectable_observable>{source, rpp::subjects::publish_subject{}}); SUBCASE("connectable created via multicast") test(source | rpp::ops::multicast(rpp::subjects::publish_subject{})); SUBCASE("connectable created via templated multicast") @@ -164,6 +168,8 @@ TEST_CASE("connectable observable") }; SUBCASE("connectable created manually") test(rpp::connectable_observable{source.get_observable(), rpp::subjects::publish_subject{}}); + SUBCASE("dynamic_connectable created manually") + test(rpp::dynamic_connectable_observable>{source.get_observable(), rpp::subjects::publish_subject{}}); SUBCASE("connectable created via multicast") test(source.get_observable() | rpp::ops::multicast(rpp::subjects::publish_subject{})); SUBCASE("connectable created via templated multicast") @@ -172,14 +178,14 @@ TEST_CASE("connectable observable") SUBCASE("observable") { auto source = rpp::source::just(1); - // SUBCASE("call publish on it") - // { - // auto published = source.publish(); - // SUBCASE("published observable is same as Connectable with publish_subject") - // { - // static_assert(rpp::constraint::decayed_same_as, decltype(source)>>); - // } - // } + SUBCASE("call publish on it") + { + auto published = source | rpp::ops::publish(); + SUBCASE("published observable is same as Connectable with publish_subject") + { + static_assert(rpp::constraint::decayed_same_as>>); + } + } SUBCASE("call multicast on it with publish_subject") { auto published = source | rpp::ops::multicast(rpp::subjects::publish_subject{});