summaryrefslogtreecommitdiff
path: root/libs/tdlib/td/tdutils/test/SharedObjectPool.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libs/tdlib/td/tdutils/test/SharedObjectPool.cpp')
-rw-r--r--libs/tdlib/td/tdutils/test/SharedObjectPool.cpp96
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);
-}