Files
shadow-over-bishkek001/server/tests/NetworkProtocolTests.cpp
T

48 lines
1.1 KiB
C++

#include "game_server/NetworkProtocol.h"
#include <cstdlib>
#include <iostream>
#include <string>
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;
}