mirror of
https://github.com/vicliu624/trail-mate.git
synced 2026-09-25 21:23:37 +00:00
WIP: checkpoint geocaching before main integration
This commit is contained in:
@@ -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));
|
||||
}
|
||||
Reference in New Issue
Block a user