summaryrefslogtreecommitdiff
path: root/protocols/Telegram/tdlib/td/tdutils/test
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/Telegram/tdlib/td/tdutils/test')
-rw-r--r--protocols/Telegram/tdlib/td/tdutils/test/ChainScheduler.cpp4
-rw-r--r--protocols/Telegram/tdlib/td/tdutils/test/ConcurrentHashMap.cpp4
-rw-r--r--protocols/Telegram/tdlib/td/tdutils/test/Enumerator.cpp25
-rw-r--r--protocols/Telegram/tdlib/td/tdutils/test/EpochBasedMemoryReclamation.cpp2
-rw-r--r--protocols/Telegram/tdlib/td/tdutils/test/HashSet.cpp16
-rw-r--r--protocols/Telegram/tdlib/td/tdutils/test/HazardPointers.cpp2
-rw-r--r--protocols/Telegram/tdlib/td/tdutils/test/HttpUrl.cpp91
-rw-r--r--protocols/Telegram/tdlib/td/tdutils/test/List.cpp2
-rw-r--r--protocols/Telegram/tdlib/td/tdutils/test/MpmcQueue.cpp2
-rw-r--r--protocols/Telegram/tdlib/td/tdutils/test/MpmcWaiter.cpp2
-rw-r--r--protocols/Telegram/tdlib/td/tdutils/test/MpscLinkQueue.cpp2
-rw-r--r--protocols/Telegram/tdlib/td/tdutils/test/OptionParser.cpp2
-rw-r--r--protocols/Telegram/tdlib/td/tdutils/test/OrderedEventsProcessor.cpp2
-rw-r--r--protocols/Telegram/tdlib/td/tdutils/test/SharedObjectPool.cpp2
-rw-r--r--protocols/Telegram/tdlib/td/tdutils/test/SharedSlice.cpp2
-rw-r--r--protocols/Telegram/tdlib/td/tdutils/test/StealingQueue.cpp2
-rw-r--r--protocols/Telegram/tdlib/td/tdutils/test/WaitFreeHashMap.cpp2
-rw-r--r--protocols/Telegram/tdlib/td/tdutils/test/WaitFreeHashSet.cpp2
-rw-r--r--protocols/Telegram/tdlib/td/tdutils/test/WaitFreeVector.cpp2
-rw-r--r--protocols/Telegram/tdlib/td/tdutils/test/bitmask.cpp2
-rw-r--r--protocols/Telegram/tdlib/td/tdutils/test/buffer.cpp2
-rw-r--r--protocols/Telegram/tdlib/td/tdutils/test/crypto.cpp22
-rw-r--r--protocols/Telegram/tdlib/td/tdutils/test/emoji.cpp30
-rw-r--r--protocols/Telegram/tdlib/td/tdutils/test/filesystem.cpp2
-rw-r--r--protocols/Telegram/tdlib/td/tdutils/test/gzip.cpp4
-rw-r--r--protocols/Telegram/tdlib/td/tdutils/test/hashset_benchmark.cpp5
-rw-r--r--protocols/Telegram/tdlib/td/tdutils/test/heap.cpp17
-rw-r--r--protocols/Telegram/tdlib/td/tdutils/test/json.cpp3
-rw-r--r--protocols/Telegram/tdlib/td/tdutils/test/log.cpp4
-rw-r--r--protocols/Telegram/tdlib/td/tdutils/test/misc.cpp43
-rw-r--r--protocols/Telegram/tdlib/td/tdutils/test/port.cpp14
-rw-r--r--protocols/Telegram/tdlib/td/tdutils/test/pq.cpp2
-rw-r--r--protocols/Telegram/tdlib/td/tdutils/test/variant.cpp3
33 files changed, 257 insertions, 64 deletions
diff --git a/protocols/Telegram/tdlib/td/tdutils/test/ChainScheduler.cpp b/protocols/Telegram/tdlib/td/tdutils/test/ChainScheduler.cpp
index d3bcb934fc..029a4ff366 100644
--- a/protocols/Telegram/tdlib/td/tdutils/test/ChainScheduler.cpp
+++ b/protocols/Telegram/tdlib/td/tdutils/test/ChainScheduler.cpp
@@ -1,5 +1,5 @@
//
-// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023
//
// 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)
@@ -139,7 +139,7 @@ TEST(ChainScheduler, Stress) {
int chain_n = rnd.fast(1, ChainsN);
td::vector<ChainId> chain_ids(ChainsN);
std::iota(chain_ids.begin(), chain_ids.end(), 0);
- td::random_shuffle(td::as_mutable_span(chain_ids), rnd);
+ td::rand_shuffle(td::as_mutable_span(chain_ids), rnd);
chain_ids.resize(chain_n);
for (auto chain_id : chain_ids) {
chains[td::narrow_cast<size_t>(chain_id)].push_back(query);
diff --git a/protocols/Telegram/tdlib/td/tdutils/test/ConcurrentHashMap.cpp b/protocols/Telegram/tdlib/td/tdutils/test/ConcurrentHashMap.cpp
index a90f11d525..5ab1f85ad2 100644
--- a/protocols/Telegram/tdlib/td/tdutils/test/ConcurrentHashMap.cpp
+++ b/protocols/Telegram/tdlib/td/tdutils/test/ConcurrentHashMap.cpp
@@ -1,5 +1,5 @@
//
-// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023
//
// 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)
@@ -163,7 +163,7 @@ class ConcurrentHashMapJunction {
ConcurrentHashMapJunction(const ConcurrentHashMapJunction &) = delete;
ConcurrentHashMapJunction &operator=(const ConcurrentHashMapJunction &) = delete;
- ConcurrentHashMapJunction(ConcurrentHashMapJunction &&other) = delete;
+ ConcurrentHashMapJunction(ConcurrentHashMapJunction &&) = delete;
ConcurrentHashMapJunction &operator=(ConcurrentHashMapJunction &&) = delete;
~ConcurrentHashMapJunction() {
junction::DefaultQSBR.flush();
diff --git a/protocols/Telegram/tdlib/td/tdutils/test/Enumerator.cpp b/protocols/Telegram/tdlib/td/tdutils/test/Enumerator.cpp
index 210ab415cc..6f40ae7b5f 100644
--- a/protocols/Telegram/tdlib/td/tdutils/test/Enumerator.cpp
+++ b/protocols/Telegram/tdlib/td/tdutils/test/Enumerator.cpp
@@ -1,14 +1,17 @@
//
-// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023
//
// 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/benchmark.h"
+#include "td/utils/common.h"
#include "td/utils/Enumerator.h"
+#include "td/utils/Random.h"
#include "td/utils/tests.h"
TEST(Enumerator, simple) {
- td::Enumerator<std::string> e;
+ td::Enumerator<td::string> e;
auto b = e.add("b");
auto a = e.add("a");
auto d = e.add("d");
@@ -22,3 +25,21 @@ TEST(Enumerator, simple) {
ASSERT_EQ(c, e.add("c"));
ASSERT_EQ(d, e.add("d"));
}
+
+TEST(Enumerator, add_benchmark) {
+ class EnumeratorAddBenchmark final : public td::Benchmark {
+ public:
+ td::string get_description() const final {
+ return "EnumeratorAdd";
+ }
+
+ void run(int n) final {
+ td::Enumerator<int> enumerator;
+ for (int i = 0; i < n; i++) {
+ enumerator.add(td::Random::fast(1, 10000000));
+ }
+ td::do_not_optimize_away(enumerator.size());
+ }
+ };
+ bench(EnumeratorAddBenchmark());
+}
diff --git a/protocols/Telegram/tdlib/td/tdutils/test/EpochBasedMemoryReclamation.cpp b/protocols/Telegram/tdlib/td/tdutils/test/EpochBasedMemoryReclamation.cpp
index c97679bb83..e219d38254 100644
--- a/protocols/Telegram/tdlib/td/tdutils/test/EpochBasedMemoryReclamation.cpp
+++ b/protocols/Telegram/tdlib/td/tdutils/test/EpochBasedMemoryReclamation.cpp
@@ -1,5 +1,5 @@
//
-// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023
//
// 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)
diff --git a/protocols/Telegram/tdlib/td/tdutils/test/HashSet.cpp b/protocols/Telegram/tdlib/td/tdutils/test/HashSet.cpp
index 94ebf8733b..19c4c1ca35 100644
--- a/protocols/Telegram/tdlib/td/tdutils/test/HashSet.cpp
+++ b/protocols/Telegram/tdlib/td/tdutils/test/HashSet.cpp
@@ -1,5 +1,5 @@
//
-// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023
//
// 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)
@@ -92,6 +92,20 @@ static bool operator==(const A &lhs, const A &rhs) {
return lhs.a == rhs.a;
}
+TEST(FlatHashSet, init) {
+ td::FlatHashSet<td::Slice, td::SliceHash> s{"1", "22", "333", "4444"};
+ ASSERT_TRUE(s.size() == 4);
+ td::string str("1");
+ ASSERT_TRUE(s.count(str) == 1);
+ ASSERT_TRUE(s.count("1") == 1);
+ ASSERT_TRUE(s.count("22") == 1);
+ ASSERT_TRUE(s.count("333") == 1);
+ ASSERT_TRUE(s.count("4444") == 1);
+ ASSERT_TRUE(s.count("4") == 0);
+ ASSERT_TRUE(s.count("222") == 0);
+ ASSERT_TRUE(s.count("") == 0);
+}
+
TEST(FlatHashSet, foreach) {
td::FlatHashSet<A, AHash> s;
for (auto it : s) {
diff --git a/protocols/Telegram/tdlib/td/tdutils/test/HazardPointers.cpp b/protocols/Telegram/tdlib/td/tdutils/test/HazardPointers.cpp
index 0c4174db0f..5148626cb2 100644
--- a/protocols/Telegram/tdlib/td/tdutils/test/HazardPointers.cpp
+++ b/protocols/Telegram/tdlib/td/tdutils/test/HazardPointers.cpp
@@ -1,5 +1,5 @@
//
-// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023
//
// 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)
diff --git a/protocols/Telegram/tdlib/td/tdutils/test/HttpUrl.cpp b/protocols/Telegram/tdlib/td/tdutils/test/HttpUrl.cpp
index 6e91d48803..6d97c08770 100644
--- a/protocols/Telegram/tdlib/td/tdutils/test/HttpUrl.cpp
+++ b/protocols/Telegram/tdlib/td/tdutils/test/HttpUrl.cpp
@@ -1,15 +1,104 @@
//
-// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023
//
// 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/common.h"
#include "td/utils/HttpUrl.h"
+#include "td/utils/misc.h"
+#include "td/utils/Slice.h"
+#include "td/utils/SliceBuilder.h"
+#include "td/utils/StringBuilder.h"
#include "td/utils/tests.h"
#include <utility>
+static void test_parse_url(const td::string &url, td::string userinfo, td::string host, bool is_ipv6,
+ int specified_port, int port) {
+ for (auto query : {"", "/.com", "#", "?t=1"}) {
+ auto http_url = td::parse_url(url + query).move_as_ok();
+ ASSERT_EQ(userinfo, http_url.userinfo_);
+ ASSERT_EQ(host, http_url.host_);
+ ASSERT_EQ(is_ipv6, http_url.is_ipv6_);
+ ASSERT_EQ(specified_port, http_url.specified_port_);
+ ASSERT_EQ(port, http_url.port_);
+ }
+}
+
+static void test_parse_url(const td::string &url, td::Slice error_message) {
+ for (auto query : {"", "/.com", "#", "?t=1"}) {
+ auto error = td::parse_url(url + query).move_as_error();
+ ASSERT_EQ(error_message, error.message());
+ }
+}
+
+TEST(HttpUrl, parse_url) {
+ test_parse_url("http://localhost:8080", "", "localhost", false, 8080, 8080);
+ test_parse_url("http://lOcAlhOsT:8080", "", "localhost", false, 8080, 8080);
+ test_parse_url("http://UsEr:PaSs@lOcAlhOsT:8080", "UsEr:PaSs", "localhost", false, 8080, 8080);
+ test_parse_url("http://example.com", "", "example.com", false, 0, 80);
+ test_parse_url("https://example.com", "", "example.com", false, 0, 443);
+ test_parse_url("https://example.com:65535", "", "example.com", false, 65535, 65535);
+ test_parse_url("https://example.com:00000071", "", "example.com", false, 71, 71);
+ test_parse_url("example.com?://", "", "example.com", false, 0, 80);
+ test_parse_url("example.com/://", "", "example.com", false, 0, 80);
+ test_parse_url("example.com#://", "", "example.com", false, 0, 80);
+ test_parse_url("@example.com#://", "", "example.com", false, 0, 80);
+ test_parse_url("test@example.com#://", "test", "example.com", false, 0, 80);
+ test_parse_url("test:pass@example.com#://", "test:pass", "example.com", false, 0, 80);
+ test_parse_url("te%ffst:pa%8Dss@examp%9Ele.com#://", "te%ffst:pa%8Dss", "examp%9ele.com", false, 0, 80);
+ test_parse_url("http://[2001:db8:85a3:8d3:1319:8a2e:370:7348]", "", "[2001:db8:85a3:8d3:1319:8a2e:370:7348]", true, 0,
+ 80);
+ test_parse_url("https://test@[2001:db8:85a3:8d3:1319:8a2e:370:7348]:443/", "test",
+ "[2001:db8:85a3:8d3:1319:8a2e:370:7348]", true, 443, 443);
+ test_parse_url("http://[64:ff9b::255.255.255.255]", "", "[64:ff9b::255.255.255.255]", true, 0, 80);
+ test_parse_url("http://255.255.255.255", "", "255.255.255.255", false, 0, 80);
+ test_parse_url("http://255.255.255.com", "", "255.255.255.com", false, 0, 80);
+ test_parse_url("https://exam%00ple.com", "", "exam%00ple.com", false, 0, 443);
+
+ test_parse_url("example.com://", "Unsupported URL protocol");
+ test_parse_url("https://example.com:65536", "Wrong port number specified in the URL");
+ test_parse_url("https://example.com:0", "Wrong port number specified in the URL");
+ test_parse_url("https://example.com:0x1", "Wrong port number specified in the URL");
+ test_parse_url("https://example.com:", "Wrong port number specified in the URL");
+ test_parse_url("https://example.com:-1", "Wrong port number specified in the URL");
+ test_parse_url("example.com@://", "Wrong port number specified in the URL");
+ test_parse_url("example.com@:1//", "URL host is empty");
+ test_parse_url("example.com@.:1//", "Host is invalid");
+ test_parse_url("exam%0gple.com", "Wrong percent-encoded symbol in URL host");
+ test_parse_url("a%g0b@example.com", "Wrong percent-encoded symbol in URL userinfo");
+
+ for (int c = 1; c <= 255; c++) {
+ if (c == '%') {
+ continue;
+ }
+ auto ch = static_cast<char>(c);
+ if (td::is_alnum(ch) || c >= 128 || td::string(".-_!$,~*\'();&+=").find(ch) != td::string::npos) {
+ // allowed character
+ test_parse_url(PSTRING() << ch << "a@b" << ch, td::string(1, ch) + "a", "b" + td::string(1, td::to_lower(ch)),
+ false, 0, 80);
+ } else if (c == ':') {
+ // allowed in userinfo character
+ test_parse_url(PSTRING() << ch << "a@b" << ch << 1, td::string(1, ch) + "a", "b", false, 1, 1);
+ test_parse_url(PSTRING() << ch << "a@b" << ch, "Wrong port number specified in the URL");
+ test_parse_url(PSTRING() << ch << "a@b", td::string(1, ch) + "a", "b", false, 0, 80);
+ } else if (c == '#' || c == '?' || c == '/') {
+ // special disallowed character
+ test_parse_url(PSTRING() << ch << "a@b" << ch, "URL host is empty");
+ } else if (c == '@') {
+ // special disallowed character
+ test_parse_url(PSTRING() << ch << "a@b" << ch, "URL host is empty");
+ test_parse_url(PSTRING() << ch << "a@b" << ch << '1', "Disallowed character in URL userinfo");
+ } else {
+ // generic disallowed character
+ test_parse_url(PSTRING() << ch << "a@b" << ch, "Disallowed character in URL host");
+ test_parse_url(PSTRING() << "a@b" << ch, "Disallowed character in URL host");
+ test_parse_url(PSTRING() << ch << "a@b", "Disallowed character in URL userinfo");
+ }
+ }
+}
+
static void test_get_url_query_file_name(const char *prefix, const char *suffix, const char *file_name) {
auto path = td::string(prefix) + td::string(file_name) + td::string(suffix);
ASSERT_STREQ(file_name, td::get_url_query_file_name(path));
diff --git a/protocols/Telegram/tdlib/td/tdutils/test/List.cpp b/protocols/Telegram/tdlib/td/tdutils/test/List.cpp
index 02ab080d89..1008ed730a 100644
--- a/protocols/Telegram/tdlib/td/tdutils/test/List.cpp
+++ b/protocols/Telegram/tdlib/td/tdutils/test/List.cpp
@@ -1,5 +1,5 @@
//
-// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023
//
// 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)
diff --git a/protocols/Telegram/tdlib/td/tdutils/test/MpmcQueue.cpp b/protocols/Telegram/tdlib/td/tdutils/test/MpmcQueue.cpp
index c038303c37..c2fbf56074 100644
--- a/protocols/Telegram/tdlib/td/tdutils/test/MpmcQueue.cpp
+++ b/protocols/Telegram/tdlib/td/tdutils/test/MpmcQueue.cpp
@@ -1,5 +1,5 @@
//
-// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023
//
// 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)
diff --git a/protocols/Telegram/tdlib/td/tdutils/test/MpmcWaiter.cpp b/protocols/Telegram/tdlib/td/tdutils/test/MpmcWaiter.cpp
index 4ac882dcaf..9bdabfac57 100644
--- a/protocols/Telegram/tdlib/td/tdutils/test/MpmcWaiter.cpp
+++ b/protocols/Telegram/tdlib/td/tdutils/test/MpmcWaiter.cpp
@@ -1,5 +1,5 @@
//
-// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023
//
// 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)
diff --git a/protocols/Telegram/tdlib/td/tdutils/test/MpscLinkQueue.cpp b/protocols/Telegram/tdlib/td/tdutils/test/MpscLinkQueue.cpp
index 43b0ccf086..49822896f3 100644
--- a/protocols/Telegram/tdlib/td/tdutils/test/MpscLinkQueue.cpp
+++ b/protocols/Telegram/tdlib/td/tdutils/test/MpscLinkQueue.cpp
@@ -1,5 +1,5 @@
//
-// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023
//
// 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)
diff --git a/protocols/Telegram/tdlib/td/tdutils/test/OptionParser.cpp b/protocols/Telegram/tdlib/td/tdutils/test/OptionParser.cpp
index 8600eb9f19..5580be0e85 100644
--- a/protocols/Telegram/tdlib/td/tdutils/test/OptionParser.cpp
+++ b/protocols/Telegram/tdlib/td/tdutils/test/OptionParser.cpp
@@ -1,5 +1,5 @@
//
-// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023
//
// 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)
diff --git a/protocols/Telegram/tdlib/td/tdutils/test/OrderedEventsProcessor.cpp b/protocols/Telegram/tdlib/td/tdutils/test/OrderedEventsProcessor.cpp
index c5c963bedc..fb31366a7a 100644
--- a/protocols/Telegram/tdlib/td/tdutils/test/OrderedEventsProcessor.cpp
+++ b/protocols/Telegram/tdlib/td/tdutils/test/OrderedEventsProcessor.cpp
@@ -1,5 +1,5 @@
//
-// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023
//
// 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)
diff --git a/protocols/Telegram/tdlib/td/tdutils/test/SharedObjectPool.cpp b/protocols/Telegram/tdlib/td/tdutils/test/SharedObjectPool.cpp
index a4762e25f3..935b9b8358 100644
--- a/protocols/Telegram/tdlib/td/tdutils/test/SharedObjectPool.cpp
+++ b/protocols/Telegram/tdlib/td/tdutils/test/SharedObjectPool.cpp
@@ -1,5 +1,5 @@
//
-// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023
//
// 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)
diff --git a/protocols/Telegram/tdlib/td/tdutils/test/SharedSlice.cpp b/protocols/Telegram/tdlib/td/tdutils/test/SharedSlice.cpp
index 7327f0dbb3..8cdfb1533f 100644
--- a/protocols/Telegram/tdlib/td/tdutils/test/SharedSlice.cpp
+++ b/protocols/Telegram/tdlib/td/tdutils/test/SharedSlice.cpp
@@ -1,5 +1,5 @@
//
-// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023
//
// 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)
diff --git a/protocols/Telegram/tdlib/td/tdutils/test/StealingQueue.cpp b/protocols/Telegram/tdlib/td/tdutils/test/StealingQueue.cpp
index 453a63179f..c0ccabf793 100644
--- a/protocols/Telegram/tdlib/td/tdutils/test/StealingQueue.cpp
+++ b/protocols/Telegram/tdlib/td/tdutils/test/StealingQueue.cpp
@@ -1,5 +1,5 @@
//
-// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023
//
// 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)
diff --git a/protocols/Telegram/tdlib/td/tdutils/test/WaitFreeHashMap.cpp b/protocols/Telegram/tdlib/td/tdutils/test/WaitFreeHashMap.cpp
index 38def77772..722ab6f85e 100644
--- a/protocols/Telegram/tdlib/td/tdutils/test/WaitFreeHashMap.cpp
+++ b/protocols/Telegram/tdlib/td/tdutils/test/WaitFreeHashMap.cpp
@@ -1,5 +1,5 @@
//
-// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023
//
// 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)
diff --git a/protocols/Telegram/tdlib/td/tdutils/test/WaitFreeHashSet.cpp b/protocols/Telegram/tdlib/td/tdutils/test/WaitFreeHashSet.cpp
index ec4096c850..f92cf253c0 100644
--- a/protocols/Telegram/tdlib/td/tdutils/test/WaitFreeHashSet.cpp
+++ b/protocols/Telegram/tdlib/td/tdutils/test/WaitFreeHashSet.cpp
@@ -1,5 +1,5 @@
//
-// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023
//
// 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)
diff --git a/protocols/Telegram/tdlib/td/tdutils/test/WaitFreeVector.cpp b/protocols/Telegram/tdlib/td/tdutils/test/WaitFreeVector.cpp
index 0f0cc58796..ca101e4ab8 100644
--- a/protocols/Telegram/tdlib/td/tdutils/test/WaitFreeVector.cpp
+++ b/protocols/Telegram/tdlib/td/tdutils/test/WaitFreeVector.cpp
@@ -1,5 +1,5 @@
//
-// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023
//
// 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)
diff --git a/protocols/Telegram/tdlib/td/tdutils/test/bitmask.cpp b/protocols/Telegram/tdlib/td/tdutils/test/bitmask.cpp
index e81c406bbe..23aea6c9ec 100644
--- a/protocols/Telegram/tdlib/td/tdutils/test/bitmask.cpp
+++ b/protocols/Telegram/tdlib/td/tdutils/test/bitmask.cpp
@@ -1,5 +1,5 @@
//
-// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023
//
// 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)
diff --git a/protocols/Telegram/tdlib/td/tdutils/test/buffer.cpp b/protocols/Telegram/tdlib/td/tdutils/test/buffer.cpp
index 4bc406cc64..0f155efc54 100644
--- a/protocols/Telegram/tdlib/td/tdutils/test/buffer.cpp
+++ b/protocols/Telegram/tdlib/td/tdutils/test/buffer.cpp
@@ -1,5 +1,5 @@
//
-// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023
//
// 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)
diff --git a/protocols/Telegram/tdlib/td/tdutils/test/crypto.cpp b/protocols/Telegram/tdlib/td/tdutils/test/crypto.cpp
index 9e81ef132c..5b4fd37e69 100644
--- a/protocols/Telegram/tdlib/td/tdutils/test/crypto.cpp
+++ b/protocols/Telegram/tdlib/td/tdutils/test/crypto.cpp
@@ -1,5 +1,5 @@
//
-// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023
//
// 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)
@@ -23,7 +23,7 @@ static td::vector<td::string> strings{"", "1", "short test string", td::string(1
TEST(Crypto, Aes) {
td::Random::Xorshift128plus rnd(123);
td::UInt256 key;
- rnd.bytes(as_slice(key));
+ rnd.bytes(as_mutable_slice(key));
td::string plaintext(16, '\0');
td::string encrypted(16, '\0');
td::string decrypted(16, '\0');
@@ -34,8 +34,8 @@ TEST(Crypto, Aes) {
td::AesState decryptor;
decryptor.init(as_slice(key), false);
- encryptor.encrypt(td::as_slice(plaintext).ubegin(), td::as_slice(encrypted).ubegin(), 16);
- decryptor.decrypt(td::as_slice(encrypted).ubegin(), td::as_slice(decrypted).ubegin(), 16);
+ encryptor.encrypt(td::as_slice(plaintext).ubegin(), td::as_mutable_slice(encrypted).ubegin(), 16);
+ decryptor.decrypt(td::as_slice(encrypted).ubegin(), td::as_mutable_slice(decrypted).ubegin(), 16);
CHECK(decrypted == plaintext);
CHECK(decrypted != encrypted);
@@ -135,7 +135,7 @@ TEST(Crypto, AesIgeState) {
for (const auto &str : td::rand_split(td::string(length / 16, '\0'))) {
auto len = 16 * str.size();
state.encrypt(td::Slice(s).substr(pos, len), td::MutableSlice(t).substr(pos, len));
- td::aes_ige_encrypt(as_slice(key), as_slice(iv_copy), td::Slice(s).substr(pos, len),
+ td::aes_ige_encrypt(as_slice(key), as_mutable_slice(iv_copy), td::Slice(s).substr(pos, len),
td::MutableSlice(u).substr(pos, len));
pos += len;
}
@@ -149,7 +149,7 @@ TEST(Crypto, AesIgeState) {
for (const auto &str : td::rand_split(td::string(length / 16, '\0'))) {
auto len = 16 * str.size();
state.decrypt(td::Slice(t).substr(pos, len), td::MutableSlice(t).substr(pos, len));
- td::aes_ige_decrypt(as_slice(key), as_slice(iv_copy), td::Slice(u).substr(pos, len),
+ td::aes_ige_decrypt(as_slice(key), as_mutable_slice(iv_copy), td::Slice(u).substr(pos, len),
td::MutableSlice(u).substr(pos, len));
pos += len;
}
@@ -191,7 +191,7 @@ TEST(Crypto, AesCbcState) {
for (const auto &str : td::rand_split(td::string(length / 16, '\0'))) {
auto len = 16 * str.size();
state.encrypt(td::Slice(s).substr(pos, len), td::MutableSlice(t).substr(pos, len));
- td::aes_cbc_encrypt(as_slice(key), as_slice(iv_copy), td::Slice(s).substr(pos, len),
+ td::aes_cbc_encrypt(as_slice(key), as_mutable_slice(iv_copy), td::Slice(s).substr(pos, len),
td::MutableSlice(u).substr(pos, len));
pos += len;
}
@@ -205,7 +205,7 @@ TEST(Crypto, AesCbcState) {
for (const auto &str : td::rand_split(td::string(length / 16, '\0'))) {
auto len = 16 * str.size();
state.decrypt(td::Slice(t).substr(pos, len), td::MutableSlice(t).substr(pos, len));
- td::aes_cbc_decrypt(as_slice(key), as_slice(iv_copy), td::Slice(u).substr(pos, len),
+ td::aes_cbc_decrypt(as_slice(key), as_mutable_slice(iv_copy), td::Slice(u).substr(pos, len),
td::MutableSlice(u).substr(pos, len));
pos += len;
}
@@ -221,7 +221,7 @@ TEST(Crypto, Sha256State) {
for (auto length : {0, 1, 31, 32, 33, 9999, 10000, 10001, 999999, 1000001}) {
auto s = td::rand_string(std::numeric_limits<char>::min(), std::numeric_limits<char>::max(), length);
td::UInt256 baseline;
- td::sha256(s, as_slice(baseline));
+ td::sha256(s, as_mutable_slice(baseline));
td::Sha256State state;
state.init();
@@ -232,7 +232,7 @@ TEST(Crypto, Sha256State) {
}
state = std::move(state2);
td::UInt256 result;
- state.extract(as_slice(result));
+ state.extract(as_mutable_slice(result));
ASSERT_TRUE(baseline == result);
}
}
@@ -367,7 +367,7 @@ TEST(Crypto, crc32c_benchmark) {
explicit Crc32cExtendBenchmark(size_t chunk_size) : chunk_size_(chunk_size) {
}
td::string get_description() const final {
- return PSTRING() << "Crc32c with chunk_size=" << chunk_size_;
+ return PSTRING() << "CRC32C with chunk_size = " << chunk_size_;
}
void start_up_n(int n) final {
if (n > (1 << 20)) {
diff --git a/protocols/Telegram/tdlib/td/tdutils/test/emoji.cpp b/protocols/Telegram/tdlib/td/tdutils/test/emoji.cpp
index c8e6539a99..0efb17429b 100644
--- a/protocols/Telegram/tdlib/td/tdutils/test/emoji.cpp
+++ b/protocols/Telegram/tdlib/td/tdutils/test/emoji.cpp
@@ -1,18 +1,22 @@
//
-// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023
//
// 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/common.h"
#include "td/utils/emoji.h"
#include "td/utils/tests.h"
TEST(Emoji, is_emoji) {
ASSERT_TRUE(!td::is_emoji(""));
ASSERT_TRUE(td::is_emoji("👩đŸŧ‍❤‍💋‍👩đŸģ"));
+ ASSERT_TRUE(td::is_emoji("👩đŸŧ‍❤‍💋‍👩đŸģī¸")); // not in RGI emoji ZWJ sequence set
ASSERT_TRUE(td::is_emoji("👩đŸŧâ€â¤ī¸â€đŸ’‹â€đŸ‘ŠđŸģ"));
+ ASSERT_TRUE(td::is_emoji("👩đŸŧâ€â¤ī¸â€đŸ’‹â€đŸ‘ŠđŸģī¸"));
ASSERT_TRUE(!td::is_emoji("👩đŸŧâ€â¤ī¸ī¸â€đŸ’‹â€đŸ‘ŠđŸģ"));
ASSERT_TRUE(td::is_emoji("⌚"));
+ ASSERT_TRUE(td::is_emoji("âŒšī¸"));
ASSERT_TRUE(td::is_emoji("↔"));
ASSERT_TRUE(td::is_emoji("đŸĒ—"));
ASSERT_TRUE(td::is_emoji("2ī¸âƒŖ"));
@@ -27,6 +31,21 @@ TEST(Emoji, is_emoji) {
ASSERT_TRUE(td::is_emoji("⌚"));
ASSERT_TRUE(td::is_emoji("🎄"));
ASSERT_TRUE(td::is_emoji("🧑‍🎄"));
+ ASSERT_TRUE(td::is_emoji("ÂŠī¸"));
+ ASSERT_TRUE(td::is_emoji("Š"));
+ ASSERT_TRUE(!td::is_emoji("ÂŠī¸ī¸"));
+ ASSERT_TRUE(td::is_emoji("đŸ•ĩī¸â€â™‚ī¸"));
+ ASSERT_TRUE(td::is_emoji("đŸ•ĩâ€â™‚ī¸")); // not in RGI emoji ZWJ sequence set
+ ASSERT_TRUE(td::is_emoji("đŸ•ĩī¸â€â™‚")); // not in RGI emoji ZWJ sequence set
+ ASSERT_TRUE(td::is_emoji("đŸ•ĩ‍♂"));
+ ASSERT_TRUE(td::is_emoji("đŸŒī¸â€â™‚ī¸"));
+ ASSERT_TRUE(td::is_emoji("đŸ‹ī¸â€â™‚ī¸"));
+ ASSERT_TRUE(td::is_emoji("đŸŒâ€â™‚ī¸")); // not in RGI emoji ZWJ sequence set
+ ASSERT_TRUE(td::is_emoji("đŸ‹â€â™‚ī¸")); // not in RGI emoji ZWJ sequence set
+ ASSERT_TRUE(!td::is_emoji("a‍🤝‍👨"));
+ ASSERT_TRUE(!td::is_emoji("👩‍a‍👨"));
+ ASSERT_TRUE(!td::is_emoji("👩‍🤝‍a"));
+ ASSERT_TRUE(td::is_emoji("👩‍🤝‍👨")); // not in RGI emoji ZWJ sequence set
}
static void test_get_fitzpatrick_modifier(td::string emoji, int result) {
@@ -60,17 +79,18 @@ TEST(Emoji, get_fitzpatrick_modifier) {
test_get_fitzpatrick_modifier("🧑‍🎄", 0);
}
-static void test_remove_emoji_modifiers(td::string emoji, const td::string &result) {
- ASSERT_STREQ(result, td::remove_emoji_modifiers(emoji));
- td::remove_emoji_modifiers_in_place(emoji);
+static void test_remove_emoji_modifiers(td::string emoji, const td::string &result, bool remove_selectors = true) {
+ ASSERT_STREQ(result, td::remove_emoji_modifiers(emoji, remove_selectors));
+ td::remove_emoji_modifiers_in_place(emoji, remove_selectors);
ASSERT_STREQ(result, emoji);
- ASSERT_STREQ(emoji, td::remove_emoji_modifiers(emoji));
+ ASSERT_STREQ(emoji, td::remove_emoji_modifiers(emoji, remove_selectors));
}
TEST(Emoji, remove_emoji_modifiers) {
test_remove_emoji_modifiers("", "");
test_remove_emoji_modifiers("👩đŸŧ‍❤‍💋‍👩đŸģ", "👩‍❤‍💋‍👩");
test_remove_emoji_modifiers("👩đŸŧâ€â¤ī¸â€đŸ’‹â€đŸ‘ŠđŸģ", "👩‍❤‍💋‍👩");
+ test_remove_emoji_modifiers("👩đŸŧâ€â¤ī¸â€đŸ’‹â€đŸ‘ŠđŸģ", "đŸ‘Šâ€â¤ī¸â€đŸ’‹â€đŸ‘Š", false);
test_remove_emoji_modifiers("👋đŸģ", "👋");
test_remove_emoji_modifiers("👋đŸŧ", "👋");
test_remove_emoji_modifiers("👋đŸŊ", "👋");
diff --git a/protocols/Telegram/tdlib/td/tdutils/test/filesystem.cpp b/protocols/Telegram/tdlib/td/tdutils/test/filesystem.cpp
index de2def1e5e..0102aee036 100644
--- a/protocols/Telegram/tdlib/td/tdutils/test/filesystem.cpp
+++ b/protocols/Telegram/tdlib/td/tdutils/test/filesystem.cpp
@@ -1,5 +1,5 @@
//
-// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023
//
// 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)
diff --git a/protocols/Telegram/tdlib/td/tdutils/test/gzip.cpp b/protocols/Telegram/tdlib/td/tdutils/test/gzip.cpp
index 32d75474e8..d22c329dd2 100644
--- a/protocols/Telegram/tdlib/td/tdutils/test/gzip.cpp
+++ b/protocols/Telegram/tdlib/td/tdutils/test/gzip.cpp
@@ -1,5 +1,5 @@
//
-// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023
//
// 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)
@@ -34,7 +34,7 @@ static void test_gzencode(const td::string &s) {
auto r = td::gzencode(s, td::max(2, static_cast<int>(100 / s.size())));
ASSERT_TRUE(!r.empty());
LOG(INFO) << "Encoded string of size " << s.size() << " in " << (td::Time::now() - begin_time)
- << " with compression ratio " << static_cast<double>(r.size()) / static_cast<double>(s.size());
+ << " seconds with compression ratio " << static_cast<double>(r.size()) / static_cast<double>(s.size());
}
TEST(Gzip, gzencode) {
diff --git a/protocols/Telegram/tdlib/td/tdutils/test/hashset_benchmark.cpp b/protocols/Telegram/tdlib/td/tdutils/test/hashset_benchmark.cpp
index f07f58c8f0..dbfcaa992b 100644
--- a/protocols/Telegram/tdlib/td/tdutils/test/hashset_benchmark.cpp
+++ b/protocols/Telegram/tdlib/td/tdutils/test/hashset_benchmark.cpp
@@ -1,5 +1,5 @@
//
-// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023
//
// 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)
@@ -17,6 +17,7 @@
#include "td/utils/Slice.h"
#include "td/utils/Span.h"
#include "td/utils/StringBuilder.h"
+#include "td/utils/tests.h"
#include "td/utils/Time.h"
#include "td/utils/VectorQueue.h"
@@ -204,7 +205,7 @@ static void BM_Get(benchmark::State &state) {
}
std::size_t key_i = 0;
- td::random_shuffle(td::as_mutable_span(keys), rnd);
+ td::rand_shuffle(td::as_mutable_span(keys), rnd);
auto next_key = [&] {
key_i++;
if (key_i == data.size()) {
diff --git a/protocols/Telegram/tdlib/td/tdutils/test/heap.cpp b/protocols/Telegram/tdlib/td/tdutils/test/heap.cpp
index 02b6d81424..43072fb97e 100644
--- a/protocols/Telegram/tdlib/td/tdutils/test/heap.cpp
+++ b/protocols/Telegram/tdlib/td/tdutils/test/heap.cpp
@@ -1,5 +1,5 @@
//
-// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023
//
// 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)
@@ -23,7 +23,7 @@ TEST(Heap, sort_random_perm) {
v[i] = i;
}
td::Random::Xorshift128plus rnd(123);
- td::random_shuffle(td::as_mutable_span(v), rnd);
+ td::rand_shuffle(td::as_mutable_span(v), rnd);
td::vector<td::HeapNode> nodes(n);
td::KHeap<int> kheap;
for (int i = 0; i < n; i++) {
@@ -46,10 +46,12 @@ class CheckedHeap {
nodes[i].value = i;
}
}
+
static void xx(int key, const td::HeapNode *heap_node) {
const Node *node = static_cast<const Node *>(heap_node);
std::fprintf(stderr, "(%d;%d)", node->key, node->value);
}
+
void check() const {
for (auto p : set_heap) {
std::fprintf(stderr, "(%d;%d)", p.first, p.second);
@@ -59,13 +61,16 @@ class CheckedHeap {
std::fprintf(stderr, "\n");
kheap.check();
}
+
int random_id() const {
CHECK(!empty());
return ids[td::Random::fast(0, static_cast<int>(ids.size() - 1))];
}
+
std::size_t size() const {
return ids.size();
}
+
bool empty() const {
return ids.empty();
}
@@ -77,8 +82,8 @@ class CheckedHeap {
ASSERT_EQ(res, kheap.top_key());
return res;
}
+
int insert(int key) {
- // std::fprintf(stderr, "insert %d\n", key);
int id;
if (free_ids.empty()) {
UNREACHABLE();
@@ -96,15 +101,15 @@ class CheckedHeap {
set_heap.emplace(key, id);
return id;
}
+
void fix_key(int new_key, int id) {
- // std::fprintf(stderr, "fix key %d %d (old_key = %d)\n", new_key, id, nodes[id].key);
set_heap.erase(std::make_pair(nodes[id].key, id));
nodes[id].key = new_key;
kheap.fix(new_key, &nodes[id]);
set_heap.emplace(new_key, id);
}
+
void erase(int id) {
- // std::fprintf(stderr, "erase %d\n", id);
int pos = rev_ids[id];
CHECK(pos != -1);
ids[pos] = ids.back();
@@ -116,8 +121,8 @@ class CheckedHeap {
kheap.erase(&nodes[id]);
set_heap.erase(std::make_pair(nodes[id].key, id));
}
+
void pop() {
- // std::fprintf(stderr, "pop\n");
CHECK(!empty());
Node *node = static_cast<Node *>(kheap.pop());
int id = node->value;
diff --git a/protocols/Telegram/tdlib/td/tdutils/test/json.cpp b/protocols/Telegram/tdlib/td/tdutils/test/json.cpp
index 4e57b2d562..8b42751a3d 100644
--- a/protocols/Telegram/tdlib/td/tdutils/test/json.cpp
+++ b/protocols/Telegram/tdlib/td/tdutils/test/json.cpp
@@ -1,9 +1,10 @@
//
-// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023
//
// 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/common.h"
#include "td/utils/JsonBuilder.h"
#include "td/utils/logging.h"
#include "td/utils/Slice.h"
diff --git a/protocols/Telegram/tdlib/td/tdutils/test/log.cpp b/protocols/Telegram/tdlib/td/tdutils/test/log.cpp
index 34af21353c..707300248c 100644
--- a/protocols/Telegram/tdlib/td/tdutils/test/log.cpp
+++ b/protocols/Telegram/tdlib/td/tdutils/test/log.cpp
@@ -1,5 +1,5 @@
//
-// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023
//
// 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)
@@ -168,7 +168,7 @@ TEST(Log, Bench) {
class AsyncFileLog final : public td::LogInterface {
public:
AsyncFileLog() {
- file_log_.init("tmplog", std::numeric_limits<td::int64>::max()).ensure();
+ file_log_.init("tmplog", std::numeric_limits<td::int64>::max(), false).ensure();
}
void do_append(int log_level, td::CSlice slice) final {
static_cast<td::LogInterface &>(file_log_).do_append(log_level, slice);
diff --git a/protocols/Telegram/tdlib/td/tdutils/test/misc.cpp b/protocols/Telegram/tdlib/td/tdutils/test/misc.cpp
index 7db990dad1..e1612a9924 100644
--- a/protocols/Telegram/tdlib/td/tdutils/test/misc.cpp
+++ b/protocols/Telegram/tdlib/td/tdutils/test/misc.cpp
@@ -1,5 +1,5 @@
//
-// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023
//
// 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)
@@ -40,6 +40,7 @@
#include "td/utils/translit.h"
#include "td/utils/uint128.h"
#include "td/utils/unicode.h"
+#include "td/utils/unique_value_ptr.h"
#include "td/utils/utf8.h"
#include <algorithm>
@@ -440,7 +441,7 @@ static void test_to_double_one(td::CSlice str, td::Slice expected, int precision
auto result = PSTRING() << td::StringBuilder::FixedDouble(to_double(str), precision);
if (expected != result) {
LOG(ERROR) << "To double conversion failed: have " << str << ", expected " << expected << ", parsed "
- << to_double(str) << ", got " << result;
+ << to_double(str) << ", receive " << result;
}
}
@@ -516,7 +517,8 @@ TEST(Misc, print_uint) {
static void test_idn_to_ascii_one(const td::string &host, const td::string &result) {
if (result != td::idn_to_ascii(host).ok()) {
- LOG(ERROR) << "Failed to convert " << host << " to " << result << ", got \"" << td::idn_to_ascii(host).ok() << "\"";
+ LOG(ERROR) << "Failed to convert " << host << " to " << result << ", receive \"" << td::idn_to_ascii(host).ok()
+ << "\"";
}
}
@@ -834,9 +836,9 @@ TEST(Misc, StringBuilder) {
if (use_buf) {
ASSERT_EQ(res, sb.as_cslice());
} else {
- auto got = sb.as_cslice();
- res.resize(got.size());
- ASSERT_EQ(res, got);
+ auto sb_result = sb.as_cslice();
+ res.resize(sb_result.size());
+ ASSERT_EQ(res, sb_result);
}
}
}
@@ -1260,3 +1262,32 @@ TEST(FloodControl, Fast) {
LOG(INFO) << ++count << ": " << now;
}
}
+
+TEST(UniqueValuePtr, Basic) {
+ auto a = td::make_unique_value<int>(5);
+ td::unique_value_ptr<int> b;
+ ASSERT_TRUE(b == nullptr);
+ ASSERT_TRUE(a != nullptr);
+ ASSERT_TRUE(a != b);
+ b = a;
+ ASSERT_TRUE(a != nullptr);
+ ASSERT_TRUE(b != nullptr);
+ ASSERT_TRUE(a == b);
+ *a = 6;
+ ASSERT_TRUE(a != nullptr);
+ ASSERT_TRUE(b != nullptr);
+ ASSERT_TRUE(a != b);
+ b = std::move(a);
+ ASSERT_TRUE(a == nullptr);
+ ASSERT_TRUE(b != nullptr);
+ ASSERT_TRUE(a != b);
+ auto c = td::make_unique_value<td::unique_value_ptr<int>>(a);
+ ASSERT_TRUE(*c == a);
+ ASSERT_TRUE(*c == nullptr);
+ c = td::make_unique_value<td::unique_value_ptr<int>>(b);
+ ASSERT_TRUE(*c == b);
+ ASSERT_TRUE(**c == 6);
+ auto d = c;
+ ASSERT_TRUE(c == d);
+ ASSERT_TRUE(6 == **d);
+}
diff --git a/protocols/Telegram/tdlib/td/tdutils/test/port.cpp b/protocols/Telegram/tdlib/td/tdutils/test/port.cpp
index 92b1729977..4b01169fa4 100644
--- a/protocols/Telegram/tdlib/td/tdutils/test/port.cpp
+++ b/protocols/Telegram/tdlib/td/tdutils/test/port.cpp
@@ -1,5 +1,5 @@
//
-// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023
//
// 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)
@@ -14,6 +14,7 @@
#include "td/utils/port/path.h"
#include "td/utils/port/signals.h"
#include "td/utils/port/sleep.h"
+#include "td/utils/port/Stat.h"
#include "td/utils/port/thread.h"
#include "td/utils/port/thread_local.h"
#include "td/utils/Random.h"
@@ -54,7 +55,7 @@ TEST(Port, files) {
const int ITER_COUNT = 1000;
for (int i = 0; i < ITER_COUNT; i++) {
td::walk_path(main_dir, [&](td::CSlice name, td::WalkPath::Type type) {
- if (type == td::WalkPath::Type::NotDir) {
+ if (type == td::WalkPath::Type::RegularFile) {
ASSERT_TRUE(name == fd_path || name == fd2_path);
}
cnt++;
@@ -105,6 +106,7 @@ TEST(Port, files) {
fd.seek(0).ensure();
ASSERT_EQ(13u, fd.read(buf_slice.substr(0, 13)).move_as_ok());
ASSERT_STREQ("Habcd world?!", buf_slice.substr(0, 13));
+ td::rmrf(main_dir).ensure();
}
TEST(Port, SparseFiles) {
@@ -167,6 +169,14 @@ TEST(Port, Writev) {
td::string content(expected_content.size(), '\0');
ASSERT_EQ(content.size(), fd.read(content).move_as_ok());
ASSERT_EQ(expected_content, content);
+
+ auto stat = td::stat(test_file_path).move_as_ok();
+ CHECK(!stat.is_dir_);
+ CHECK(stat.is_reg_);
+ CHECK(!stat.is_symbolic_link_);
+ CHECK(stat.size_ == static_cast<td::int64>(expected_content.size()));
+
+ td::unlink(test_file_path).ignore();
}
#if TD_PORT_POSIX && !TD_THREAD_UNSUPPORTED
diff --git a/protocols/Telegram/tdlib/td/tdutils/test/pq.cpp b/protocols/Telegram/tdlib/td/tdutils/test/pq.cpp
index d919d661b5..0983ea814c 100644
--- a/protocols/Telegram/tdlib/td/tdutils/test/pq.cpp
+++ b/protocols/Telegram/tdlib/td/tdutils/test/pq.cpp
@@ -1,5 +1,5 @@
//
-// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023
//
// 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)
diff --git a/protocols/Telegram/tdlib/td/tdutils/test/variant.cpp b/protocols/Telegram/tdlib/td/tdutils/test/variant.cpp
index 755acdfa98..a05ff24a2d 100644
--- a/protocols/Telegram/tdlib/td/tdutils/test/variant.cpp
+++ b/protocols/Telegram/tdlib/td/tdutils/test/variant.cpp
@@ -1,9 +1,10 @@
//
-// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023
//
// 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/common.h"
#include "td/utils/Slice.h"
#include "td/utils/StringBuilder.h"
#include "td/utils/tests.h"