diff options
Diffstat (limited to 'libs/tdlib/td/tdutils/test/SharedObjectPool.cpp')
-rw-r--r-- | libs/tdlib/td/tdutils/test/SharedObjectPool.cpp | 96 |
1 files changed, 0 insertions, 96 deletions
diff --git a/libs/tdlib/td/tdutils/test/SharedObjectPool.cpp b/libs/tdlib/td/tdutils/test/SharedObjectPool.cpp deleted file mode 100644 index 61d956f4e6..0000000000 --- a/libs/tdlib/td/tdutils/test/SharedObjectPool.cpp +++ /dev/null @@ -1,96 +0,0 @@ -// -// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2018 -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// -#include "td/utils/logging.h" -#include "td/utils/SharedObjectPool.h" -#include "td/utils/tests.h" - -#include <memory> - -TEST(AtomicRefCnt, simple) { - td::detail::AtomicRefCnt cnt{0}; - cnt.inc(); - cnt.inc(); - CHECK(!cnt.dec()); - cnt.inc(); - CHECK(!cnt.dec()); - CHECK(cnt.dec()); - cnt.inc(); - CHECK(cnt.dec()); -} - -template <class T, class D> -using Ptr = td::detail::SharedPtr<T, D>; -class Deleter { - public: - template <class T> - void operator()(T *t) { - std::default_delete<T>()(t); - was_delete() = true; - } - static bool &was_delete() { - static bool flag = false; - return flag; - } -}; - -TEST(SharedPtr, simple) { - CHECK(!Deleter::was_delete()); - Ptr<std::string, Deleter> ptr = Ptr<std::string, Deleter>::create("hello"); - auto ptr2 = ptr; - CHECK(*ptr == "hello"); - CHECK(*ptr2 == "hello"); - ptr.reset(); - CHECK(*ptr2 == "hello"); - CHECK(ptr.empty()); - Ptr<std::string, Deleter> ptr3 = std::move(ptr2); - CHECK(ptr2.empty()); - CHECK(*ptr3 == "hello"); - ptr = ptr3; - CHECK(*ptr3 == "hello"); - ptr3.reset(); - CHECK(*ptr == "hello"); - ptr2 = std::move(ptr); - CHECK(ptr.empty()); - CHECK(*ptr2 == "hello"); - ptr2 = ptr2; - CHECK(*ptr2 == "hello"); - CHECK(!Deleter::was_delete()); - ptr2.reset(); - CHECK(Deleter::was_delete()); - CHECK(ptr2.empty()); -} - -TEST(SharedObjectPool, simple) { - class Node { - public: - Node() { - cnt()++; - }; - ~Node() { - cnt()--; - } - static int &cnt() { - static int cnt_ = 0; - return cnt_; - } - }; - { - td::SharedObjectPool<Node> pool; - pool.alloc(); - pool.alloc(); - pool.alloc(); - pool.alloc(); - pool.alloc(); - CHECK(Node::cnt() == 0); - CHECK(pool.total_size() == 1); - CHECK(pool.calc_free_size() == 1); - pool.alloc(), pool.alloc(), pool.alloc(); - CHECK(pool.total_size() == 3); - CHECK(pool.calc_free_size() == 3); - } - CHECK(Node::cnt() == 0); -} |