WIP: checkpoint geocaching before main integration

This commit is contained in:
Trail Mate Dev
2026-09-24 08:47:53 +08:00
parent d7a2f35328
commit 3d65ece83d
244 changed files with 25291 additions and 126 deletions
@@ -0,0 +1,31 @@
#include "geocaching/protocol/capabilities.h"
#include <cassert>
#include <fstream>
#include <iterator>
#include <vector>
int main(int argc, char** argv)
{
assert(argc == 2);
std::ifstream file(argv[1], std::ios::binary);
assert(file.good());
std::vector<std::uint8_t> bytes((std::istreambuf_iterator<char>(file)), {});
geocaching::RequestId request;
request.bytes.fill(1);
geocaching::protocol::DirectoryCapabilities result;
using geocaching::protocol::decodeDirectoryCapabilities;
assert(decodeDirectoryCapabilities({bytes.data(), bytes.size()}, request, result));
assert(result.max_query_items == 64 && result.cursor_ttl_seconds == 604800);
assert(result.name == "Public test directory");
for (std::size_t n = 0; n < bytes.size(); ++n)
{
assert(!decodeDirectoryCapabilities({bytes.data(), n}, request, result));
assert(result.name.empty() && result.max_query_items == 0);
}
request.bytes[0] = 2;
assert(!decodeDirectoryCapabilities({bytes.data(), bytes.size()}, request, result));
request.bytes.fill(1);
// Public role is the byte preceding the uint32 sync TTL.
bytes[bytes.size() - 6] = 0;
assert(!decodeDirectoryCapabilities({bytes.data(), bytes.size()}, request, result));
}