From abc99a87a28be5a6699e9544f24e3f54005e6600 Mon Sep 17 00:00:00 2001 From: Corentin B <32176761+CorentinBT@users.noreply.github.com> Date: Tue, 30 Apr 2024 22:29:53 +0200 Subject: [PATCH] Expose observable strategy_type (#567) * Expose observable strategy_type * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Aleksey Loginov --- src/rpp/rpp/observables.hpp | 1 + src/rpp/rpp/observables/observable.hpp | 3 ++- src/tests/rpp/test_observables.cpp | 21 +++++++++++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/rpp/rpp/observables.hpp b/src/rpp/rpp/observables.hpp index 301821257..279cb5d45 100644 --- a/src/rpp/rpp/observables.hpp +++ b/src/rpp/rpp/observables.hpp @@ -23,4 +23,5 @@ #include #include #include +#include #include diff --git a/src/rpp/rpp/observables/observable.hpp b/src/rpp/rpp/observables/observable.hpp index 42b0d9d78..20b373fc1 100644 --- a/src/rpp/rpp/observables/observable.hpp +++ b/src/rpp/rpp/observables/observable.hpp @@ -37,7 +37,8 @@ namespace rpp class observable { public: - using value_type = Type; + using value_type = Type; + using strategy_type = Strategy; using expected_disposable_strategy = rpp::details::observables::deduce_disposable_strategy_t; diff --git a/src/tests/rpp/test_observables.cpp b/src/tests/rpp/test_observables.cpp index 6cf1b8bb2..349747ecb 100644 --- a/src/tests/rpp/test_observables.cpp +++ b/src/tests/rpp/test_observables.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include "rpp/disposables/fwd.hpp" #include "rpp/operators/fwd.hpp" @@ -241,3 +242,23 @@ TEST_CASE("create observable works properly as observable") CHECK(pipe_operator_observer.get_on_completed_count() == pipe_function_observer.get_on_completed_count()); } } + +TEMPLATE_TEST_CASE( + "observable has type traits defined", + "", + rpp::empty_observable, + rpp::dynamic_observable, + rpp::blocking_observable>, + rpp::connectable_observable, rpp::subjects::replay_subject>, + rpp::grouped_observable>) +{ + SECTION("value_type defined") + { + CONSTEVAL_CHECK(requires { typename TestType::value_type; }); + CONSTEVAL_CHECK(std::is_same_v); + } + SECTION("strategy_type defined") + { + CONSTEVAL_CHECK(requires { typename TestType::strategy_type; }); + } +}