From 6065245b82284dd8f556b85fa68bf8915b16d1bb Mon Sep 17 00:00:00 2001 From: SEK1RO Date: Thu, 12 Sep 2024 11:14:53 +0300 Subject: [PATCH] fix(baseN): zero counting, speedtests --- src/baseN.cpp | 4 ++-- test/test-baseN.cpp | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/baseN.cpp b/src/baseN.cpp index 8308744..c291e4a 100644 --- a/src/baseN.cpp +++ b/src/baseN.cpp @@ -41,7 +41,7 @@ namespace baseN idx_str = enc_size - 1; uint16_t div = data[idx_div++]; - while (data[zero_count] == 0) + while (zero_count < (int64_t)data_size && data[zero_count] == 0) { zero_count++; } @@ -113,7 +113,7 @@ namespace baseN idx_quo_last = dec_size - 2; uint16_t div; - while (str[zero_count] == digits[0]) + while (str[zero_count] != '\0' && str[zero_count] == digits[0]) { zero_count++; } diff --git a/test/test-baseN.cpp b/test/test-baseN.cpp index a73add7..1b081d4 100644 --- a/test/test-baseN.cpp +++ b/test/test-baseN.cpp @@ -39,10 +39,10 @@ TEST(baseN, encode) EXPECT_EQ("KyKXa", encode(hex::decode("0ccbd755"), 58, b58digits)); EXPECT_EQ("KyKXaa", encode(hex::decode("02e62ec963"), 58, b58digits)); } -// TEST(baseN, encode_1e6) +// TEST(baseN, encode_1e3) // { -// std::vector data(1e6); -// encode(data); +// std::vector data(1e3); +// encode(data, 58, b58digits, data.size() * 138 / 100 + 1); // } TEST(baseN, decode) { @@ -52,10 +52,10 @@ TEST(baseN, decode) EXPECT_EQ(hex::encode(decode("KyKXa", 58, b58digits, b58map)), "0ccbd755"); EXPECT_EQ(hex::encode(decode("KyKXaa", 58, b58digits, b58map)), "02e62ec963"); } -// TEST(baseN, decode_1e6) +// TEST(baseN, decode_1e4) // { -// std::string str(1e6, '0'); -// decode(str); +// std::string str(1e4, '1'); +// decode(str, 58, b58digits, b58map, str.size() * 733 / 1000 + 1); // } int main(int argc, char **argv)