diff options
| author | rzhikharevich <[email protected]> | 2022-02-10 16:51:00 +0300 | 
|---|---|---|
| committer | Daniil Cherednik <[email protected]> | 2022-02-10 16:51:00 +0300 | 
| commit | 3fd404e3c028261bd5c6720cd67d4b755740d161 (patch) | |
| tree | 5d5cb817648f650d76cf1076100726fd9b8448e8 /library/cpp | |
| parent | 724861a587a9d8ecec238aec4c37154e3f2409bb (diff) | |
Restoring authorship annotation for <[email protected]>. Commit 2 of 2.
Diffstat (limited to 'library/cpp')
| -rw-r--r-- | library/cpp/threading/future/core/future-inl.h | 8 | ||||
| -rw-r--r-- | library/cpp/threading/future/future_ut.cpp | 158 | 
2 files changed, 83 insertions, 83 deletions
diff --git a/library/cpp/threading/future/core/future-inl.h b/library/cpp/threading/future/core/future-inl.h index e0ddd4295ec..5fd4296a93c 100644 --- a/library/cpp/threading/future/core/future-inl.h +++ b/library/cpp/threading/future/core/future-inl.h @@ -621,8 +621,8 @@ namespace NThreading {      template <typename F>      inline TFuture<TFutureType<TFutureCallResult<F, T>>> TFuture<T>::Apply(F&& func) const {          auto promise = NewPromise<TFutureType<TFutureCallResult<F, T>>>(); -        Subscribe([promise, func = std::forward<F>(func)](const TFuture<T>& future) mutable {  -            NImpl::SetValue(promise, [&]() { return func(future); });  +        Subscribe([promise, func = std::forward<F>(func)](const TFuture<T>& future) mutable { +            NImpl::SetValue(promise, [&]() { return func(future); });          });          return promise;      } @@ -720,8 +720,8 @@ namespace NThreading {      template <typename F>      inline TFuture<TFutureType<TFutureCallResult<F, void>>> TFuture<void>::Apply(F&& func) const {          auto promise = NewPromise<TFutureType<TFutureCallResult<F, void>>>(); -        Subscribe([promise, func = std::forward<F>(func)](const TFuture<void>& future) mutable {  -            NImpl::SetValue(promise, [&]() { return func(future); });  +        Subscribe([promise, func = std::forward<F>(func)](const TFuture<void>& future) mutable { +            NImpl::SetValue(promise, [&]() { return func(future); });          });          return promise;      } diff --git a/library/cpp/threading/future/future_ut.cpp b/library/cpp/threading/future/future_ut.cpp index ccc214372df..05950a568d4 100644 --- a/library/cpp/threading/future/future_ut.cpp +++ b/library/cpp/threading/future/future_ut.cpp @@ -9,32 +9,32 @@ namespace NThreading {  namespace { -    class TCopyCounter {  -    public:  -        TCopyCounter(size_t* numCopies)  -            : NumCopies(numCopies)  -        {}  -  -        TCopyCounter(const TCopyCounter& that)  -            : NumCopies(that.NumCopies)  -        {  -            ++*NumCopies;  -        }  -  -        TCopyCounter& operator=(const TCopyCounter& that) {  -            NumCopies = that.NumCopies;  -            ++*NumCopies;  -            return *this;  -        }  -  -        TCopyCounter(TCopyCounter&& that) = default;  -  -        TCopyCounter& operator=(TCopyCounter&& that) = default;  -  -    private:  -        size_t* NumCopies = nullptr;  -    };  -  +    class TCopyCounter { +    public: +        TCopyCounter(size_t* numCopies) +            : NumCopies(numCopies) +        {} + +        TCopyCounter(const TCopyCounter& that) +            : NumCopies(that.NumCopies) +        { +            ++*NumCopies; +        } + +        TCopyCounter& operator=(const TCopyCounter& that) { +            NumCopies = that.NumCopies; +            ++*NumCopies; +            return *this; +        } + +        TCopyCounter(TCopyCounter&& that) = default; + +        TCopyCounter& operator=(TCopyCounter&& that) = default; + +    private: +        size_t* NumCopies = nullptr; +    }; +      template <typename T>      auto MakePromise() {          if constexpr (std::is_same_v<T, void>) { @@ -582,59 +582,59 @@ namespace {              TestFutureStateId<void>();              TestFutureStateId<int>();          } -  -        template <typename T>  -        void TestApplyNoRvalueCopyImpl() {  -            size_t numCopies = 0;  -            TCopyCounter copyCounter(&numCopies);  -  -            auto promise = MakePromise<T>();  -  -            const auto future = promise.GetFuture().Apply(  -                [copyCounter = std::move(copyCounter)] (const auto&) {}  -            );  -  -            if constexpr (std::is_same_v<T, void>) {  -                promise.SetValue();  -            } else {  -                promise.SetValue(T());  -            }  -  -            future.GetValueSync();  -  -            UNIT_ASSERT_VALUES_EQUAL(numCopies, 0);  -        }  -  -        Y_UNIT_TEST(ApplyNoRvalueCopy) {  -            TestApplyNoRvalueCopyImpl<void>();  -            TestApplyNoRvalueCopyImpl<int>();  -        }  -  -        template <typename T>  -        void TestApplyLvalueCopyImpl() {  -            size_t numCopies = 0;  -            TCopyCounter copyCounter(&numCopies);  -  -            auto promise = MakePromise<T>();  -  -            auto func = [copyCounter = std::move(copyCounter)] (const auto&) {};  -            const auto future = promise.GetFuture().Apply(func);  -  -            if constexpr (std::is_same_v<T, void>) {  -                promise.SetValue();  -            } else {  -                promise.SetValue(T());  -            }  -  -            future.GetValueSync();  -  -            UNIT_ASSERT_VALUES_EQUAL(numCopies, 1);  -        }  -  -        Y_UNIT_TEST(ApplyLvalueCopy) {  -            TestApplyLvalueCopyImpl<void>();  -            TestApplyLvalueCopyImpl<int>();  -        }  + +        template <typename T> +        void TestApplyNoRvalueCopyImpl() { +            size_t numCopies = 0; +            TCopyCounter copyCounter(&numCopies); + +            auto promise = MakePromise<T>(); + +            const auto future = promise.GetFuture().Apply( +                [copyCounter = std::move(copyCounter)] (const auto&) {} +            ); + +            if constexpr (std::is_same_v<T, void>) { +                promise.SetValue(); +            } else { +                promise.SetValue(T()); +            } + +            future.GetValueSync(); + +            UNIT_ASSERT_VALUES_EQUAL(numCopies, 0); +        } + +        Y_UNIT_TEST(ApplyNoRvalueCopy) { +            TestApplyNoRvalueCopyImpl<void>(); +            TestApplyNoRvalueCopyImpl<int>(); +        } + +        template <typename T> +        void TestApplyLvalueCopyImpl() { +            size_t numCopies = 0; +            TCopyCounter copyCounter(&numCopies); + +            auto promise = MakePromise<T>(); + +            auto func = [copyCounter = std::move(copyCounter)] (const auto&) {}; +            const auto future = promise.GetFuture().Apply(func); + +            if constexpr (std::is_same_v<T, void>) { +                promise.SetValue(); +            } else { +                promise.SetValue(T()); +            } + +            future.GetValueSync(); + +            UNIT_ASSERT_VALUES_EQUAL(numCopies, 1); +        } + +        Y_UNIT_TEST(ApplyLvalueCopy) { +            TestApplyLvalueCopyImpl<void>(); +            TestApplyLvalueCopyImpl<int>(); +        }      }  }  | 
