48 lines
1.1 KiB
C++
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;
|
|
}
|