#include "game_server/NetworkProtocol.h" #include #include #include namespace { void require(bool condition, const char* message) { if (condition) return; std::cerr << "NetworkProtocolTests: " << message << '\n'; std::exit(EXIT_FAILURE); } } // namespace int main() { const nlohmann::json original{ {"schemaVersion", 1}, {"campaignId", "battle_zone"}, {"players", {{"player", {{"hp", 200.0}}}}} }; const std::string message = FRG::makeStateMessage(original); nlohmann::json parsed; std::string error; require( FRG::parseStateMessage(message, parsed, error), "valid state envelope was rejected"); require(parsed == original, "state payload did not round trip"); require( !FRG::parseStateMessage( R"({"protocolVersion":2,"type":"state","payload":{}})", parsed, error), "unknown protocol version was accepted"); require( !FRG::parseStateMessage( R"({"protocolVersion":1,"type":"command","payload":{}})", parsed, error), "unknown message type was accepted"); require( !FRG::parseStateMessage("not json", parsed, error), "malformed JSON was accepted"); return EXIT_SUCCESS; }