017-fs-utils.cpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. // SPDX-License-Identifier: GPL-3.0-or-later
  2. // SPDX-FileCopyrightText: 2023 Ivan Baidakou
  3. #include "test-utils.h"
  4. #include "fs/utils.h"
  5. using namespace syncspirit::fs;
  6. using D = block_division_t;
  7. namespace syncspirit::fs {
  8. bool operator==(const D &lhs, const D &rhs) noexcept { return lhs.count == rhs.count && lhs.size == rhs.size; }
  9. } // namespace syncspirit::fs
  10. TEST_CASE("get_block_size", "[fs]") {
  11. constexpr std::int64_t kb = 1024;
  12. constexpr std::int64_t mb = kb * kb;
  13. constexpr std::int64_t gb = kb * kb * kb;
  14. SECTION("no prev_size") {
  15. CHECK(get_block_size(1, 0) == D{1, 1});
  16. CHECK(get_block_size(2, 0) == D{1, 2});
  17. CHECK(get_block_size(128 * kb, 0) == D{1, 128 * kb});
  18. CHECK(get_block_size(128 * kb + 1, 0) == D{2, 128 * kb});
  19. SECTION("gb") {
  20. CHECK(gb == 1073741824ull);
  21. auto d1 = get_block_size(16 * gb, 0);
  22. auto d2 = D{1024, 16 * mb};
  23. auto sz = 16 * gb;
  24. CHECK(d1.size == d2.size);
  25. CHECK(d1.count == d2.count);
  26. CHECK(get_block_size(sz, 0) == d2);
  27. }
  28. }
  29. SECTION("with prev_size") {
  30. CHECK(get_block_size(1, 256 * kb) == D{1, 1});
  31. CHECK(get_block_size(1 * gb, 256 * kb) == D{4096, 256 * kb});
  32. };
  33. }